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 握手中的流向:

Scheduler 证书文件关联与 TLS 握手流程 Scheduler 证书文件关联与 TLS 握手流程 kube-scheduler.conf Kubeconfig 配置文件 kube-scheduler.crt 客户端证书 (PEM) kube-scheduler.key 私钥 (PEM) ca.crt 集群 CA 证书 API Server TLS 双向认证:验证客户端证书 + 私钥签名 说明: kubeconfig 通过 certificate-authority-data 引用 CA,通过 client-certificate-data 和 client-key-data 引用证书与私钥。 轮换时需同时更新 kubeconfig 中的 base64 编码数据,或修改文件路径指向新证书文件。

4.4 轮换操作中的文件处理步骤

  1. 备份旧证书: 执行 cp -a /etc/kubernetes/pki/kube-scheduler.{crt,key} /backup/$(date +%Y%m%d)/
  2. 生成新证书与私钥: 使用集群 CA 签发新证书,确保 CN 为 system:kube-scheduler
  3. 替换文件: 将新 .crt 和 .key 复制到原路径
  4. 修正权限: chmod 600 kube-scheduler.key && chmod 644 kube-scheduler.crt
  5. 更新 kubeconfig: 使用 kubectl config set-credentials 或手动 base64 编码替换 kube-scheduler.conf 中的证书数据
  6. 验证一致性: 使用 openssl x509 -in kube-scheduler.crt -text -noout 检查证书有效期与 CN
最佳实践: 在轮换前使用 kubeadm certs check-expiration 查看所有证书过期时间,统一规划轮换窗口。对于二进制部署集群,建议将证书轮换纳入自动化 CI/CD 流水线,避免人工操作遗漏权限修正步骤。