paint-brush
Thiết lập và quản lý cụm Kubernetes với Kubeadmtừ tác giả@humalect
2,091 lượt đọc
2,091 lượt đọc

Thiết lập và quản lý cụm Kubernetes với Kubeadm

từ tác giả Humalect Inc11m2023/08/09
Read on Terminal Reader

dài quá đọc không nổi

Hướng dẫn Kubeadm này bao gồm các yếu tố cần thiết để tạo và quản lý các cụm Kubernetes bằng các lệnh Kubeadm. Nó giải thích Kubernetes tự lưu trữ, ưu và nhược điểm, sau đó đi sâu vào mục đích của Kubeadm. Nó cung cấp các ví dụ và thông tin chi tiết về 20 lệnh Kubeadm phổ biến hàng đầu, bao gồm khởi tạo mặt phẳng điều khiển, tham gia các nút worker, đặt lại cụm, nâng cấp phiên bản và quản lý các thành phần. Hướng dẫn cũng phác thảo cách tạo cụm Kubernetes bằng Kubeadm, xử lý các thành phần của cụm và nhấn mạnh các phương pháp hay nhất như sử dụng Kubeadm để tự động thay đổi quy mô cụm sản xuất, sao lưu thường xuyên, v.v. và giám sát các nút một cách hiệu quả.
featured image - Thiết lập và quản lý cụm Kubernetes với Kubeadm
Humalect Inc HackerNoon profile picture
0-item
1-item

Trong hướng dẫn Kubeadm này, chúng ta sẽ khám phá mọi thứ bạn cần biết về các lệnh Kubeadm và cách sử dụng chúng để tạo cụm & quản lý các thành phần cụm trong Kubernetes (K8s).

Bạn sẽ không chỉ học cách tạo cụm Kubernetes của riêng mình bằng Kubeadm mà còn nắm vững nghệ thuật quản lý các thành phần cụm và khám phá các phương pháp hay nhất của Kubeadm.


Hãy tham gia cùng chúng tôi trong cuộc hành trình thú vị này vào thế giới Kubeadm, nơi bạn sẽ mở khóa sức mạnh để sắp xếp các thùng chứa một cách dễ dàng.


Hãy cùng nhau tìm hiểu và trở thành chuyên gia Kubeadm! Trước khi chúng ta tìm hiểu sâu về kubeadm , Kubernetes tự lưu trữ (K8s) chính xác là gì?


Tổng quan nội dung

  • Kubernetes tự lưu trữ là gì? - Ưu và nhược điểm
  • Kubeadm là gì?
  • Các ví dụ về Kubeadm
  • Top 20 lệnh Kubeadm phổ biến nhất
  • Cách tạo cụm Kubernetes bằng Kubeadm
  • Cách quản lý các thành phần cụm với Kubeadm
  • Các phương pháp hay nhất của Kubeadm


Kubernetes tự lưu trữ là gì? - Ưu và nhược điểm

Self-hosted Kubernetes, còn được gọi là triển khai Kubernetes "bare metal" hoặc "on-premises", đề cập đến việc chạy Kubernetes trực tiếp trên các máy vật lý hoặc máy ảo mà không cần dựa vào dịch vụ Kubernetes được quản lý do nhà cung cấp đám mây cung cấp (chẳng hạn như EKS của AWS ).


Dưới đây là một số ưu và nhược điểm của Kubernetes tự lưu trữ:


Ưu điểm của Kubernetes tự lưu trữ

1. Toàn quyền kiểm soát và tùy chỉnh

Với Kubernetes tự lưu trữ, bạn có toàn quyền kiểm soát cấu hình cụm, mạng và cơ sở hạ tầng. Điều này cho phép bạn tùy chỉnh và tối ưu hóa cụm theo yêu cầu cụ thể và khả năng cơ sở hạ tầng của bạn.

2. Hiệu quả chi phí

Kubernetes tự lưu trữ có thể tiết kiệm chi phí hơn, đặc biệt đối với các triển khai dài hạn, so với việc sử dụng các dịch vụ Kubernetes được quản lý thường phát sinh thêm phí. Tự lưu trữ cho phép bạn tận dụng các tài nguyên phần cứng hiện có và tránh chi phí chung cho các dịch vụ được quản lý. (và tiết kiệm rất nhiều tiền)

3. Bảo mật và Tuân thủ

Kubernetes tự lưu trữ cho phép bạn kiểm soát trực tiếp các biện pháp bảo mật, chẳng hạn như chính sách mạng, mã hóa, kiểm soát truy cập và các yêu cầu tuân thủ. Điều này cho phép bạn triển khai các phương pháp bảo mật Kubernetes tốt nhất dành riêng cho nhu cầu và tiêu chuẩn quy định của tổ chức bạn. (log4j, rung chuông nào?)

4. Phân bổ nguồn lực

Kubernetes tự lưu trữ cho phép bạn phân bổ tài nguyên riêng cho cụm của mình mà không chia sẻ chúng với những bên thuê khác. Điều này cho phép sử dụng tài nguyên tốt hơn và tránh các vấn đề về hiệu suất tiềm ẩn có thể phát sinh do tranh chấp tài nguyên trong môi trường dùng chung.


Nhược điểm của Kubernetes tự lưu trữ

1. Quản lý cơ sở hạ tầng

Kubernetes tự lưu trữ yêu cầu chuyên môn trong việc quản lý và duy trì cơ sở hạ tầng cơ bản.


Bạn chịu trách nhiệm cung cấp, định cấu hình và giám sát máy chủ, kết nối mạng, lưu trữ và các thành phần khác của cụm. Điều này có thể tốn thời gian và yêu cầu nguồn lực chuyên dụng và tuyển dụng bổ sung.

2. Khả năng mở rộng và co giãn

Thay đổi quy mô cụm Kubernetes tự lưu trữ có thể phức tạp hơn so với các dịch vụ được quản lý cung cấp khả năng thay đổi quy mô tự động.


Bạn cần lập kế hoạch và cung cấp trước các tài nguyên để xử lý tải cao điểm và việc thêm hoặc xóa các nút có thể yêu cầu can thiệp thủ công.

3. Độ phức tạp trong hoạt động

Kubernetes tự lưu trữ giới thiệu các hoạt động phức tạp bổ sung, chẳng hạn như quản lý nâng cấp, bản vá, sao lưu và tính sẵn sàng cao. Các tác vụ này yêu cầu lập kế hoạch, thử nghiệm và phối hợp cẩn thận để đảm bảo giảm thiểu sự gián đoạn đối với cụm và ứng dụng, nếu không sẽ làm tăng thời gian ngừng sản xuất.


Kubeadm là gì?

Kubeadm là một công cụ dòng lệnh giúp đơn giản hóa quy trình thiết lập và quản lý cụm Kubernetes, giúp các thành viên cộng đồng kỹ thuật dễ dàng đi sâu vào thế giới điều phối vùng chứa.


Hãy coi kubeadm là trợ lý đáng tin cậy của bạn, người đảm nhận các chi tiết cơ bản của thiết lập cụm , cho phép bạn tập trung vào bức tranh toàn cảnh hơn.


Nó tự động hóa các tác vụ phức tạp như định cấu hình các thành phần thiết yếu, tạo chứng chỉ và đảm bảo cụm của bạn tuân theo các phương pháp hay nhất.


Các ví dụ về Kubeadm

Hãy cùng xem qua một số ví dụ và lệnh để hiểu rõ hơn về cách thức hoạt động kubeadm .

1. Khởi tạo mặt phẳng điều khiển

Ví dụ Lệnh #1: ` kubeadm init

Đây là cách sử dụng lệnh trên.

kubeadm init --pod-network-cidr=192.168.0.0/16


Lệnh này khởi tạo mặt phẳng điều khiển trên nút chủ. Nó tạo các chứng chỉ cần thiết, thiết lập máy chủ API, v.v. và các thành phần quan trọng khác.


Cờ ` --pod-network-cidr ` chỉ định dải địa chỉ IP cho mạng pod trong cụm.

2. Tham gia Worker Nodes

Ví dụ Lệnh #2: ` kubeadm join


kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


Lệnh này tham gia một nút công nhân vào cụm. Bạn cần cung cấp IP và cổng của nút chính, cùng với hàm băm chứng chỉ CA mã thông báo và mã thông báo khám phá, có thể nhận được trong quá trình khởi tạo mặt phẳng điều khiển.

3. Đặt lại cụm

Lệnh: ` kubeadm reset


kubeadm reset --force


Lệnh này đặt lại một cụm, loại bỏ tất cả các thành phần đã cài đặt và đưa nút trở về trạng thái trước Kubernetes. Cờ ` --force ` đảm bảo thiết lập lại hoàn toàn.

4. Nâng cấp phiên bản Kubernetes

Lệnh: ` kubeadm upgrade


Đây là cách sử dụng lệnh kubeadm ở trên.

kubeadm upgrade plan


Lệnh này giúp bạn nâng cấp phiên bản Kubernetes của mình. Nó kiểm tra các bản nâng cấp có sẵn và đưa ra kế hoạch nâng cấp các thành phần của mặt phẳng điều khiển.


Top 20 lệnh Kubeadm phổ biến nhất

Dưới đây là danh sách các lệnh kubeadm thường được sử dụng, theo sau là một ví dụ có liên quan.

1. khởi tạo kubeadm

kubeadm init --pod-network-cidr=192.168.0.0/16


Trong ví dụ trên, lệnh khởi tạo mặt phẳng điều khiển trên nút chính, tạo chứng chỉ và thiết lập các thành phần thiết yếu. Cờ ` --pod-network-cidr ` chỉ định dải địa chỉ IP của mạng nhóm.

2. kubeadm tham gia

kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>


Lệnh trên kết hợp một nút worker với cụm bằng cách kết nối với nút chính được chỉ định bằng cách sử dụng hàm băm chứng chỉ CA mã thông báo và mã thông báo khám phá.

3. thiết lập lại kubeadm

kubeadm reset --force


Lệnh trên đặt lại một nút, loại bỏ tất cả các thành phần Kubernetes đã cài đặt và đưa nó về trạng thái trước Kubernetes. Cờ ` --force ` đảm bảo thiết lập lại hoàn toàn.

4. nâng cấp kubeadm

kubeadm upgrade plan


Lệnh trên cung cấp một kế hoạch nâng cấp, kiểm tra các bản nâng cấp có sẵn cho các thành phần của mặt phẳng điều khiển.

5. mã thông báo kubeadm

kubeadm token create


Lệnh kubeadm này quản lý các mã thông báo xác thực được sử dụng để nối các nút vào cụm. Ví dụ này tạo mã thông báo mới.

6. cấu hình kubeadm

kubeadm config print init-defaults


Lệnh trên quản lý các tệp cấu hình kubeadm. Ví dụ này in cấu hình mặc định để khởi tạo cụm.

7. phiên bản kubeadm

kubeadm version


Lệnh trên in phiên bản của kubeadm.

8. hình ảnh cấu hình kubeadm

kubeadm config images list


Sử dụng lệnh trên để in danh sách các hình ảnh cần thiết cho phiên bản Kubernetes hiện tại.

Lệnh này giúp bạn xác định hình ảnh vùng chứa cần thiết để quản lý hình ảnh vùng chứa thủ công. Thay thế ` list ` bằng ` pull ` để kéo hình ảnh cấu hình.

9. tạo mã thông báo kubeadm

kubeadm token create --print-join-command


Lệnh trên tạo một mã thông báo mới có thể được sử dụng để nối các nút vào cụm. Cờ ` --print-join-command ` hiển thị lệnh nối sẽ được thực thi trên các nút worker.

10. danh sách mã thông báo kubeadm

kubeadm token list


Lệnh trên liệt kê các mã thông báo đang hoạt động cùng với thời gian tạo và hết hạn liên quan của chúng.

11. xóa mã thông báo kubeadm

kubeadm token delete <token_value>


Sử dụng lệnh trên để xóa một mã thông báo cụ thể, khiến nó không sử dụng được cho các nút tham gia.

12. di chuyển cấu hình kubeadm

kubeadm config migrate --old-config kubeadm.conf --new-config kubeadm.yaml


Lệnh trên di chuyển tệp cấu hình từ phiên bản cũ sang phiên bản mới, cho phép nâng cấp cấu hình trơn tru.

13. chứng chỉ kubeadm


kubeadm certs check-expirationkubeadm certs certificate-key


Các lệnh trên kiểm tra trạng thái hết hạn của chứng chỉ được sử dụng bởi các thành phần của mặt phẳng điều khiển và đưa ra cảnh báo cho các chứng chỉ sắp hết hạn. Lệnh thứ hai tạo khóa.

14. giai đoạn khởi tạo kubeadm

kubeadm init phase kubelet-start --config config.yaml


Từ tệp InitConfiguration, lệnh trên tạo tệp môi trường động với các cờ kubelet.

15. giai đoạn tham gia kubeadm

kubeadm join phase control-plane-prepare


Lệnh trên thực thi một giai đoạn cụ thể trong quá trình nối nút worker với mặt phẳng điều khiển. Ví dụ này chạy giai đoạn ` chuẩn bị cho mặt phẳng điều khiển `, giai đoạn chuẩn bị nút worker trở thành nút mặt phẳng điều khiển.

16. kubeadm kubeconfig

kubeadm kubeconfig user --client-name=foo --config=bar

Sử dụng lệnh trên để xuất tệp kubeconfig cho người dùng bổ sung có tên foo bằng cách sử dụng thanh tệp cấu hình kubeadm.

17. giai đoạn thiết lập lại kubeadm

kubeadm reset phase preflight


Lệnh trên thực hiện một giai đoạn cụ thể trong quá trình thiết lập lại một nút. Ví dụ này chạy giai đoạn ` preflight , giai đoạn này thực hiện kiểm tra đặt lại trước trước khi xóa các thành phần Kubernetes.

18. kế hoạch nâng cấp kubeadm

kubeadm upgrade plan


Lệnh trên hiển thị kế hoạch nâng cấp cho các thành phần của mặt phẳng điều khiển, hiển thị các phiên bản có sẵn và mọi hành động cần thiết để nâng cấp.

19. áp dụng nâng cấp kubeadm

kubeadm upgrade apply v1.22.2


Sử dụng lệnh trên để áp dụng một phiên bản Kubernetes cụ thể cho mặt phẳng điều khiển, nâng cấp các thành phần của nó lên phiên bản đã chỉ định.

20. nút nâng cấp kubeadm

kubeadm upgrade node


Lệnh này nâng cấp kubeletkube-proxy trên nút worker để phù hợp với phiên bản của mặt phẳng điều khiển.


Cách tạo cụm Kubernetes bằng Kubeadm

Để tạo cụm Kubernetes bằng kubeadm , bạn cần đảm bảo rằng môi trường của bạn đáp ứng các điều kiện tiên quyết cần thiết.

Dưới đây là hướng dẫn từng bước về cách tạo cụm Kubernetes bằng kubeadm , bao gồm các điều kiện tiên quyết, hướng dẫn chi tiết, ví dụ và lệnh.

điều kiện tiên quyết

  1. Hai hoặc nhiều máy chạy bản phân phối Linux được hỗ trợ (ví dụ: Ubuntu, CentOS hoặc Red Hat Enterprise Linux) đã cài đặt Docker.

  2. Nên sử dụng RAM 2 GiB trở lên cho mỗi máy; bất cứ điều gì ít hơn để lại chỗ hạn chế cho phần mềm của bạn.

  3. Vô hiệu hóa không gian trao đổi trên tất cả các máy.

  4. Thiết lập tên máy chủ, địa chỉ MAC và product_uuid duy nhất cho mỗi máy.

  5. Tất cả các máy trong cụm đều có kết nối mạng hoàn chỉnh. Bạn có thể kết nối với mạng công cộng hoặc mạng riêng.

  6. Mở các cổng cần thiết (ví dụ: 6443, 2379-2380, 10250, 10251, 10252) trong tường lửa của bạn.


Bước 1: Cài đặt Docker và Kubernetes Tools

Trên tất cả các máy, hãy cài đặt Docker bằng hướng dẫn Docker cho bản phân phối Linux của bạn.

Cài đặt ` kubeadm `, ` kubelet ` và ` kubectl ` bằng các lệnh sau trên tất cả các máy:


sudo apt-get update && sudo apt-get install -y apt-transport-https curlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl


Bước 2: Khởi tạo mặt phẳng điều khiển Kubernetes

Trên nút mặt phẳng điều khiển mong muốn, hãy khởi tạo cụm bằng lệnh kubeadm init `:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16


Lưu ý: Điều chỉnh cờ ` --pod-network-cidr ` nếu bạn định sử dụng mạng nhóm khác.

Sau khi quá trình khởi tạo hoàn tất, lệnh sẽ xuất lệnh ` kubeadm join với mã thông báo và hàm băm. Đảm bảo sao chép lệnh này vì nó sẽ được sử dụng để nối các nút worker vào cụm sau này.


Bước 3: Thiết lập cấu hình cụm cho kubectl

Trên nút mặt phẳng điều khiển, tạo thư mục cần thiết và sao chép tệp kubeconfig :


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


Bước 4: Triển khai Addon mạng Pod

Trên nút mặt phẳng điều khiển, hãy triển khai tiện ích bổ sung mạng nhóm. Ví dụ: bạn có thể sử dụng Calico:

kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml


Bước 5: Tham gia các nút công nhân trong cụm

Trên mỗi nút worker, hãy chạy lệnh ` kubeadm join ` được tạo trong quá trình khởi tạo mặt phẳng điều khiển (từ Bước 2). Lệnh này thường trông như thế này:

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Bước 6: Xác minh cụm

Trên nút mặt phẳng điều khiển, kiểm tra trạng thái của cụm bằng ` kubectl `:

kubectl get nodes


Chúc mừng! Bạn đã tạo thành công cụm Kubernetes bằng ` kubeadm `. Bây giờ bạn có thể triển khai và quản lý các ứng dụng của mình trên cụm.


Cách quản lý các thành phần cụm với kubeadm

Để quản lý các thành phần của cụm bằng kubeadm , bạn có thể sử dụng các lệnh khác nhau để thực hiện các tác vụ như nâng cấp cụm, thêm hoặc xóa các nút và quản lý mặt phẳng điều khiển.

Dưới đây là hướng dẫn từng bước về cách quản lý các thành phần cụm bằng kubeadm , bao gồm các lệnh chi tiết với nhận xét mã.


Bước 1: Nâng cấp cụm

Kiểm tra phiên bản hiện tại của Kubernetes trên nút mặt phẳng điều khiển:

kubectl version --short


Nâng cấp ` kubeadm `, ` kubelet ` và ` kubectl ` trên tất cả các nút để phù hợp với phiên bản Kubernetes mong muốn:

# Upgrade kubeadmsudo apt-get updatesudo apt-get install -y kubeadm=<desired_version># Upgrade kubelet and kubectlsudo apt-get updatesudo apt-get install -y kubelet=<desired_version> kubectl=<desired_version># Hold the packages to prevent automatic upgradessudo apt-mark hold kubeadm kubelet kubectl


Trên nút mặt phẳng điều khiển, bắt đầu quá trình nâng cấp:

sudo kubeadm upgrade plansudo kubeadm upgrade apply <desired_version>

Upgrade the kubelet configuration on all nodes:

sudo kubeadm upgrade node


Xác minh trạng thái nâng cấp:

kubectl get nodeskubectl version --short


Bước 2: Thêm nút công nhân

Trên nút mặt phẳng điều khiển, tạo lệnh tham gia kubeadm mới:

sudo kubeadm token create --print-join-command


Trên (các) nút worker, hãy chạy lệnh tham gia kubeadm để nối chúng vào cụm:

sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>


Xác minh trạng thái của các nút công nhân mới:

kubectl get nodes


Bước 3: Loại bỏ các nút

Xả nút bạn muốn xóa:

kubectl drain <node_name> --ignore-daemonsets


Trên nút mặt phẳng điều khiển, loại bỏ nút:

sudo kubeadm reset


Trên nút mặt phẳng điều khiển, xóa nút khỏi cụm:

kubectl delete node <node_name>


Bước 4: Quản lý các thành phần của mặt phẳng điều khiển

Nâng cấp các thành phần của mặt phẳng điều khiển trên nút mặt phẳng điều khiển:

sudo apt-get update sudo apt-get install -y kubeadm=<desired_version> kubelet=<desired_version> kubectl=<desired_version> sudo kubeadm upgrade plan sudo kubeadm upgrade apply <desired_version> sudo systemctl restart kubelet


Xác minh trạng thái nâng cấp:

kubectl get nodes kubectl version --short

Drain the control plane node you want to remove:

kubectl drain <control_plane_node> --ignore-daemonsets


Trên nút mặt phẳng điều khiển, loại bỏ các thành phần của mặt phẳng điều khiển bằng cách sử dụng lệnh kubeadm sau.

sudo kubeadm reset


Trên nút mặt phẳng điều khiển, xóa nút mặt phẳng điều khiển khỏi cụm:

kubectl delete node <control_plane_node>


Lưu ý: Việc quản lý các thành phần của cụm bằng kubeadm cần thận trọng vì nó có thể ảnh hưởng đến tính ổn định và tính khả dụng của cụm. Đảm bảo bạn có kế hoạch dự phòng và làm theo tài liệu chính thức của Kubernetes để biết hướng dẫn chi tiết dành riêng cho thiết lập và yêu cầu của bạn.


Các phương pháp hay nhất của Kubeadm

Khi được sử dụng đúng mục đích, Kubeadm là một công cụ tuyệt vời. Dưới đây là ba phương pháp hay nhất cần nhớ để sử dụng công cụ thích hợp cho công việc và tận dụng tối đa kubeadm.


Chỉ sử dụng kubeadm cho các cụm sản xuất cần tự động thay đổi quy mô

Nói chung, không nên sử dụng kubeadm cho các cụm sản xuất vì nó thiếu khả năng tự động thay đổi quy mô nút và cụm. Điều này là do tính năng tự động thay đổi quy mô của nút bắt buộc phải kiểm soát cơ sở hạ tầng và phần cứng bên dưới, mà kubeadm được ủy quyền cho các công cụ khác.


Backup etcd thường xuyên

Kubeadm không có cụm multi-etcd theo mặc định để lưu trữ trạng thái cụm. Tạo bản sao lưu thường xuyên của etcd trong trường hợp xảy ra sự cố.


Theo dõi các máy/nút

Kubeadm không thể tắt nguồn máy không sử dụng.

Vì vậy, để tối ưu hóa chi phí trong cụm Kubernetes bằng cách sử dụng kubeadm , bạn sẽ cần sử dụng một giải pháp bên ngoài để theo dõi các nút worker và việc sử dụng tài nguyên của chúng.




Cũng được xuất bản ở đây.


Hình ảnh chính cho bài viết này được tạo bởiTrình tạo hình ảnh AI của HackerNoon thông qua dấu nhắc "thùng chứa"