本次k8s版本为v1.23.17
Kubernetes 集群中的证书主要分为两大类:
- Kubernetes 组件证书(如:
apiserver
相关的证书) - Etcd 集群证书
根据集群角色,证书还可以细分为:
- 管理节点证书
- 工作节点证书
证书详情
- 管理节点证书:
- Kubeadm 部署:证书会由 Kubeadm 自动生成,覆盖 Kubernetes 组件(如:
apiserver
、controller-manager
、scheduler
等)。 - 二进制部署:通常使用
cfssl
或openssl
手动生成证书,涉及更多的定制化配置。
- Kubeadm 部署:证书会由 Kubeadm 自动生成,覆盖 Kubernetes 组件(如:
- 工作节点证书:
- 工作节点主要需要连接
apiserver
,使用的是客户端证书。 - 该证书由 kube-controller-manager 组件自动颁发和管理,确保
kubelet
能安全地与apiserver
通信。
- 工作节点主要需要连接
常见证书
- **Kubeadm 部署**:证书会由 Kubeadm 自动生成,覆盖 Kubernetes 组件(如:`apiserver`、`controller-manager`、`scheduler` 等)。
- **二进制部署**:通常使用 `cfssl` 或 `openssl` 手动生成证书,涉及更多的定制化配置。
- 工作节点证书:
- 工作节点主要需要连接
apiserver
,使用的是客户端证书。 - 该证书由 kube-controller-manager 组件自动颁发和管理,确保
kubelet
能安全地与apiserver
通信。
- 工作节点主要需要连接
证书有效期及更新
Kubernetes 证书默认有效期为 1 年,可以通过 kubeadm certs
工具检查和更新证书:
查看证书过期时间
kubeadm certs check-expiration
该命令显示了 所有证书的到期/剩余时间,包括在etc/kubernetes/pki目录下的客户端证书及由kubeadm嵌入到KUBECONFIG文件中的客户端证书(admin.conf,controller-manager.conf和scheduler.conf)
手动更新证书
使用 kubeadm certs renew 命令 可以随时手动续订证书,该命令使用存储在/etc/kubernetes/pki中的 CA (or front-proxy-CA)证书和密钥来更新证书
证书备份
注意:高可用集群需要在所有master节点上操作
cp -r /etc/kubernetes /etc/kubernetes.bak
续订所有证书
命令执行后,注意:
- 无论证书的到期时间如何,都会无条件地续订一年。
- 证书的SAN等信息基于原证书,无需再次提供。
- renew执行后,为使更改生效,需要重启各组件。
注意:高可用集群需要在所有master节点上操作
kubeadm certs renew all
查看证书有效期
[root@master01 ~]# kubeadm certs check-expiration
重启 kube-apiserver、kube-controller-manager、kube-scheduler、etcd 组件后生效
[root@master01 ~]# mv /etc/kubernetes/manifests/* /tmp/
//约等30秒后 kube-apiserver、kube-controller-manager、kube-scheduler、etcd 容器会停止,然后,再将清单文件移过来:
[root@master01 ~]# mv /tmp/kube-* /etc/kubernetes/manifests/
[root@master01 ~]# mv /tmp/etcd.yaml /etc/kubernetes/manifests/
可以看到已经重启成功
修改config文件
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
标签:kubernetes,Kubernetes,证书,apiserver,etc,manager,集群,kube
From: https://www.cnblogs.com/Unstoppable9527/p/18422731