Triển khai Kubernetes Cluster trên Ubuntu 20.04
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