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 (K8s). Kubernetes 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 để một cách dễ dàng. sắp xếp các thùng chứa 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ề , Kubernetes tự lưu trữ (K8s) chính xác là gì? kubeadm 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 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?) các phương pháp bảo mật Kubernetes tốt nhất 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 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 , cho phép bạn tập trung vào bức tranh toàn cảnh hơn. kubeadm thiết lập cụm 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ờ ` ` chỉ định dải địa chỉ IP cho mạng pod trong cụm. --pod-network-cidr 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ờ ` ` đảm bảo thiết lập lại hoàn toàn. --force 4. Nâng cấp phiên bản Kubernetes Lệnh: ` kubeadm upgrade Đây là cách sử dụng lệnh ở trên. kubeadm 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ờ ` ` chỉ định dải địa chỉ IP của mạng nhóm. --pod-network-cidr 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ờ ` ` đảm bảo thiết lập lại hoàn toàn. --force 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 cần thiết để quản lý hình ảnh vùng chứa thủ công. Thay thế ` ` bằng ` ` để kéo hình ảnh cấu hình. hình ảnh vùng chứa list pull 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ờ ` ` hiển thị lệnh nối sẽ được thực thi trên các nút worker. --print-join-command 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 ` `, giai đoạn chuẩn bị nút worker trở thành nút mặt phẳng điều khiển. chuẩn bị cho 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 cho người dùng bổ sung có tên bằng cách sử dụng thanh tệp cấu hình kubeadm. kubeconfig foo 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 ` , 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. preflight 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 và trên nút worker để phù hợp với phiên bản của mặt phẳng điều khiển. kubelet kube-proxy Cách tạo cụm Kubernetes bằng Kubeadm Để tạo cụm Kubernetes bằng , 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. kubeadm Dưới đây là hướng dẫn từng bước về cách tạo cụm Kubernetes bằng , 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. kubeadm điều kiện tiên quyết 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. 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. Vô hiệu hóa không gian trao đổi trên tất cả các máy. Thiết lập tên máy chủ, địa chỉ MAC và product_uuid duy nhất cho mỗi máy. 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. 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 bằng cho bản phân phối Linux của bạn. Docker hướng dẫn Docker Cài đặt ` `, ` ` và ` ` bằng các lệnh sau trên tất cả các máy: kubeadm kubelet kubectl 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ờ ` ` nếu bạn định sử dụng mạng nhóm khác. --pod-network-cidr Sau khi quá trình khởi tạo hoàn tất, lệnh sẽ xuất lệnh ` 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. kubeadm join 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 ` ` đượ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: kubeadm join 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 ` `. 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. kubeadm 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 , 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. kubeadm 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 , bao gồm các lệnh chi tiết với nhận xét mã. kubeadm 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 ` `, ` ` và ` ` trên tất cả các nút để phù hợp với phiên bản Kubernetes mong muốn: kubeadm kubelet kubectl # 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 mới: tham gia kubeadm sudo kubeadm token create --print-join-command Trên (các) nút worker, hãy chạy lệnh để nối chúng vào cụm: tham gia kubeadm 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 sau. kubeadm 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 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. kubeadm 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, để bằng cách sử dụng , 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. tối ưu hóa chi phí trong cụm Kubernetes kubeadm Cũng được xuất bản ở đây. Hình ảnh chính cho bài viết này được tạo bởi thông qua dấu nhắc "thùng chứa" Trình tạo hình ảnh AI của HackerNoon