Chuyển tới nội dung chính

Gia hạn Cert cho K8s Cluster

1. Backup các file cũ

sudo mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old
sudo mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old
sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old
sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old
sudo mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old
sudo mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old

2. Tạo cert mới

sudo kubeadm alpha phase certs apiserver --apiserver-advertise-address <IP address of your master server>
sudo kubeadm alpha phase certs apiserver-kubelet-client
sudo kubeadm alpha phase certs front-proxy-client

3. Backup các file config

sudo mv /etc/kubernetes/admin.conf /etc/kubernetes/admin.conf.old
sudo mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.old
sudo mv /etc/kubernetes/controller-manager.conf /etc/kubernetes/controller-manager.conf.old
sudo mv /etc/kubernetes/scheduler.conf /etc/kubernetes/scheduler.conf.old

4. Chạy lại kubeconfig

sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address <API-Server>

5. Copy file config để sử dụng Kubectl

mv .kube/config .kube/config.old
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo chmod 777 $HOME/.kube/config
export KUBECONFIG=.kube/config

Vì do certificate thay đổi nên cần phải edit lại config mới có thể truy cập từ máy client vào server hoặc từ server quản lý các work và master được, sau khi đã config xong thì tiến hành reboot lại server hoặc chúng ta không reboot mà chỉ cần restart lại service docker là ok rồi, tới đây coi như đã hoàn thành nhưng sẻ có 1 số trường hợp, vẫn không thể hoạt động được worker hay master khác do không đồng bộ certificate vì cái mới còn cái thì củ, lúc này ta nên làm gì ? có 2 cách

Thứ 1: Chúng ta vào trong file config của từng master và worker còn lại, sau đó sửa lại file nào có config certificate Thứ 2: Chúng ta join lại các master và worker lại với nhau Nếu như không có token thì mình chỉ việc tạo lại token thôi, việc này đơn giản mà đúng không

# Tại master
kubeadm token list
kubeadm token create

# Tại các node
sudo kubeadm join --token=<mã token ở trên> <ip of master node>:<port used 6443 is the default> --node-name <Dành cho AWS còn không có thì bỏ qua phần node-name đi>