Kubernetes API Server 与 6443 端口
6443 是 Kubernetes 控制面的安全端口,客户端与内部组件都通过它与集群对话。它相当于集群的总开关:拿到集群 CA 与可用的客户端凭据,就能对集群做几乎任何操作,因此必须限制在网络层面只有控制面与管理网可达。托管集群通常把该端点收敛到私网,自建集群则需要自行通过安全组或防火墙约束来源;一旦暴露在公网,任何能访问端点的调用都可能被记录并尝试利用。
基本信息
| 服务 | 集群 API Server(安全端口) |
|---|---|
| 协议 | TCP 承载 HTTPS |
| 用途 | 命令行客户端访问、控制面组件通信、准入控制 |
| 配套端口 | kubelet 10250、etcd 2379 与 2380、控制器与调度器各自的管理端口 |
| 凭据形式 | 集群 CA、客户端证书或令牌 |
| 安全等级 | 控制面专用网段,禁止公网开放 |
典型使用场景
- 日常运维:查看与创建资源、读取事件与日志
- 发布流水线:由 CI 系统按最小权限提交部署
- 控制器与调度器:控制面组件通过它读写集群状态
- 准入控制:请求在落库前经过策略校验
- 排障:确认控制面是否健康、各组件是否能正常连接
连通与鉴权检查
连通与鉴权检查
kubectl cluster-info # 输出端点与集群信息
curl -k https://192.0.2.20:6443/version # 不校验证书确认端点是否响应
openssl s_client -connect 192.0.2.20:6443 -showcerts </dev/null 2>/dev/null | head -20 # 查看证书主体与签发者
kubectl auth can-i get pods # 确认当前凭据的权限范围常见报错判读
| 报错 | 含义 | 处置方向 |
|---|---|---|
| 连接被拒绝 | 服务未运行或端口被改 | 查看控制面静态容器与服务进程状态 |
| 证书签发者未知 | 客户端缺少集群 CA | 使用包含 CA 数据的配置文件 |
| 未授权 | 证书或令牌过期 | 续期证书后同步更新客户端配置 |
| 禁止访问 | 已认证但无对应权限 | 用权限检查命令定位并绑定合适角色 |
控制面健康检查
控制面健康检查
ss -lntp | grep 6443 # 确认监听与绑定地址
grep -nE 'secure-port|bind-address' /etc/kubernetes/manifests/kube-apiserver.yaml # 静态容器中的实际参数
kubectl get --raw='/readyz?verbose' | tail -5 # 就绪检查明细
kubectl get nodes -o wide # 顺带确认节点是否正常上线把该端口暴露到公网风险极高:控制面组件的漏洞历史上多次被利用来提升到集群级权限,务必先做网络收敛再谈其他加固。
控制面端口分工要分清:客户端访问走 6443,节点侧组件走 10250,集群数据走 2379 与 2380,控制器与调度器另有各自的本地端口;排查连通性问题前先确认目标到底是哪一个。
证书扩容常见坑:接入新的访问地址或域名后,如果证书主体里没有包含该地址,客户端会直接报证书不受信任,这与端口是否可达无关,先核对证书中的可用地址列表。