CKA [Networking] – 为port命名

我们都知道一个pod当中,可以有多个container。我们可以为每个container的port命名。

为什么需要为port命名?

🎯 1. 配合 Service 的 targetPort 使用名称匹配

Kubernetes 的 Service 对后端 Pod 暴露端口时,可以用端口号,也可以用端口名称来匹配容器里的端口。使用名称的好处是更具可读性、避免因端口号更改而导致配置错误

示例:

# Deployment
containers:
  - name: my-app
    image: my-image
    ports:
      - name: http
        containerPort: 8080

# Service
spec:
  ports:
    - name: http
      port: 80
      targetPort: http  # 使用名字匹配 containerPort
📘 2. 多端口容器需要区分用途

当一个容器暴露多个端口(比如一个是 HTTP,一个是 gRPC),通过命名端口可以让配置更清晰可维护。

ports:
  - name: http
    containerPort: 8080
  - name: grpc
    containerPort: 9090
3. Istio 等 Service Mesh 的流量规则依赖端口名称

IstioLinkerd 等 Service Mesh 工具,在注入 sidecar 时会根据端口名来判断协议类型。例如:

  • http- 开头被识别为 HTTP
  • grpc- 开头被识别为 gRPC
  • tcp- 开头被识别为 TCP

如果不命名,可能导致流量被错误识别为 TCP,从而导致流量规则(如路由、熔断、重试)不生效。

Loading

Facebook评论