Cách thiết lập Kubernetes Cluster với Kubeadm trên Debian 11

theanh

Administrator
Nhân viên
Kubernetes hay k8s là một nền tảng mã nguồn mở cho việc điều phối container tự động hóa việc triển khai, quản lý và mở rộng quy mô các ứng dụng được chứa trong container. Kubernetes là một điều phối container do Google tạo ra và hiện đã trở thành một dự án mã nguồn mở và trở thành tiêu chuẩn cho các nền tảng triển khai ứng dụng và điện toán hiện đại.

Kubernetes là giải pháp cho kỷ nguyên triển khai container hiện đại. Nó cung cấp khả năng khám phá dịch vụ và cân bằng tải, điều phối lưu trữ, triển khai và khôi phục tự động, dịch vụ tự phục hồi, quản lý bí mật và cấu hình. Kubernetes cho phép phát triển đám mây gốc tiết kiệm chi phí.

Trong hướng dẫn này, bạn sẽ thiết lập Kubernetes Cluster bằng cách:
  • Thiết lập hệ thống, bao gồm - thiết lập tệp /etc/hosts, bật mô-đun hạt nhân và tắt SWAP.
  • Thiết lập tường lửa UFW bằng cách thêm một số cổng cần thiết cho Kubernetes và CNI Plugin (Calico).
  • Cài đặt CRI-O làm thời gian chạy container cho Kubernetes.
  • Cài đặt các gói Kubernetes như kubelet, kubeadm và kubectl.
  • Khởi tạo một nút mặt phẳng điều khiển và thêm hai nút công nhân.

Điều kiện tiên quyết​

Để hoàn thành hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Ba máy chủ Debian 11 trở lên.
  • Người dùng không phải root có root/quản trị viên privileges.

Thiết lập hệ thống​

Trước khi bắt đầu cài đặt bất kỳ gói nào để triển khai Kubernetes, bạn sẽ cần thiết lập tất cả các hệ thống của mình theo yêu cầu để triển khai Kubernetes. Điều này bao gồm các cấu hình sau:
  1. Thiết lập tệp /etc/hosts chính xác: Mỗi tên máy chủ phải được phân giải thành địa chỉ IP chính xác. Điều này có thể được thực hiện theo nhiều cách, nhưng cách dễ nhất và đơn giản nhất là sử dụng tệp /etc/hosts trên tất cả các máy chủ.
  2. Thiết lập tường lửa UFW: Đối với môi trường sản xuất, bạn luôn nên bật tường lửa trên cả mặt phẳng điều khiển và nút công nhân. Bạn sẽ thiết lập tường lửa UFW cho mặt phẳng điều khiển Kubernetes, nút công nhân và plugin CNI Calico.
  3. Bật mô-đun hạt nhân: Kubernetes yêu cầu một số mô-đun hạt nhân trên hệ thống Linux phải được bật. Mô-đun hạt nhân "overlay" và "br_netfilter" là bắt buộc để cho phép iptables thấy lưu lượng được bắc cầu.
  4. Tắt SWAP: Điều này là bắt buộc, bạn phải tắt SWAP trên tất cả các nút Kubernetes, cả nút control-plane và nút worker. Nếu không, dịch vụ kubelet sẽ chạy với các vấn đề.

Thiết lập tệp /etc/hosts​

Trong bước đầu tiên này, bạn sẽ thiết lập tên máy chủ hệ thống và tệp /etc/hosts trên tất cả các máy chủ của mình. Đối với bản demo này, chúng tôi sẽ sử dụng các máy chủ sau.
Mã:
Địa chỉ IP của tên máy chủ được sử dụng làm
-----------------------------------------
k8s-master 192.168.5.10 control-plane
k8s-worker1 192.168.5.115 worker node
k8s-worker2 192.168.5.116 worker node
Chạy lệnh hostnamectl sau đây để thiết lập tên máy chủ hệ thống trên mỗi máy chủ.

Đối với nút control-plane, hãy chạy lệnh sau đây để thiết lập tên máy chủ hệ thống đến "k8s-master".
Mã:
sudo hostnamectl set-hostname k8s-master
Đối với các nút công nhân Kubernetes, hãy chạy lệnh hostnamectl sau.
Mã:
# setup hostname k8s-worker1
sudo hostnamectl set-hostname k8s-worker1

# setup hostname k8s-worker2
sudo hostnamectl set-hostname k8s-worker2
Tiếp theo, chỉnh sửa tệp /etc/hosts trên tất cả các máy chủ bằng lệnh sau.
Mã:
sudo nano /etc/hosts
Thêm cấu hình sau vào tệp. Hãy đảm bảo mỗi tên máy chủ được trỏ đến đúng địa chỉ IP.
Mã:
192.168.5.10 k8s-master
192.168.5.115 k8s-worker1
192.168.5.116 k8s-worker2
Lưu và đóng tệp khi bạn hoàn tất.

Cuối cùng, nếu bạn chạy lệnh ping đối với mỗi tên máy chủ, bạn sẽ được trỏ đến đúng địa chỉ IP như được xác định trong tệp /etc/hosts.
Mã:
ping k8s-master -c3
ping k8s-worker1
ping k8s-worker2 -c3

Thiết lập Tường lửa UFW​

Kubernetes yêu cầu một số cổng phải được mở trên tất cả các hệ thống của bạn. Trên hệ thống Ubuntu mặc định, tường lửa UFW được sử dụng làm tường lửa mặc định. Bạn sẽ cài đặt tường lửa UFW trên tất cả các hệ thống Debian của mình và thêm một số quy tắc UFW để triển khai Kubernetes.

Đối với mặt phẳng điều khiển Kubernetes, bạn cần mở các cổng sau:
Mã:
Giao thức Hướng Cổng Phạm vi Mục đích Được sử dụng Bởi
--------------------------------------------------
TCP Inbound 6443 Kubernetes API server Tất cả
TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 10259 kube-scheduler Self
TCP Inbound 10257 kube-controller-manager Self
Đối với các nút công nhân Kubernetes, bạn cần mở các cổng sau:
Mã:
Giao thức Hướng Cổng Phạm vi Mục đích Được sử dụng Bởi
--------------------------------------------------
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 30000-32767 NodePort Services† Tất cả
Trong ví dụ này, chúng tôi sẽ sử dụng Calico làm CNI (Giao diện mạng Container). Vì vậy, bạn sẽ mở một số cổng bổ sung bên dưới:
Mã:
Giao thức Hướng Cổng Phạm vi Mục đích Được sử dụng bởi
----------------------------------------------------
TCP Bidirectional 179 Calico networking (BGP)
UDP Bidirectional 4789 Calico networking with VXLAN enabled
TCP Incoming 2379 etcd datastore
UDP Bidirectional 4789 flannel networking (VXLAN)
Cài đặt gói UFW vào máy chủ Debian của bạn bằng lệnh apt sau. Nhập Y để xác nhận cài đặt và nhấn ENTER, quá trình cài đặt sẽ bắt đầu.
Mã:
sudo apt install ufw


Tiếp theo, thêm ứng dụng OpenSSH vào tường lửa của bạn bằng lệnh bên dưới. Sau đó, bật tường lửa UFW. Khi được nhắc xác nhận, hãy nhập "y" để bật và chạy tường lửa UFW.
Mã:
sudo ufw allow "OpenSSH"
sudo ufw enable


Trên nút mặt phẳng điều khiển "k8s-master", hãy chạy lệnh ufw sau để mở cổng. Sau đó, hãy kiểm tra và xác minh các quy tắc UFW.

Các quy tắc tường lửa cho mặt phẳng điều khiển Kubernetes.
Mã:
sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10259/tcp
sudo ufw allow 10257/tcp
Các quy tắc tường lửa cho plugin Calico CNI.
Mã:
sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 4789/tcp
sudo ufw allow 2379/tcp

sudo ufw status


Trên các nút công nhân "k8s-worker1" và "k8s-worker2", hãy chạy lệnh ufw sau để mở một số cổng. Sau đó, hãy kiểm tra các quy tắc tường lửa UFW.

Quy tắc tường lửa cho các nút công nhân Kubernetes.
Mã:
sudo ufw allow 10250/tcp
sudo ufw allow 30000:32767/tcp
Quy tắc tường lửa cho Calico trên các nút công nhân Kubernetes.
Mã:
sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 4789/tcp
sudo ufw allow 2379/tcp
Mã:
sudo ufw status

Bật Mô-đun Hạt nhân và Tắt SWAP​

Kubernetes yêu cầu các mô-đun hạt nhân "lớp phủ" và "br_netfilter" được bật trên tất cả các máy chủ. Điều này sẽ cho phép các iptbales thấy lưu lượng được bắc cầu. Ngoài ra, bạn sẽ cần bật chuyển tiếp cổng và tắt SWAP.

Chạy lệnh sau để bật các mô-đun hạt nhân "overlay" và "br_netfilter".
Mã:
sudo modprobe overlay
sudo modprobe br_netfilter
Để làm cho nó vĩnh viễn, hãy tạo tệp cấu hình thành "/etc/modules-load.d/k8s.conf" bằng lệnh bên dưới. Điều này sẽ cho phép các hệ thống Linux bật các mô-đun hạt nhân trong quá trình khởi động hệ thống.
Mã:
cat
 
Back
Bên trên