k8s证书一般分为两套:apiserver组件和etcd
假如按照角色来区分,证书分为管理节点和工作节点
- 管理节点:如果是kubeadm部署的则自动生成,如果是二进制部署一般由cfssl或者openssl生成
- 工作节点:工作节点主要是指kubelet和kube-proxy连接apiserver所需的客户端证书,kubelet证书由controller-manager组件自动颁发
证书过期会导致集群无法正常工作,日志会出证书过期错误(x509:certificate has expired or is not yet valid)
kubeadm部署方式续签:
#查看证书有效期
kubeadm certs check-expiration
#证书由kukeadm生成,客户端证书及根证书都是在kubeadm源代码写死的,想更改有效期可以更改源码中的证书有效期
#上一部分是客户端证书的名称、到期时间、有效期、证书颁发机构
#下面部分是根证书颁发机构、到期时间、有效期等,但几乎不会变换的所以有效期10年,
#备份
cp -r /etc/kubernetes/ /etc/kubernetes.bak
cp -r /var/lib/etcd /var/lib/etcd.bak
#续签所有证书
kubeadm certs renew all
#重启生效证书 kubeadm部署的组件都属静态pod部署的 使用delete命令删除即可
kubectl delete pod kube-apiserver kube-controller-manager kube-scheduler etcd -n kube-system
#再次查看kubeadm certs check-expiration 是否有变化
#kubectl使用新配置文件
cp -a /etc/kubernetes/admin.conf $HOME/.kube/config
#查看证书另一种方式 (需要进入证书目录)
openssl x509 -in apiserver.crt -noout -dates
#有多master节点可以直接拷贝过去覆盖或者重复以上操作