本页面介绍了 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 |
后续步骤
- 阅读 GKE 中的网络概览。
- 了解 Kubernetes Service。
- 了解如何公开应用。