kubeadm搭建的集群证书默认过期时间为1年,root证书过期时间为10年,kubernetes升级会自动续期证书。kubeadm也提供了手动续期证书,但提示需要重启control plane组件,也就apiserver,controller-manager和scheduler,etcd(>=3.2.0)无需重启 (etcd.io/docs/v3.4/o…).
分享一下我在部署和运维Kubernetes集群中,如何重启control plane组件。
1 是否需要重启
目前来看apiserver,controller-manager和scheduler是必须的。 github.com/kubernetes/…
具体细节:
测试1.16,必须重启。之后版本,亲测apiserver会自动重载,其它不清楚。kubeadm开发team确认所有证书自动重载是work in progress,但无法跟踪进度,可能是不同的人负责不同的组件。无法确定之前,kubeadm只能提示重启control plane组件。
2 如何重启
2.1 重启Docker daemon
直接重启docker daemon,但不适用于生产环境,因为不希望所有container重启。并且如果docker设置 live-restore,重启daemon根本不起作用。 docs.docker.com/config/cont…
~$ sudo systemctl restart docker
2.2 重启kubernetes pod
kubectl删除apiserver pod也不起作用。因为control plane是静态pod,无法通过api管理这些pod。
~$ kubectl delete pod -n kube-system kube-apiserver-xxx-1
2.3 重启docker container
ssh到每个master节点,重启container
~$ docker ps -f "name=k8s_kube-apiserver" -q | xargs docker restart
~$ docker ps -f "name=k8s_kube-controller" -q | xargs docker restart
~$ docker ps -f "name=k8s_kube-scheduler" -q | xargs docker restart