0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng dẫn chi tiết khôi phục cụm Kubernetes Cluster bị hỏng một cách hiệu quả

Đăng vào 5 ngày trước

• 3 phút đọc

Chủ đề:

KubernetesTechMely

Kubernetes là một nền tảng quản lý container mạnh mẽ, nhưng việc duy trì tính sẵn sàng của các node trong cụm Kubernetes rất quan trọng. Hiện nay, cụm Kubernetes được phân thành ba loại node: Master node, ETCD node và Worker nodes. Để đảm bảo tính sẵn sàng cao (high availability), tất cả các loại node này đều được nhân bản, giúp giảm thiểu rủi ro khi một hoặc một số node bị lỗi. Trong bài viết này, chúng ta sẽ tìm hiểu cách khôi phục các lỗi phổ biến xảy ra trong cụm Kubernetes Cluster.

Cách khắc phục lỗi "An ETCD Node has Failed"

1. Phát hiện lỗi

Sử dụng lệnh sau để kiểm tra trạng thái của các node ETCD:

Copy
$ kubectl get cs
NAME                 STATUS      MESSAGE
scheduler            Healthy     ok
controller-manager   Healthy     ok
etcd-2               Healthy     {"health": "true"}
etcd-0               Healthy     {"health": "true"}
etcd-1               Unhealthy   Client.Timeout exceeded while awaiting headers

2. Khôi phục trong thiết lập tính sẵn sàng cao (High Availability)

Nếu cụm Kubernetes được cấu hình ở chế độ HA, bạn có thể thay thế node ETCD bị lỗi bằng cách tạo một node mới. Ghi lại địa chỉ IP của node mới nhưng không khởi động ETCD ngay. Trên một trong các node ETCD còn hoạt động, hãy xóa node ETCD bị lỗi và thêm địa chỉ IP của node mới. Ví dụ:

Copy
$ etcdctl --endpoints=http://127.0.0.1:2379 member list
...
$ etcdctl --endpoints=http://127.0.0.1:2379 member remove [member ID]
$ etcdctl member add kube-etcd-4 --peer-urls=http://[new node IP]:2380

Sau đó, định cấu hình node ETCD mới và cập nhật tùy chọn máy chủ "kube-apiserver" của các thành phần trên các master node để trỏ đến node ETCD mới.

3. Khôi phục cho thành phần Non-HA

Nếu cụm không chạy ở chế độ HA và node ETCD duy nhất bị lỗi, bạn cần khôi phục dữ liệu từ ổ đĩa hoặc ảnh chụp nhanh của thư mục dữ liệu ETCD, thường là /var/lib/etcd.
Sau khi khôi phục dữ liệu, hãy tạo một node ETCD mớitrong chế độ ETCDINITIALCLUSTERSTATE=existing và điều chỉnh cấu hình trong kube-apiserver.

Cách khắc phục lỗi "A Kubernetes master Node has Failed"

1. Phát hiện lỗi

Sử dụng lệnh sau để xem tình trạng node chính:

Copy
$ kubectl get nodes
NAME            STATUS     AGE       VERSION
kube-master-1   Ready      ...
kube-master-2   NotReady   ...

2. Khôi phục cho HA

Tạo một node master mới và thêm nó vào cụm, thường phải sử dụng lệnh kubectl để thêm master labels và taints. Sau đó, sao chép toàn bộ cấu hình từ master node đang hoạt động sang node mới. Đảm bảo tất cả các dịch vụ như kube-apiserver, kube-controller-manager, và kube-scheduler hoạt động đúng.

Khi node master mới đã hoạt động, hãy xóa node cũ bị lỗi ra khỏi cụm:

Copy
$ kubectl delete nodes kube-master-2

3. Khôi phục cho thành phần Non-HA

Nếu chỉ có một master node và nó bị lỗi, bạn cần khôi phục thư mục cấu hình Kubernetes trong /etc/kubernetes. Nếu ETCD còn hoạt động, hãy tạo một master node mới, điều chỉnh các chứng chỉ và cập nhật cấu hình kubelet trên các worker node để trỏ về master node mới.

Cách khắc phục lỗi "A Kubernetes Worker Node has Failed"

1. Phát hiện lỗi

Chạy lệnh sau để kiểm tra trạng thái của các worker node:

Copy
$ kubectl get nodes

2. Khôi phục worker node

Kubernetes sẽ tự động lên lịch lại các pod lên node khác. Tạo một worker mới để thay thế cho worker node bị lỗi, sau đó kết nối nó với cụm. Khi worker mới hoạt động, hãy xóa worker cũ:

Copy
$ kubectl delete nodes kube-worker-2

Kết luận

Việc khôi phục các cụm Kubernetes Cluster bị hỏng có thể đa dạng và phức tạp. Tuy nhiên, với quy trình cụ thể cho từng loại node, bạn hoàn toàn có thể giữ cho cụm hoạt động ổn định và hiệu quả. Hãy theo dõi sát sao các thành phần trong cụm để có thể phát hiện và khắc phục lỗi kịp thời.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào