[บันทึกกันลืม] kubernetes certificate expired

ถ้าท่านที่รัน Kubernetes นานพอ ก็จะได้เจอปัญหานี้ พอดี cluster ผมใช้งานมาครบ 365 วันนี้พอดี เราก็มือใหม่ซะด้วยสิ ทีนี้ ว้าวุ่นเลย อิอิ

ปัญหา

เมื่อใช้คำสั่งต่าง ๆ บน control plane แล้วได้ error ประมาณนี้

Unable to connect to the server: x509: certificate has expired or is not yet valid:

สาเหตุ

Certificate ของ kubernetes cluster มีวันหมดอายุ และวันนี้มันหมดอายุไปแล้ว

วิธีตรวจสอบ

kubeadm certs check-expiration

วิธีแก้ไข

kubeadm certs renew all
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

จาก Managing Expired Certificates in Kubernetes Clusters บอกว่า ให้ restart container ที่เกี่ยวข้องกับ

kube-apiserver, kube-scheduler, kube-controller-manager, and etcd

โดยใช้คำสั่ง

for i in $(crictl ps 2>/dev/null | egrep 'etcd|api|sch|control'| cut -d' ' -f 1) ; do crictl stop $i ;done

ตรวจสอบผล

kubeadm certs check-expiration

หวังว่าจะเป็นประโยชน์