关于k8s编排文件中port和targetPort的关系

Kubernetes Service 在将流量从 port 转发到 targetPort 时,会自动进行负载均衡。

这是 Kubernetes Service 的一个关键特性,确保流量在多个后端 Pods 之间均匀分布,从而提高服务的可靠性和可扩展性。

负载均衡机制

服务配置回顾

以你提供的 Service 配置为例:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
    - protocol: TCP
      port: 8081
      targetPort: 8080

在这个配置中,Service my-service 将对外暴露端口 808081,并将流量转发到后端 Pods 的 8080 端口。

自动负载均衡

当客户端请求 my-service:80my-service:8081 时,Kubernetes 会执行以下操作:

  1. Service 监听请求:Service 在配置的 port(80 和 8081)上监听传入请求。
  2. 选择后端 Pod:Service 使用内部的负载均衡算法(通常是轮询或基于 IP 哈希)选择一个匹配 selector 的后端 Pod。
  3. 转发流量:Service 将请求转发到选定的后端 Pod 的 targetPort(8080)。

负载均衡示例

假设有三个后端 Pods,标签为 app: my-app,它们的 IP 地址分别是 10.0.0.1:808010.0.0.2:808010.0.0.3:8080

  • 第一个请求可能被转发到 10.0.0.1:8080
  • 第二个请求可能被转发到 10.0.0.2:8080
  • 第三个请求可能被转发到 10.0.0.3:8080
  • 第四个请求再次转发到 10.0.0.1:8080

这种机制确保了流量在所有可用的 Pods 之间均匀分布,避免了单个 Pod 过载的问题。

结论

通过 Service,Kubernetes 能够在将流量从 port 转发到 targetPort 时自动进行负载均衡。这种机制提升了服务的高可用性和性能,使得应用在面对大量请求时能够稳定运行。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
    - protocol: TCP
      port: 8081
      targetPort: 8080

在这个配置中,客户端请求 my-service:80my-service:8081 时,Kubernetes 会自动负载均衡并将请求分发到多个后端 Pods 的 8080 端口。这种机制确保了服务的高可用性和可扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值