Cài đặt và cấu hình Kubernetes
- K8s-master-1: 192.168.1.201
- K8s-worker-1: 192.168.1.202
- K8s-worker-2: 192.168.1.203
- Rancher-server: 192.168.1.204
- Database-server: 192.168.1.205
- Loadbalancer: 192.168.1.206
Thực hiện trên cả 3 servers
Thêm hosts
echo -e “192.168.1.201 k8s-master-1\n192.168.1.202 k8s-worker-1\n192.168.1.203 k8s-worker-2” | sudo tee -a /etc/hosts
Cập nhật và nâng cấp hệ thống
sudo apt update -y && sudo apt upgrade -y
Tạo user riêng để sử dụng cho cụm
sudo adduser devops sudo usermod -aG sudo devops cd $HOME
Tắt swap (nếu không tắt swap thì sẽ không join được cụm)
sudo swapoff -a
sudo sed -i ‘/swap.img/s/^/#/’ /etc/fstab
Cấu hình module kernel
echo -e “overlaynbr_netfilter” | sudo tee /etc/modules-load.d/containerd.conf > /dev/null
Tải module kernel
sudo modprobe overlay
sudo modprobe br_netfilter
echo “net.bridge.bridge-nf-call-ip6tables = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf
echo “net.bridge.bridge-nf-call-iptables = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf
echo “net.ipv4.ip_forward = 1” | sudo tee -a /etc/sysctl.d/kubernetes.conf
sudo sysctl –system
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
Cài đặt containerd
sudo apt update -y
sudo apt install -y containerd.io
Cấu hình containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
Khởi động containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
Thêm kho lưu trữ Kubernetes
echo “deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /” | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg –dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Cài đặt các gói Kubernetes
sudo apt update -y
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Nếu muốn reset cụm thì chạy các lệnh sau:
sudo kubeadm reset -f
sudo rm -rf /var/lib/etcd
sudo rm -rf /etc/kubernetes/manifests/*
sudo kubeadm init

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Để join worker vào cụm ta thực hiện các cấu lệnh sau trên server k8s-worker-1 và k8s-worker-2
sudo kubeadm join 192.168.1.201:6443 –token otwocf.ps7wbsqg1l575jzn \
–discovery-token-ca-cert-hash sha256:fc240b426684cb4fcfcfbb6d3f06ae5114f55db21c080e154f1bbab4a8c0dcfc
Chạy lệnh kubectl get nodes để kiểm tra trạng thái cụm. Lúc này ta thấy cụm đang notready do chưa có cấu hình network. Để cấu hình network cho cụm ta chạy lệnh dưới đây.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
Kiểm tra lại trạng thái của cụm
Có rất nhiều công cụ để có thể quản lý cụm k8s:
- Command (k9s)
- Desktop app (lens)
- Website (rancher)
Rancher là một nền tảng quản lý Kubernetes mã nguồn mở giúp các tổ chức triển khai, quản lý và vận hành các cụm Kubernetes (K8s) trong môi trường Cloud hoặc on-demand. Rancher cung cấp giao diện người dùng trực quan và các công cụ mạnh mẽ để quản lý các cluster Kubernetes và các ứng dụng chạy trên đó
Thực hiện trên server rancher
Tạo phân vùng để lưu trữ riêng cho dư liệu của rancher
sudo mkfs.ext4 -m 0 /dev/sdb
mkdir /data
echo “/dev/sdb /data ext4 defaults 0 0” | sudo tee -a /etc/fstab
mount -a
sudo df -h
Cài đặt docker và docker-compose
apt install docker.io && apt install docker-compose
Hình : Kiểm tra version docker và docker-compose
Cài đặt rancher bằng docker.
Lưu ý: cần phải kiểm tra version của rancher phù hợp với phiên bản của k8s để tránh bị lỗi.(Search keyword: rancher version matrix)
Ở đây cụm k8s của mình là version 1.30, và version mới nhất của rancher là 2.10.1 support cho version này. Nên mình sẽ cài rancher version mới nhất.
Hình : Kiểm tra version của rancher phù hợp với version của cụm
Tạo thư mục làm việc cho rancher
mkdir /projects/rancher
cd /projects/rancher
vi docker-compose.yml
version: ‘3’
services:
rancher-server:
image: rancher/rancher:v2.10.1
container_name: rancher-server
restart: unless-stopped
ports:
– “80:80”
– “443:443”
volumes:
– /data/rancher/data:/var/lib/rancher
privileged: true
Sau khi viết docker-compose file thì sẽ chạy lệnh sau để chạy container
docker-compose up -d
Kiểm tra trạng thái container đã chạy chưa
Truy cập vào trình duyệt bằng địa chỉ của rancher server
Quay lại terminal và chạy lệnh sau để lấy password của rancher.
docker logs rancher-server 2>&1 | grep “Bootstrap Password:”
Sau khi lấy được password thì nhập password để login
Thiết lập mật khẩu mới
Sau khi đăng nhập xong thì đây là giao diện của rancher
Để thêm cụm k8s vào rancher thì ta nhấn vào Import Existing
Rancher có thể quản lý được rất nhiều cụm k8s, từ cloud (AKS, EKS, GKE) hoặc On-Premise, ở đây là cụm on-premise nên sẽ chọn Generic
Nhập tên Cluster và nhấn Create (ở đây cluster của mình cho dự án ecommerce)
Tiếp theo ta sẽ copy câu lệnh sau chạy trên node master để tiến hành import cụm vào rancher.
Chú ý: nếu domain có xác thực certificate thì ta có thể chọn dòng đầu tiên. Trong trường hợp domain là self-sign certificate thì chọn dòng thứ 2
Sau khi chạy câu lệnh trên 1 lúc thì cluster đã chuyển từ pending sang thành waiting, lúc này thì ta chỉ cần chờ 1 chút để cụm được add vào.
Sau 1 lúc thì cụm đã được thêm thành công vào và ở trạng thái active
Nhấn vào cluster để xem thông tin các tài nguyên trong cụm



















