Triển khai Kubernetes Cluster trên Ubuntu 20.04

Tác giả: 20/11/2024

Requirement

 

Master 1: Docker + Master node (RAM >=3GB + CP 4 + Disk >=30GB: 10.0.0.10 – Ubuntu 20.04
Node 1: Docker + Node worker 1 ( RAM 2GB + CPU 1 + Disk 20GB): 10.0.0.20 – Ubuntu 20.04
Node 2: Docker + Node worker 2 ( RAM 2GB + CPU 1 + Disk 20GB): 10.0.0.30 – Ubuntu 20.04

Bước 1 : Cài đặt docker trên cả 3 server 1 master và 2 node

 

sudo apt-get update
sudo apt-get install docker.io -y
docker --version
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

Bước 2: Update và cài đặt các phần cơ bản trên 3 server

apt-get update -y && apt-get upgrade -y
apt-get -y install -y vim curl wget

Tắt tính năng swap

swapoff -a
Kiểm tra trong /etc/fstab nếu mục swap chưa # thì comment lại

Đổi tên hostname thành

Master thành k8s-master
Node 1 thành k8s-node1
Node 2 thành k8s-node2

Add host 3 server này vào file host

vi /etc/hosts
thêm vào 3 dòng:

10.0.0.10 master  
10.0.0.20 k8s-node1  
10.0.0.30 k8s-node2  

Bước 3: Cài đặt kubelet, kubeadm, kubectl cho 3 server trên

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get install kubeadm kubelet kubectl -y
sudo apt-mark hold kubeadm kubelet kubectl
Trong đó:
Kubelet: Thành phần chạy trên các host, có nhiệm vụ kích hoạt pods và container cho cụm cluster.
Kubeadm: Được sử dụng để thiết lập cụm cluster cho k8s.
Kubectl: Cung cấp giao diện CLI thực thi lệnh trong k8s.

Bước 4: Xây dựng node master chỉ cấu hình trên Master

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Sau khi chạy lệnh này nó sẽ sinh ra 1 dòng token đễ cho các node dùng đễ join vào master:

kubeadm join 10.0.0.10:6443 --token 8o6g6e.lwwejcb0fqcen4nf --discovery-token-ca-cert-hash sha256:a5f326f001249e8a64b5c8dfe3cc879f6e2b8010646bbc1bb3fb65118d7fd2b7

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "source <(kubectl completion bash)" >> ~/.bashrc

Bước 5: Cài đặt Pod network (thực hiện trên master)

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Lệnh kiểm tra:
kubectl get pods --all-namespaces

Bước 6: Thực hiện join cluster cho k8s-node1 và k8s-node2

Trên k8s-node1 và k8s-node2 thực hiện join bằng lệnh generate ra được ở bước 4:

kubeadm join 10.0.0.10:6443 --token 8o6g6e.lwwejcb0fqcen4nf --discovery-token-ca-cert-hash sha256:a5f326f001249e8a64b5c8dfe3cc879f6e2b8010646bbc1bb3fb65118d7fd2b7

Sau khi thực hiện join bằng lệnh này xong kiểm tra trên master xem đã ok chưa:
kubectl get nodes
Sau khi đã báo Ready ok hết rồi thì sau này mọi thao tác đều làm trên con master, các con node không còn giá trị nữa.
Lệnh kiểm tra các node nếu có lỗi:
kubectl describe pod <tên pod>
Trong đó:
<tên pod>: Tên pod cần kiểm tra
kubectl describe node <name-node>
Trong đó: <name-node> : tên node cần kiểm tra