在kubeadm安装Kubernetes集群时,证书与安全配置是保障集群稳定性和安全性的核心环节。以下是实践中的关键步骤与经验总结:
-
证书配置
- 自定义CA:通过
kubeadm init --upload-certs配合InitConfiguration的certificateKey字段实现多控制平面证书分发。实践中需确保自定义CA文件(ca.crt/ca.key)的权限(600)及路径(默认/etc/kubernetes/pki),否则会触发x509: certificate signed by unknown authority错误。 - 证书生命周期管理:使用
kubeadm certs renew自动续期(默认1年有效期),需配合/etc/kubernetes/kubeadm.conf中的certificateRenewal策略。曾因未及时续期导致API Server证书过期,集群组件通信中断,最终通过手动生成证书并重启控制平面解决。
- 自定义CA:通过
-
安全加固
- API Server安全参数:在
ClusterConfiguration中定义apiServer.extraArgs,例如:apiServer: extraArgs: anonymous-auth: "false" authorization-mode: Node,RBAC enable-admission-plugins: PodSecurity,NodeRestriction - etcd加密:通过
--experimental-encryption-provider-config启用静态数据加密,需预先生成AES-CBC密钥并配置EncryptionConfig,曾因密钥轮换策略缺失导致密钥泄露风险。 - Pod安全策略:结合PSA(Pod Security Admission)定义
restricted策略,需在kube-apiserver启用PodSecurity准入控制器并配置pod-security标签。
- API Server安全参数:在
-
网络隔离
- 部署NetworkPolicy引擎(如Calico)后,需显式定义
deny-all-ingress策略,避免跨Namespace流量暴露。曾因默认允许所有流量导致测试环境敏感服务被误访问。
- 部署NetworkPolicy引擎(如Calico)后,需显式定义
挑战与解决方案
- 证书续期自动化:通过定时任务调用
kubeadm certs renew all,但需处理证书更新后组件重启(如手动重启kube-apiserver Pod)。 - RBAC权限爆炸:采用ABAC+RBAC混合模式,通过
RoleBinding粒度控制,使用工具如kubectl-who-can审计权限。 - etcd性能损耗:加密后etcd吞吐量下降约15%,最终通过分离加密/非加密数据存储路径缓解。
工具链推荐
cert-manager用于自动管理Ingress证书kube-bench执行CIS基准检测falco实现运行时安全监控