Xin chào các mọi người. Hy vọng các bài viết có thể giúp ích cho mọi người. Bài viết này là Phần 2 – Setup Kubernetes Cluster
I. Cài đặt một Kubernetes cluster
1.1. Cài đặt Kubernetes cluster cơ bản
Đây sẽ là hướng dẫn cài đặt Kubernetes cluster với 2 node: master node và worker node. Trong trường hợp sử dụng nhiều node thì làm tương tự các bước trên worker node dưới đây.
1.1.1. Master node
Hostname: masternode
OS VMware: Ubuntu 20.04
IP: 192.168.12.13
Container runtimer: containerd
Plugin network: calico
Bước 1: Update hệ thống và cài các gói cần thiếtsudo apt -y update && sudo apt -y upgradesudo apt -y install curl apt-transport-https vim git wget gnupg2 software-properties-common ca-certificates
Bước 2: Cài đặt kubelet, kubeadm và kubectlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt -y updatesudo apt -y install kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl
kubectl version --client && kubeadm version
Bước 3: Tắt Swapsudo sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstabsudo nano /etc/fstab
sudo swapoff -asudo mount -afree -h
sudo modprobe overlaysudo modprobe br_netfilter
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
Bước 4: Cài đặt container runtime
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlaysudo modprobe br_netfilter
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt updatesudo apt install -y containerd.io
sudo su -mkdir -p /etc/containerdcontainerd config default>/etc/containerd/config.toml
sudo systemctl restart containerdsudo systemctl enable containerdsystemctl status containerd
Bước 5: Cài đặt master nodelsmod | grep br_netfiltersudo systemctl enable kubeletsudo kubeadm config images pull
sudo kubeadm init 
  --pod-network-cidr=192.168.0.0/16 
  --cri-socket unix:///run/containerd/containerd.sock 
  --apiserver-advertise-address=192.168.12.13
mkdir -p $HOME/.kubesudo cp -f /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl cluster-info
Bước 6: Cài network plugin trên master nodekubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yamlkubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
watch kubectl get pods --all-namespaces
Cho phép Pod có thể chạy trên master nodekubectl taint nodes --all node-role.kubernetes.io/control-plane-
1.1.2. Worker node
Hostname: workernode 
OS VMware: Ubuntu 20.04
IP: 192.168.12.14
Container runtimer: containerd
Bước 1 -> Bước 4: Thực hiện tương tự như master node ở trên.
Bước 5: Join vào một clusterkubeadm join 192.168.12.13:6443 --token 28tobh.qjp2ib31yr6cekzi --discovery-token-ca-cert-hash sha256:cb9cf4668ffd694c2a29dae9bf6996b88d8db981e05b4de824a4c0187d01a51c
1.2. Cài đặt cluster đặc biệt – Minikube
Cần cài đặt docker ce trước khi thực hiện các bước tiếp theo.
Hostname: host02
OS: Ubuntu 20.04 live
IP: 192.168.31.126
Bước 1: Update hệ thốngsudo apt -y update && apt -y upgrade
Bước 2: Tải gói minikubewget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo cp minikube-linux-amd64 /usr/local/bin/minikubesudo chmod 755 /usr/local/bin/minikube
Kiểm tra minikubeminikube version
Bước 3: Cài đặt plugin kubectl
Việc giao tiếp trong cluster sừ dụng plugin kubectl.curl -LO https://storage.googleapis.com/kubernetes-release/release/' curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt' /bin/linux/amd64/kubectl

sudo chmod +x ./kubectlsudo mv ./kubectl /usr/local/bin/kubectl
Kiểm tra kubectlkubectl version -o json
Quản lý minikubeminikube start/status/stop
minikube delete
minikube ssh
minikube addons list
minikube dashboard
minikube dashboard --url
1.3. Quản lý cluster đã triển khai
kubectl get nodeskubectl get nodes -o widekubectl config viewkubectl cluster-infokubectl get nodeskubectl get pod
II. Cài đặt Dashboard
Cài đặt giao diện quản lý cho cluster là một tùy chọn có thể sử dụng hoặc không. Việc theo tác trên giao diện hoàn toàn có thế thực hiện bằng các CLI. Vì vậy nếu muốn học sâu thì sử dụng CLI sẽ là phương án tốt nhất.
Trong bài viết này sẽ hướng dẫn cài đặt dashboard bằng Nodeport
Bước 1: wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yamlkubectl apply -f recommended.yaml
kubectl get svc -n kubernetes-dashboardkubectl --namespace kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'
kubectl get svc -n kubernetes-dashboard kubernetes-dashboard -o yaml
vim nodeport_dashboard_patch.yaml
spec:
  ports:
  - nodePort: 32000
    port: 443
    protocol: TCP
    targetPort: 8443
kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard --patch "$(cat nodeport_dashboard_patch.yaml)"
kubectl get deployments -n kubernetes-dashboardkubectl get pods -n kubernetes-dashboardkubectl get service -n kubernetes-dashboard
Bước 2: Truy cập link dashboard và tạo token login
Truy cập vào link https://ip:32000
Mình rất xin lỗi khi chưa thể update thêm các bài viết mới trong series về K8S vì khoảng thời gian gần đây mình khá bận do mình đã bắt đầu công việc mới với vị trí chuyên viên DevOps. Mặc dù mình đã có 4 5 bản nháp cho các bài tiếp theo trong series này. Mình chắc chắn sẽ quay lại làm tiếp series này trong thời gian sắp tới. Và để bù lại thì mình sẽ ra các bài tiếp theo liên quan đến Ansible, Terraform, AWS với góc nhìn là một chuyên viên DevOps. Mình xin cám ơn.
Nguồn: viblo.asia
