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:
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 để thiết lập tên máy chủ hệ thống thành "cplane1".
Đối với các nút worker Kubernetes, hãy chạy lệnh hostnamectl sau.
Tiếp theo, sửa đổi tệp /etc/hosts trên tất cả các máy chủ bằng lệnh sau.
Thêm cấu hình sau vào tệp. Hãy đảm bảo rằng mỗi tên máy chủ được trỏ đến đúng địa chỉ IP.
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.
Đối với mặt phẳng điều khiển Kubernetes, bạn cần mở các cổng sau:
Đối với các nút công nhân Kubernetes, bạn cần mở các cổng sau:
Trước khi thêm các quy tắc UFW, hãy đảm bảo thêm Mở ứng dụng SSH 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.
Trên nút mặt phẳng điều khiển "cplane1", hãy chạy lệnh ufw sau để mở cổng.
Trên các nút công nhân "worker1" và "worker2", hãy chạy lệnh sau lệnh ufw để mở một số cổng.
Chạy lệnh sau để bật các mô-đun hạt nhân "overlay" và "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". Thao tác này sẽ cho phép các hệ thống Linux bật các mô-đun hạt nhân trong khi khởi động hệ thống.
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.
- Cài đặt containerd làm thời gian chạy container cho Kubernetes.
- Cài đặt các gói Kubernetes như kubelet, kubeadm và kubectl.
- Cài đặt plugin mạng Flannel cho Kubernetes Pod.
- 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ủ Ubuntu 22.04 trở lên.
- Người dùng không phải root có quyền root/quản trị viên.
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:- 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. Có thể 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ủ.
- 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ả nút control-plane và nút worker.
- 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 để iptables có thể thấy lưu lượng được bắc cầu.
- 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 trình diễn 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
-----------------------------------------
cplane1 192.168.5.10 control-plane
worker1 192.168.5.25 worker node
worker2 192.168.5.26 worker node
Đối với nút control-plane, hãy chạy lệnh sau để thiết lập tên máy chủ hệ thống thành "cplane1".
Mã:
sudo hostnamectl set-hostname cplane1
Mã:
# setup hostname worker1
sudo hostnamectl set-hostname worker1
# setup hostname worker2
sudo hostnamectl set-hostname worker2
Mã:
sudo nano /etc/hosts
Mã:
192.168.5.10 cplane1
192.168.5.25 worker1
192.168.5.26 worker2
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 cplane1 -c3
ping worker1 -c3
ping worker2 -c3
Cấu hình 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ẽ thêm một số cổng vào tường lửa 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
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ả
Mã:
sudo ufw allow "OpenSSH"
sudo ufw enable
Trên nút mặt phẳng điều khiển "cplane1", hãy chạy lệnh ufw sau để mở cổng.
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
sudo ufw status
Trên các nút công nhân "worker1" và "worker2", hãy chạy lệnh sau lệnh ufw để mở một số cổng.
Mã:
sudo ufw allow 10250/tcp
sudo ufw allow 30000:32767/tcp
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 "overlay" và "br_netfilter" phải được bật trên tất cả các máy chủ. Điều này sẽ cho phép các iptbale 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
Mã:
cat