Kubernetes Master-Node 通信全解析:路径、安全与配置
一、概述
Kubernetes 集群的核心通信模型是 控制平面(Master)与数据平面(Node / 集群) 的双向交互,所有通信均以 kube-apiserver 为中枢枢纽。本文聚焦 Master 与集群间的关键通信路径、安全配置及适配不受信任网络的解决方案,帮助用户实现自定义安装与网络增强。
核心设计目标:
-
明确通信流向与终止点,简化集群网络架构;
-
提供安全加固方案,支持在不可信网络(如公网)中运行;
-
适配不同部署场景(裸机 / 云环境)的通信需求。
二、Cluster -> Master(集群到控制平面)
所有从集群(Node、Pod)到 Master 的通信,均终止于 kube-apiserver(集群唯一 API 入口),通信流程与安全配置如下:
1. 通信入口与协议
-
kube-apiserver监听远程连接的 HTTPS 443 端口(生产环境推荐),所有请求需通过 TLS 加密传输; -
禁止暴露非加密端口(默认仅监听 Master 本地 localhost 接口),避免未授权访问。
2. 身份认证机制
需启用至少一种客户端认证方式,确保通信安全:
-
Node 节点认证:Node 需配置集群公共根证书,通过证书验证后连接 apiserver;
-
Pod 访问认证 :Pod 通过
Service Account自动获取根证书和有效bearer token(Kubernetes 实例化时注入),无需手动配置; -
内部组件通信:Master 自身组件(如 kube-controller-manager、kube-scheduler)通过本地非加密端口与 apiserver 通信(仅本地可达,无安全风险)。
3. 网络路由
- 集群内所有 Namespace 均存在默认 Kubernetes Service,通过虚拟 IP 地址(由 kube-proxy 转发)路由到 apiserver 的 HTTPS 端口,Pod 可直接通过该 Service 访问 Master。
三、Master -> Cluster(控制平面到集群)
Master 到集群的通信主要通过两条路径,核心是 apiserver 向 Node、Pod、Service 下发指令或获取状态,需重点关注安全加固:
3.1 apiserver -> kubelet
-
通信用途 :获取 Pod 日志、执行
kubectl exec命令、端口转发(port-forward)等操作; -
通信协议:连接终止于 kubelet 的 HTTPS 终端,默认未验证 kubelet 服务证书(存在安全风险);
-
安全加固方案:
-
为 apiserver 配置
--kubelet-certificate-authority参数,提供根证书包验证 kubelet 证书; -
启用 kubelet 认证 / 授权机制(如 RBAC),限制 apiserver 访问权限;
-
无法配置证书时,使用 SSH 隧道保障通信安全。
3.2 apiserver -> nodes、pods、services
-
通信用途:通过 apiserver 代理功能访问集群内节点、Pod 或 Service;
-
默认特性:
-
默认使用 HTTP 协议,无认证加密,仅适用于可信网络;
-
支持 HTTPS 连接,但不验证服务端证书、不提供客户端凭据,仅加密传输,无完整性保障;
-
-
使用限制 :该路径禁止在不可信网络(如公网)中使用,需依赖私有网络或隧道技术隔离。
3.3 SSH Tunnels(SSH 隧道)
-
核心作用:保护 Master -> 集群的通信路径,避免流量暴露在集群外部,适配不可信网络环境;
-
典型场景:Google Container Engine(GKE)默认使用 SSH 隧道加固该通信路径;
-
原理:通过 SSH 建立 Master 与 Node 间的加密隧道,所有 Master 到集群的流量均通过隧道传输,避免明文暴露。
四、核心安全最佳实践
-
强制 TLS 加密:集群与 Master 间所有跨节点通信均启用 HTTPS,禁用 HTTP 明文协议;
-
证书全链路验证:配置 apiserver 验证 kubelet 证书、Node/Pod 验证 apiserver 证书,实现双向认证;
-
最小权限原则:为 kubelet、Pod 配置最小权限的 Service Account 和 RBAC 规则,限制访问范围;
-
隔离不可信网络:Master 与集群若跨公网通信,必须使用 SSH 隧道、VPN 或专用网络,禁止直接暴露通信端口;
-
禁用匿名访问 :apiserver 禁用
anonymous-auth=true(默认关闭),避免未授权请求。
五、通信流程总结
| 通信方向 | 核心路径 | 协议 | 安全关键配置 |
|---|---|---|---|
| Cluster -> Master | Node/Pod → apiserver | HTTPS 443 | 根证书配置、Service Account 认证 |
| Master -> Cluster | apiserver → kubelet | HTTPS | --kubelet-certificate-authority、SSH 隧道 |
| Master -> Cluster | apiserver → Node/Pod/Service | HTTP/HTTPS | 仅可信网络使用,HTTPS 无完整验证 |