it-swarm-vi.com

Làm thế nào để khởi động lại các nút kubernetes?

Trạng thái của các nút được báo cáo là unknown

"conditions": [
          {
            "type": "Ready",
            "status": "Unknown",
            "lastHeartbeatTime": "2015-11-12T06:03:19Z",
            "lastTransitionTime": "2015-11-12T06:04:03Z",
            "reason": "Kubelet stopped posting node status."
          }

khi kubectl get nodes trả về trạng thái KHÔNG GIỚI HẠN. Điều này ngụ ý gì và làm thế nào để khắc phục điều này?

14
user_mda

Nhận các nút

kubectl get nodes

Kết quả:

NAME            STATUS     AGE
192.168.1.157   NotReady   42d
192.168.1.158   Ready      42d
192.168.1.159   Ready      42d

Mô tả nút

Đây là một NotReady trên nút của 192.168.1.157. Sau đó gỡ lỗi nút chưa có này và bạn có thể đọc các tài liệu chính thức - Introspection và gỡ lỗi ứng dụng .

kubectl describe node 192.168.1.157

Kết quả một phần:

Conditions:
Type          Status          LastHeartbeatTime                       LastTransitionTime                      Reason                  Message
----          ------          -----------------                       ------------------                      ------                  -------
OutOfDisk     Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.
Ready         Unknown         Sat, 28 Dec 2016 12:56:01 +0000         Sat, 28 Dec 2016 12:56:41 +0000         NodeStatusUnknown       Kubelet stopped posting node status.

Có một OutOfDisk trên nút của tôi, sau đó Kubelet dừng đăng trạng thái nút. Vì vậy, tôi phải giải phóng một số dung lượng ổ đĩa, sử dụng lệnh df trên Ubuntu14.04 Tôi có thể kiểm tra các chi tiết của bộ nhớ và sử dụng lệnh của docker rmi image_id/image_name dưới vai trò của su I có thể loại bỏ những hình ảnh vô dụng.

Đăng nhập vào nút

Đăng nhập vào 192.168.1.157 bằng cách sử dụng ssh, như ssh [email protected] và chuyển sang 'su' bởi Sudo su;

Khởi động lại kubelet

/etc/init.d/kubelet restart

Kết quả:

stop: Unknown instance: 
kubelet start/running, process 59261

Nhận lại các nút

Về chủ:

kubectl get nodes

Kết quả:

NAME            STATUS    AGE
192.168.1.157   Ready     42d
192.168.1.158   Ready     42d
192.168.1.159   Ready     42d

Ok, nút đó hoạt động tốt.

Đây là một tài liệu tham khảo: Kubernetes

17
CHENJIAN

Bạn có thể xóa nút khỏi bản gốc bằng cách phát hành:

kubectl delete node hostname.company.net

Trạng thái NOTReady có thể có nghĩa là chủ không thể truy cập dịch vụ kubelet. Kiểm tra xem mọi thứ đều ổn trên máy khách.

5
cristi
GET all Nodes

kubectl get nodes

kiểm tra nút có trạng thái not ready 

bạn chỉ cần xóa nút đó và tạo nút mới và nối nó thành cụm

Kubectl delete node <node name>

Nếu bạn đang sử dụng các dịch vụ quản lý như AWS EKS, nó sẽ xuất hiện nút mới tự động. bạn cũng có thể khởi động lại từ nút khởi động lại bàn điều khiển aws (ec2).

0
Harsh Manvar

Tôi cũng gặp vấn đề này nhưng có vẻ như nó phụ thuộc vào việc cung cấp Kubernetes và cách mọi thứ được cài đặt. Trong Azure, nếu bạn đang sử dụng cài đặt acs-engine, bạn có thể tìm thấy tập lệnh Shell thực sự đang được chạy để cung cấp nó tại:

/opt/Azure/containers/provision.sh

Để có được sự hiểu biết chi tiết hơn, chỉ cần đọc qua nó và chạy các lệnh mà nó chỉ định. Đối với tôi, tôi đã phải chạy bằng root:

systemctl enable kubectl
systemctl restart kubectl

Tôi không biết nếu kích hoạt là cần thiết và tôi không thể nói nếu những thứ này sẽ hoạt động với cài đặt cụ thể của bạn, nhưng nó chắc chắn hoạt động với tôi. 

0
Chad

Nếu một nút không lành mạnh đến mức chủ không thể lấy trạng thái từ nó - Kubernetes có thể không thể để khởi động lại nút. Và nếu kiểm tra sức khỏe không hoạt động, bạn có hy vọng gì khi truy cập nút bằng SSH?

Trong trường hợp này, bạn có thể phải hard-restart - hoặc, nếu phần cứng của bạn ở trên đám mây, hãy để nhà cung cấp của bạn làm điều đó.

Ví dụ: Bảng điều khiển AWS EC2 cho phép bạn nhấp chuột phải vào một cá thể để kéo lên menu "Trạng thái sơ thẩm" - từ đó bạn có thể khởi động lại/chấm dứt nút không phản hồi.

Trước khi làm điều này, bạn có thể chọn kubectl cordon node để có biện pháp tốt. Và bạn có thể thấy kubectl delete node là một phần quan trọng của quy trình để đưa mọi thứ trở lại bình thường - nếu nút không tự động tham gia lại cụm sau khi khởi động lại.


Tại sao một nút trở nên không phản hồi? Có lẽ một số tài nguyên đã cạn kiệt theo cách ngăn hệ điều hành Host xử lý các yêu cầu mới một cách kịp thời. Đây có thể là đĩa hoặc mạng - nhưng trường hợp nguy hiểm hơn là hết bộ nhớ (OOM), mà Linux xử lý kém .

Để giúp Kubernetes quản lý bộ nhớ nút một cách an toàn, bạn nên thực hiện cả hai cách sau:

  • Dự trữ một số bộ nhớ cho hệ thống.
  • Hãy rất cẩn thận với (tránh) thông số kỹ thuật bộ nhớ cơ hội cho nhóm của bạn. Nói cách khác, không cho phép các giá trị khác nhau của requests V&AGRAVE; limits cho bộ nhớ.

Ý tưởng ở đây là để tránh các biến chứng liên quan đến bộ nhớ quá mức , bởi vì bộ nhớ là không thể néncả hai Kẻ giết OOM của Linux và Kubernetes có thể không kích hoạt trước khi nút đã trở nên không lành mạnh và không thể truy cập được.

0
nobar