Điểm:0

Cài đặt sạch Kubernetes trên Raspberry Pi không hoạt động

lá cờ cn

Tôi đang cố gắng cài đặt hoàn toàn Kubernetes 1.23.x trên một cụm gồm bốn Raspberry Pi, mỗi chiếc chạy phiên bản x64 của Raspberry Pi OS, tuy nhiên, tôi đang gặp sự cố lớn ngay khi thử và chạy khởi tạo kubeadm trên nút chính (thậm chí trước khi cố gắng để các nút khác tham gia). Cụ thể: chỉ năm phút sau khi gọi khởi tạo kubeadm trên nút chính, cụm ngừng hoạt động. Trên thực tế, nó không bao giờ thực sự hoạt động ngay từ đầu. Lúc đầu, máy chủ phản hồi nói rằng nút đó là Chưa sẵn sàng, nhưng sau 5 phút, nó ngừng phản hồi hoàn toàn.

Vì vậy, đây là những gì tôi đã làm và những gì tôi thấy: Tôi đã cài đặt containerd và kubeadm. Sau đó, tôi chạy lệnh sau trên nút chính để thử và khởi động Kubernetes:

Sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
    --token-ttl=0 --apiserver-advertise-address=192.168.1.194

Sau khi chạy lệnh đó và sau đó sao chép tệp /etc/kubernetes/admin.conf sang ~/.kube/config, tôi có thể chạy lệnh sau:

$ kubectl nhận các nút

TÊN TÌNH TRẠNG VAI TRÒ TUỔI PHIÊN BẢN
k8s-master-1 NotReady control-plane,master 3m36s v1.23.4

Và nó sẽ tiếp tục hiển thị trạng thái NotReady trong khoảng 5 phút, sau thời điểm đó, lệnh tương tự mang lại một kết quả rất khác:

$ kubectl nhận các nút

Kết nối với máy chủ 192.168.1.194:6443 bị từ chối - bạn đã chỉ định đúng máy chủ hoặc cổng chưa?

Tôi không chắc tại sao điều này lại xảy ra, nhưng nó rất nhất quán. Tôi đã cố gắng một vài lần bây giờ để thiết lập lại kubeadm và sau đó khởi tạo kubeadm một lần nữa và thời gian chờ kết nối luôn xảy ra ở mốc 5 phút. Vì vậy, lần cuối cùng tôi cố gắng làm điều này, tôi đã quyết định theo dõi tất cả các tệp nhật ký bên dưới /var/log/container/. Sau mốc 5 phút, nó liên tục ghi lại một số biến thể của lỗi kết nối thành 127.0.0.1:2379. Ví dụ:

2022-03-09T19:30:29.307156643-06:00 stderr F W0310 01:30:29.306871 1 clientconn.go:1331] [core] grpc: addrConn.createTransport không kết nối được với {127.0.0.1:2379 127.0.0.1 0 }. Err: lỗi kết nối: desc = "vận chuyển: Lỗi trong khi quay số quay số tcp 127.0.0.1:2379: kết nối: kết nối bị từ chối". Đang kết nối lại...

Từ Google, có vẻ như etcd đang chạy trên cổng đó, nhưng sau 5 phút, một loạt dịch vụ (bao gồm cả etcd) bắt đầu ngừng hoạt động. Tôi đã tải lên các bản ghi đầy đủ từ thời gian khởi tạo kubeadm chạy, cho đến trước mốc 5 phút đáng sợ, như một Gist.

Tôi cũng đã kiểm tra xem tất cả các cổng có đang mở không. (Đúng vậy.) Trong năm phút đầu tiên đó, tôi có thể telnet tới cổng cục bộ 2379. Tại sao Kubernetes không khởi động trên Pi của tôi? Tôi đang thiếu gì?

CẬP NHẬT: Theo yêu cầu, tôi có thể cung cấp thêm một vài chi tiết. Tôi đã thấy một bài đăng khuyến nghị đặt giá trị của --apiserver-advertise-address đến 0.0.0.0 thay vì IP trực tiếp, vì vậy tôi đã thử điều đó nhưng dường như không có gì khác biệt. tôi đã thử chạy trạng thái systemctl kubelet cho biết dịch vụ kubelet đang "hoạt động" trong khoảng thời gian 5 phút đầu tiên đó.

tôi cũng đã chạy kubectl mô tả nút k8s-master-1, hiển thị bốn sự kiện trong chuỗi này:

  1. KubeletCó ĐủBộ Nhớ
  2. KubeletKhông CóĐĩaÁp Lực
  3. KubeletHasSufficientPID
  4. KubeletChưa Sẵn Sàng

Sự kiện cuối cùng đó đi kèm với thông báo sau: "mạng thời gian chạy vùng chứa chưa sẵn sàng: NetworkReady=false lý do: Thông báo NetworkPluginNotReady: Plugin mạng trả về lỗi: plugin cni chưa được khởi tạo." Vì vậy, điều đó đã khiến tôi suy nghĩ. Tôi đã đợi Node xuất hiện ở trạng thái Sẵn sàng trước khi cài đặt Flannel (còn gọi là plugin CNI), nhưng lần này tôi quyết định thử cài đặt Flannel trong khoảng thời gian 5 phút đầu tiên đó, sử dụng lệnh này:

áp dụng kubectl -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Và trước sự ngạc nhiên lớn của tôi, điều đó đã hiệu quả! Vâng, loại. Nút chính cuối cùng đã bắt đầu báo cáo trạng thái "Sẵn sàng".Và tôi nhận thấy rằng tất cả các nhóm của tôi đều có ngoại lệ đáng chú ý là các nhóm coredns. Tuy nhiên, sau một thời gian ngắn, nhóm kube-proxy (trong không gian tên hệ thống kube) chết và bị kẹt trong CrashLoopBackoff, và sau đó, nhóm kube-controller-manager và kube-scheduler cũng nhập CrashLoopBackoff tương tự. Sau đó, lần này, sau khoảng 15 phút, toàn bộ cụm lại chết như trước (có nghĩa là tôi nhận được thông báo 'kết nối với máy chủ bị từ chối' tương tự). Vì vậy, tôi cảm thấy như mình đã tiến gần hơn một chút, nhưng vẫn còn một chặng đường dài để việc này hoạt động.

CẬP NHẬT THỨ HAI: Một vài điều: có vẻ như khi tôi cài đặt plugin CNI flannel, coredns không được bao gồm hoặc không hoạt động. Nhưng khi tôi cài đặt CNI dệt hoạt động thì ít nhất nó cũng cố gắng khởi động các lõi, mặc dù không may là các nhóm đó bị kẹt trong ContainerCreating và không bao giờ thực sự kích hoạt. Vì vậy, theo yêu cầu, tôi đang cung cấp một số nhật ký bổ sung. Chúng đủ dài để đảm bảo tải chúng lên một cách riêng biệt, vì vậy đây là liên kết đến một Gist chứa bốn bản ghi:

  1. Đang chạy kubectl -n kube-system log pod/coredns-...
  2. Đang chạy kubectl -n kube-system log pod/kube-controller-manager-k8s-master-1
  3. Đang chạy kubectl -n kube-system log pod/kube-proxy-...
  4. Đang chạy kubectl mô tả nút k8s-master-1

Lưu ý rằng trước khi mọi thứ chết, nhóm kube-controller-manager-... khởi động nhưng sẽ sớm thấy chính nó trong CrashLoopBackoff. Trong khi các nhóm coredns không bao giờ khởi động thành công.

tilleyc avatar
lá cờ us
dmesg hoặc syslog hiển thị gì?
mozello avatar
lá cờ cn
Chạy `kubectl description node nodename` để kiểm tra lý do tại sao nút không sẵn sàng. Kiểm tra `systemctl status kubelet` và `journalctl -u kubelet`. Bạn đã tắt trao đổi?
lá cờ cn
@mozello Tôi đã cập nhật bài đăng gốc của mình với nhiều chi tiết hơn theo đề xuất của bạn.
mozello avatar
lá cờ cn
Các nhóm coredns có ở trạng thái 'Đang chờ xử lý' không? Kiểm tra xem có bất kỳ dấu vết nào khi bạn chạy 'nút mô tả kubectl' không.
mozello avatar
lá cờ cn
Ngoài ra, vui lòng thêm nhật ký từ nhóm kube-proxy `kubectl -n kube-system logs kube-proxy-...`
lá cờ cn
@mozello cảm ơn vì đã theo dõi tôi và xin lỗi về sự chậm trễ lâu dài. Tôi đã chỉnh sửa bài đăng gốc của mình để thêm một loạt nhật ký bổ sung vào liên kết Gist ở cuối. Tôi thực sự đánh giá cao bạn nhìn vào điều này!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.