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/kubernetessudo 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/kubeadmBướ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.oldBướ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-clientBướ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.oldBướ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ôimv .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/configVì 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
kubeadm token listNế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 createTạ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é.
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.