什么是 Kubernetes 的 Service,如何暴露 .NET 应用?

月夜之吻
发布: 2025-10-03 11:27:02
原创
816人浏览过
Kubernetes的Service通过标签选择器将请求路由到指定Pod,解决Pod IP不固定问题,提供稳定访问入口。支持ClusterIP、NodePort、LoadBalancer等类型,其中NodePort通过节点IP加端口暴露服务,LoadBalancer在云平台分配外部IP。为.NET应用创建Service需确保Deployment中Pod有标签(如app: dotnet-api),再定义对应selector的服务配置,使用kubectl apply部署后即可访问。

什么是 kubernetes 的 service,如何暴露 .net 应用?

Kubernetes 的 Service 是一种抽象,用于定义一组 Pod 的访问策略和稳定的网络端点。Pod 在 Kubernetes 中是临时的,可能会被创建、销毁或替换,IP 地址不固定。Service 通过标签选择器(label selector)将请求路由到具有特定标签的一组 Pod,从而提供一个持久且可靠的访问入口。

Service 的作用

Service 解决了 Pod 网络地址动态变化的问题,让应用之间可以稳定通信。它支持多种类型,适用于不同的暴露方式:

  • ClusterIP:默认类型,仅在集群内部暴露服务。
  • NodePort:在每个节点的指定端口上开放服务,可通过节点 IP + 端口从外部访问。
  • LoadBalancer:在云平台上创建外部负载均衡器,将流量导入服务。
  • ExternalName:将服务映射到 DNS 名称,较少使用。

如何为 .NET 应用创建并暴露 Service

假设你有一个 .NET Web API 应用已打包为容器,并部署为 Deployment。以下是将其暴露给外部访问的步骤。

1. 确保 Deployment 已设置正确标签

Deployment 需要为 Pod 添加标签,例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dotnet-api
spec:
  replicas: 2
  selector:
    matchLabels:
      app: dotnet-api
  template:
    metadata:
      labels:
        app: dotnet-api
    spec:
      containers:
      - name: api
        image: your-registry/dotnet-api:latest
        ports:
        - containerPort: 80
登录后复制

2. 创建 Service 暴露应用

使用 NodePort 或 LoadBalancer 类型让外部访问。以下是一个 NodePort 示例:

apiVersion: v1
kind: Service
metadata:
  name: dotnet-api-service
spec:
  type: NodePort
  selector:
    app: dotnet-api
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001
登录后复制

应用此配置后,可通过任意节点的 IP 地址加端口 30001 访问你的 .NET 应用,如:http://<node-ip>:30001

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56
查看详情 AppMall应用商店

若在 Azure、AWS 或 GCP 上运行,推荐使用 LoadBalancer:

spec:
  type: LoadBalancer
  selector:
    app: dotnet-api
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
登录后复制

执行 kubectl apply -f service.yaml 后,云平台会分配一个外部 IP,通过该 IP 即可访问应用。

验证服务是否正常运行

使用以下命令检查服务状态:

kubectl get services
登录后复制

输出中应看到服务的 TYPE、CLUSTER-IP、EXTERNAL-IP 和 PORT(S)。对于 LoadBalancer,EXTERNAL-IP 列最终会显示分配的公网 IP。

也可测试 Pod 连通性:

kubectl get pods --selector=app=dotnet-api
登录后复制

基本上就这些。只要 Deployment 标签与 Service 的 selector 匹配,Kubernetes 就能正确路由流量到你的 .NET 应用。

以上就是什么是 Kubernetes 的 Service,如何暴露 .NET 应用?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号