Điểm:2

Làm cách nào để định cấu hình Kubernetes để sử dụng kubenet với kubeadm?

lá cờ in

Tôi đã triển khai cụm Kubernetes bằng cách sử dụng kubeadm.

$ kubectl nhận các nút
TÊN TÌNH TRẠNG VAI TRÒ TUỔI PHIÊN BẢN
ip-172-31-33-9.us-east-2.compute.internal NotReady <none> 48m v1.22.2
ip-172-31-46-53.us-east-2.compute.internal NotReady control-plane,master 49m v1.22.2
ip-172-31-47-245.us-east-2.compute.internal NotReady <none> 6s v1.22.2

Các nút là Chưa sẵn sàng bởi vì tôi chưa cài đặt plugin mạng. Tôi muốn sử dụng giữ cho nó đơn giản và sử dụng kubenet. Các hướng dẫn Nói:

Kubelet phải được chạy với đối số --network-plugin=kubenet để kích hoạt plugin

nhưng tôi không thể tìm ra cách để làm điều đó. Tôi đã thử thêm nó vào các tệp cấu hình khác nhau, chẳng hạn như /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf/etc/sysconfig/kubeletvà khởi động lại kubelet, nhưng không cái nào hoạt động.

Làm thế nào để tôi sử dụng kubenet với kubeadm?

lá cờ in
Xin chào timkay, chào mừng bạn đến với S.F. Bạn đã nói rằng bạn "đã thử" nhưng "không có cách nào hiệu quả" nhưng bạn chưa chia sẻ nỗ lực nào của mình với chúng tôi để đánh giá những gì bạn đã thử và tại sao nó có thể không hoạt động. Vui lòng đọc trang [cách hỏi](https://serverfault.com/help/how-to-ask). Với tinh thần cố gắng giúp ích một chút, bạn có nhớ chạy `systemctl daemon-reload` giữa các lần chỉnh sửa không? systemd không sử dụng các giá trị mới nhất trên đĩa - nó buộc phải đọc lại chúng. Chúc may mắn!
lá cờ in
Như tôi đã nói, các tài liệu nói thêm `--network-plugin=kubenet` vào dòng lệnh kubelet, nhưng tôi chưa bao giờ có dòng lệnh kubelet, vì kubelet được khởi động bởi kubeadm. Vì vậy, tôi không có bất kỳ nỗ lực nào để chia sẻ với bạn.
Điểm:1
lá cờ in

Bạn có thể dùng /etc/default/kubelet file để ghi đè đối số kubelet. Như có thể tìm thấy trong 10-kubeadm.conf tập tin:

...
# Đây là tệp mà người dùng có thể sử dụng để ghi đè đối số kubelet như là phương sách cuối cùng. Tốt nhất, người dùng nên sử dụng
# thay vào đó, đối tượng .NodeRegistration.KubeletExtraArgs trong tệp cấu hình. KUBELET_EXTRA_ARGS phải được lấy từ tệp này.
Tệp môi trường=-/etc/default/kubelet
...

Tôi sẽ chỉ cho bạn cách nó hoạt động.


Đầu tiên, tôi thiết lập mặt phẳng điều khiển Kubernetes:

# kubeadm init
[init] Sử dụng phiên bản Kubernetes: v1.22.2
...

# mkdir -p $HOME/.kube
# Sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config

Sau khi khởi tạo thành công, chúng ta có thể kiểm tra giá trị của --mạng-plugin đối số mà kubelet hiện đang sử dụng và trạng thái của lõi Vỏ:

# ps aux | grep "kubelet" | grep "plugin mạng"
gốc 27488 5.1 3.6 1816612 145808 ? Ssl 10:42 0:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/ kubelet/config.yaml --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.5

# kubectl get pod -n kube-system | grep "lõi"
coredns-78fcd69978-bbc52 0/1 Đang chờ xử lý 0 2m26s
coredns-78fcd69978-fdcv9 0/1 Đang chờ xử lý 0 2m26s

Từ đầu ra trên, chúng ta có thể thấy rằng --mạng-plugin=cnilõi Vỏ quả nằm trong Chưa giải quyết tiểu bang.

Hãy tạo ra /etc/default/kubelet file và viết các đối số kubelet ở đó:
GHI CHÚ: Bạn có thể cần phải tùy chỉnh các --pod-cidr--pod-infra-container-image để phù hợp với nhu cầu của bạn.

# chạm /etc/default/kubelet

# echo 'KUBELET_KUBEADM_ARGS="--network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5"' > /etc/default /kubelet

# mèo /etc/default/kubelet
KUBELET_KUBEADM_ARGS="--network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5"

Sau đó, chúng ta cần tải lại cấu hình trình quản lý systemd và khởi động lại kubelet:

# systemctl daemon-tải lại
# systemctl khởi động lại kubelet

Cuối cùng, chúng ta có thể kiểm tra xem nó có hoạt động như mong đợi không:

# ps aux | grep "kubelet" | grep "plugin mạng"
gốc 27841 6,9 3,5 1890600 143760 ? Ssl 10:47 0:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/ kubelet/config.yaml --network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5
   
# kubectl get pod -n kube-system | grep "lõi"
coredns-78fcd69978-bbc52 1/1 Chạy 0 6m51s
coredns-78fcd69978-fdcv9 1/1 Chạy 0 6m51s   

# kubectl nhận các nút
TÊN TÌNH TRẠNG VAI TRÒ TUỔI PHIÊN BẢN
kmaster Ready control-plane,master 15m v1.22.2

Bạn có thể làm theo các bước sau cho tất cả các nút của mình.

Ngoài ra, hãy nhớ rằng (có thể tìm thêm thông tin trong tài liệu kubenet):

Kubenet là một plugin mạng đơn giản, rất cơ bản, chỉ dành cho Linux. Bản thân nó không triển khai các tính năng nâng cao hơn như mạng chéo nút hoặc chính sách mạng. Nó thường được sử dụng cùng với nhà cung cấp đám mây thiết lập quy tắc định tuyến để liên lạc giữa các nút hoặc trong môi trường một nút.

Wytrzymały Wiktor avatar
lá cờ it
Xin chào @timkay và chào mừng đến với ServerFault! Hãy nhớ [phản hồi câu trả lời cho câu hỏi của bạn](https://stackoverflow.com/help/someone-answers). Bằng cách đó, chúng tôi biết liệu câu trả lời có hữu ích hay không và các thành viên khác trong cộng đồng cũng có thể hưởng lợi từ chúng. Cố gắng [chấp nhận câu trả lời](https://stackoverflow.com/help/accepted-answer) đó là giải pháp cuối cùng cho vấn đề của bạn, bình chọn cho các câu trả lời hữu ích và nhận xét về những câu trả lời có thể được cải thiện hoặc cần chú ý thêm. Tận hưởng kì nghỉ của bạn!
lá cờ in
Cảm ơn bạn, @matt_j. Tôi đã làm theo hướng dẫn của bạn, mà tôi đã tóm tắt theo cách này: 1. Cài đặt như cũ, sử dụng kubeadm. 2. Tạo một tệp /etc/default/kubelet, với các tham số kubelet bổ sung. 3. Khởi động lại kubelet với systemctl daemon-reload && systemctl restart kubelet. Tôi đã làm điều đó và các tham số dòng lệnh cho kubelet không thay đổi. Biến env KUBELET_KUBEADM_ARGS sẽ cho tôi biết rằng nó được kubeadm sử dụng để bắt đầu kubelet, nhưng chúng tôi hoàn toàn không chạy kubeadm sau khi thực hiện các thay đổi theo hướng dẫn của bạn.
matt_j avatar
lá cờ in
Làm cách nào để bạn kiểm tra xem các tham số kubelet không thay đổi? Bạn có thể vui lòng sử dụng lệnh này không: `ps aux | grep "kubelet" | grep "plugin mạng"`?
Wytrzymały Wiktor avatar
lá cờ it
Xin chào @timkay. Bất cứ cập nhật?
lá cờ in
Tôi đã từ bỏ Kubernetes và viết phần thay thế của riêng mình.
Minding avatar
lá cờ pl
Không cần chạy `systemctl daemon-reload`, vì không có cấu hình `systemd` nào thay đổi cần phải tải lại. Tôi cũng không thích sử dụng `/etc/default` cho các cấu hình tùy chỉnh.Nếu không thì rất hữu ích, cảm ơn!
Minding avatar
lá cờ pl
Trên thực tế `kubeadm` ["không hỗ trợ kubenet"](https://unofficial-kubernetes.readthedocs.io/en/latest/getting-started-guides/kubeadm/) theo wiki này.
Điểm:0
lá cờ jp

kubeadm cung cấp khả năng sử dụng một --config tệp yaml được ghi lại đây. Trong tệp này, bạn có thể sử dụng các tham số cli từ kubelet làm đối số bổ sung như --network-plugin=kubelet như plugin mạng: kubelet:

phiên bản api: kubeadm.k8s.io/v1beta3
loại: InitConfiguration
bootstrapTokens:
...
nútĐăng ký:
...
  kubeletExtraArgs:
    ...
    plugin mạng: kubenet
    pod-cidr: 10.20.0.0/24

lá cờ in
Kubernetes rất lộn xộn. Tôi đã từ bỏ nó từ lâu và viết thay thế của riêng tôi, chỉ có vài trăm dòng mã. Tôi khá thất vọng vì ngành công nghiệp dường như là một sơ đồ kim tự tháp. Mọi người viết phần mềm phức tạp mà chỉ những người được đào tạo chuyên sâu mới có thể sử dụng. Tay nghề ở đâu? Như Elon nói, "không có phần nào là phần tốt nhất." Ngừng sửa các vấn đề phức tạp bằng cách làm cho mọi thứ trở nên phức tạp hơn.
Oskar avatar
lá cờ jp
@timkay Nói đúng, tôi hoàn toàn có thể hiểu câu nói của bạn :)

Đă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.