预留的 hostPort

本页面介绍了 Google Kubernetes Engine (GKE) 中的预留 hostPort 列表。

GKE 系统预留的 hostPort

GKE 为其内部系统进程和服务预留了特定的 hostPort 范围。这些预留对于保持 GKE 集群的稳定性和功能至关重要。虽然 GKE 通常不鼓励用户应用使用 hostPort,因为这可能会导致冲突和安全风险,但 GKE 依赖于这些注解来执行内部操作。

预留 hostPort 的用途

  • 控制平面通信:某些 GKE 组件(例如 kubelet 和 metrics-server)可能会使用特定的 hostPort 与控制平面或其他内部服务进行通信。
  • 系统守护程序:GKE 系统守护程序和代理可能需要访问节点上的特定端口,以进行监控、日志记录或其他操作任务。
  • 内部服务:GKE 的内部服务负责集群管理和健康检查,可能会使用预留的 hostPort。

了解预留范围

虽然确切的范围可能会因 GKE 版本和配置而异,但 GKE 会预留一部分可用端口空间。这些预留范围通常不会记录在外部用户使用文档中,因为它们随时可能会发生变化。请务必避免使用编号较低的端口,因为这些端口通常由操作系统预留。

最佳做法

最佳做法

  • 避免使用 hostPort:尽量减少在应用部署中使用 hostPort,以降低与 GKE 预留端口发生冲突的风险。
  • 服务抽象:使用 Kubernetes 服务类型(NodePort、LoadBalancer、Ingress)作为 hostPort 的首选替代方案。
  • 安全审查:如果 hostPort 不可避免,请仔细检查并实施防火墙规则,以限制对公开端口的访问。
  • Autopilot 注意事项:使用 GKE Autopilot 时,请注意您无法指定确切的 hostPort。

预留的 hostPort 列表

组件 预留的 hostPort
CNI / DPv2 9990, 6942, 9890, 4244, 9965
kubelet 4194, 10248, 10250, 10255
kube-proxy 10249, 10256
node-problem-detector 20256
fluentbit 2020 年、2021 年、2022 年
stackdriver-metadata-agent 8799
sunrpc(本地 NFS 装载) 665 - 986
Filestore 990
k8s-metadata-proxy / gke-metadata-server 987, 988, 989
node-local-dns 53, 8080, 9253, 9353
gcfsd 11253
Network policy Antrea 10349, 10350, 10351, 10352
network-metering-agent 47082, 47083
configconnector 8888, 48797
gke-spiffe 9889
workload-identity-webhook 9910
GKE Metrics Agent 8200 - 8227
GPU Device plugin 2112
runsc (gVisor / GKE Sandbox) 9115
containerd 1338
GKE Metrics Collector 11123
netd 10231

特定于 Autopilot 的预留 hostPort 列表

组件 预留的 hostPort
Autopilot Splunk Agent 8006, 14250, 14268, 4317, 9080, 9943, 9411
Autopilot Datadog Monitoring Agent 8125, 8126

后续步骤