4. Scheduler 证书文件:kube-scheduler.conf、kube-scheduler.crt、kube-scheduler.key、证书存储路径、证书权限
在 Kubernetes 集群中,kube-scheduler 作为核心控制平面组件,通过 TLS 与 API Server 进行双向认证通信。证书轮换任务的核心操作对象是以下三个文件:
| 文件名称 | 文件类型 | 核心作用 | 轮换关注点 |
|---|---|---|---|
kube-scheduler.conf |
Kubeconfig 配置文件 | 定义集群访问地址、CA 证书、客户端证书与密钥的引用路径 | 更新 certificate-authority-data 与 client-certificate-data 字段 |
kube-scheduler.crt |
X.509 客户端证书(PEM) | 用于向 API Server 证明 Scheduler 身份 | 替换为新证书,确保 CN/O 与 RBAC 绑定一致 |
kube-scheduler.key |
RSA/ECDSA 私钥(PEM) | 与证书配对的私钥,用于 TLS 握手签名 | 替换为新私钥,权限保持 600 |
4.1 证书存储路径规范
不同集群部署方式(kubeadm / 二进制 / 托管控制面)的证书路径存在差异。以下为 kubeadm 部署的标准路径:
/etc/kubernetes/
├── pki/
│ ├── ca.crt # 集群 CA 证书
│ ├── ca.key # 集群 CA 私钥(仅签名节点使用)
│ ├── kube-scheduler.crt # Scheduler 客户端证书
│ └── kube-scheduler.key # Scheduler 私钥
└── kube-scheduler.conf # Scheduler kubeconfig 文件
路径变更风险提示: 若集群使用自定义路径(如
/var/lib/kube-scheduler/),必须在 kube-scheduler.conf 的 clusters.cluster.certificate-authority 和 users.user.client-certificate / client-key 字段中同步修改路径,否则 Scheduler 启动时将报证书文件未找到错误。
4.2 证书权限要求
证书与私钥文件的权限设置直接影响 Scheduler 组件的启动安全。权限过高会导致安全审计告警,权限过低则导致进程无法读取。
| 文件 | 推荐权限 | 属主:属组 | 说明 |
|---|---|---|---|
kube-scheduler.crt |
0644 |
root:root |
证书为公钥文件,可读即可;无需可执行权限 |
kube-scheduler.key |
0600 |
root:root |
私钥必须仅 root 可读写,禁止组/其他用户访问 |
kube-scheduler.conf |
0644 |
root:root |
kubeconfig 包含证书数据,但无私钥原文,可读即可 |
常见权限错误: 轮换后若私钥权限为
0644 或 0777,Scheduler 日志将输出 permission denied 或 private key file has group or world access,导致 TLS 握手失败。轮换后必须执行 chmod 600 /etc/kubernetes/pki/kube-scheduler.key。
4.3 证书文件与 kubeconfig 的关联关系
下图展示了 kube-scheduler.conf 如何引用证书文件,以及证书链在 TLS 握手中的流向:
4.4 轮换操作中的文件处理步骤
- 备份旧证书: 执行
cp -a /etc/kubernetes/pki/kube-scheduler.{crt,key} /backup/$(date +%Y%m%d)/ - 生成新证书与私钥: 使用集群 CA 签发新证书,确保 CN 为
system:kube-scheduler - 替换文件: 将新
.crt和.key复制到原路径 - 修正权限:
chmod 600 kube-scheduler.key && chmod 644 kube-scheduler.crt - 更新 kubeconfig: 使用
kubectl config set-credentials或手动 base64 编码替换kube-scheduler.conf中的证书数据 - 验证一致性: 使用
openssl x509 -in kube-scheduler.crt -text -noout检查证书有效期与 CN
最佳实践: 在轮换前使用
kubeadm certs check-expiration 查看所有证书过期时间,统一规划轮换窗口。对于二进制部署集群,建议将证书轮换纳入自动化 CI/CD 流水线,避免人工操作遗漏权限修正步骤。