Header Ads Widget

Ticker

6/recent/ticker-posts

Gia hạn và tạo mới lại certificate cho kubernetes khi hết hạn

Keywords: Extend and create certificate for kubernetes

Chắc hẳng nhiều người sẻ bị trường hợp cert của k8s hết hạn rồi đúng không nào, mình cũng đã bị như thế, bởi người ta nói khi đi làm gặp càng nhiều khó khăn va chạm nhiều thì chúng ta càng trưởng thành và có nhiều kinh nghiệm hơn trong công việc, thôi mình bắt đầu hướng dẫn luôn vậy, bạn nào đang sử dụng kubeadm nhỏ hơn 1.8 thì bắt đầu thực hiện như mình ở bước 1 nhé, còn ai hơn 1.8 thì có thể bỏ qua và không thực hiện bước 1

Thực hiện theo các bước sau nhé, truy cập đường dẫn /etc/kubernetes

Bước 1: Update kubeadm nếu version nhỏ hơn 1.8
sudo curl -sSL https://dl.k8s.io/release/v1.8.15/bin/linux/amd64/kubeadm > ./kubeadm.1.8.15
sudo chmod a+rx kubeadm.1.8.15
sudo mv /usr/bin/kubeadm /usr/bin/kubeadm.1.7
sudo mv kubeadm.1.8.15 /usr/bin/kubeadm
Bước 2: Backup lại những file củ đi, ví dụ ở đây mình sẻ backup (apiserver, apiserver-kubelet-client, front-proxy-client certs và keys)
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
Bước 3: Sau khi đã backup xong rồi thì chỉ việc tạo mới lạ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
Bước 4: Tiếp tục truy cập ra ngoài thư mục ngoài, chính là thư mục kubernetes ban đầu, backup lại toàn bộ file config trong đó
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
Bước 5: Sau khi đã backup những file config củ xong rồi, thì tạo mới nó lại thôi, có một số chú ý nhỏ nếu các bạn đang sử dụng AWS thì cần phải add thêm một parameter --node-name tại đây nữa nhé, còn nếu k8s bình thường thì khỏi đi
  • Ví dụ k8s aws:
sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address 192.168.1.1 --node-name ip-10-0-8-141.ec2.internal
  • Ví dụ k8s thường: 
sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address 192.168.1.1
Các bạn cần chú ý những vấn đề sau 192.168.1.1 chính là IP của máy master của bạn, node-name ở đây nghĩa là mình khai báo tên của server node master, sau khi mọi thứ đã ok thì thực hiện add lại config thôi
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
Mình sẻ hướng dẫn các bạn cách thứ 2 nhé, vì cách 1 quá easy rồi, thực hiện kiểm tra token để join đến máy master bằng lệnh
kubeadm token list
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
kubeadm token create
Tại các máy worker chuẩn bị join ta cũng sẻ update kubeadm nếu như nó nhỏ hơn version 1.8 còn ngược lại thì không cần, sau đó thực hiện lệnh join sau
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>
Bây giờ thực hiện lệnh get nodes và kiểm tra, mọi thứ đã ready trở lại, chúc anh em cô bác thành công nhé.

Post a Comment

0 Comments