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 的流量规则依赖端口名称
如 Istio、Linkerd 等 Service Mesh 工具,在注入 sidecar 时会根据端口名来判断协议类型。例如:
http-
开头被识别为 HTTPgrpc-
开头被识别为 gRPCtcp-
开头被识别为 TCP
如果不命名,可能导致流量被错误识别为 TCP,从而导致流量规则(如路由、熔断、重试)不生效。
Facebook评论