วิธีติดตั้ง Kubernetes Cluster บน Cloud VPS ด้วย kubeadm แบบ Step-by-Step

Kubernetes (K8s) เป็นแพลตฟอร์มการจัดการคอนเทนเนอร์ที่ทรงพลังและยอดนิยม โดยการติดตั้ง Kubernetes Cluster บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง นั้น kubeadm เป็นเครื่องมือที่นิยมใช้มากที่สุดสำหรับการตั้งค่าทั้งแบบ Single Node และ Multi-Node Cluster บทความนี้จะแนะนำวิธีติดตั้ง Kubernetes Cluster บน Cloud VPS ด้วย kubeadm แบบครบถ้วน Step-by-Step เพื่อให้คุณสามารถสร้าง Kubernetes Cluster ที่พร้อมใช้งานได้อย่างมีประสิทธิภาพ

เขตพื้นที่ก่อนการติดตั้ง Kubernetes

ก่อนเริ่มติดตั้ง Kubernetes Cluster บน Cloud VPS ให้แน่ใจว่าคุณได้เตรียมพร้อมตามข้อกำหนดต่อไปนี้:

  • Cloud VPS: ระบบ Linux สมัยใหม่ (Ubuntu 20.04 LTS / CentOS 7 ขึ้นไป)
  • CPU: อย่างน้อย 2 CPU cores (Master Node) หรือ 1 CPU (Worker Node)
  • Memory: อย่างน้อย 2 GB RAM (Master) หรือ 1 GB (Worker)
  • Disk Space: อย่างน้อย 20 GB สำหรับ Master Node
  • Network: ค่าทะเบียนสากล IP และการเชื่อมต่อเน็ตเวิร์กที่ดี
  • Permissions: สิทธิ์ sudo หรือ root access

หลักการทำงานของ kubeadm

kubeadm เป็นเครื่องมือที่ช่วยลดความซับซ้อนของการติดตั้ง Kubernetes โดยการจัดการการตั้งค่าใบรับรองและการเริ่มต้นส่วนประกอบต่างๆ ของ Kubernetes อัตโนมัติ kubeadm ใช้ containerd หรือ Docker ในการจัดการคอนเทนเนอร์ของส่วนประกอบ Control Plane

ขั้นตอนที่ 1: เตรียมการ Cloud VPS

อัปเดตระบบ Linux บน Cloud VPS ของคุณ:

sudo apt-get update
sudo apt-get upgrade -y

ปิดใช้งาน Swap (Kubernetes ต้องการให้ Swap ปิดใช้งาน):

sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

ขั้นตอนที่ 2: ติดตั้ง Container Runtime (containerd)

Kubernetes ต้องการ Container Runtime เพื่อจัดการคอนเทนเนอร์ โดยนี่เราจะใช้ containerd:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y containerd.io

ตั้งค่า containerd:

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd

ขั้นตอนที่ 3: ติดตั้ง kubelet, kubeadm, และ kubectl

ติดตั้งปลั๊กอิน Kubernetes Google Cloud Signing Key:

curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

ติดตั้ง kubelet, kubeadm, และ kubectl:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

ขั้นตอนที่ 4: เตรียม Linux Kernel Modules

Kubernetes ต้องการโมดูล Kernel ที่ระบุ:

sudo modprobe overlay
sudo modprobe br_netfilter

cat <

ขั้นตอนที่ 5: เตรียม Network ของ Cloud VPS

ตรวจสอบว่า Kubernetes ports ไม่ถูกบล็อก เปิดพอร์ตต่อไปนี้บน Cloud VPS:

  • Master Node: 6443 (API Server), 10250 (kubelet), 2379-2380 (etcd)
  • Worker Nodes: 10250 (kubelet), 30000-32767 (NodePort Services)

ขั้นตอนที่ 6: เริ่มต้น Master Node ด้วย kubeadm init

เริ่มต้น Kubernetes Master Node:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=YOUR_MASTER_IP

เมื่อการเริ่มต้นสำเร็จ คุณจะได้รับคำสั่งต่อไปนี้เพื่อเข้าถึง Kubernetes:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

ขั้นตอนที่ 7: ติดตั้ง Network Plugin (Flannel)

Kubernetes ต้องการ Network Plugin เพื่อให้ Pods สื่อสารกันได้ ใช้ Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

ขั้นตอนที่ 8: ตรวจสอบ Master Node

ตรวจสอบว่า Master Node ทำงานได้:

kubectl get nodes
kubectl get pods -n kube-system

ขั้นตอนที่ 9: เพิ่ม Worker Nodes (ถ้าต้องการ)

บน Master Node ให้ดึง token สำหรับเพิ่ม Worker Nodes:

kubeadm token create --print-join-command

บน Worker Node ให้รันคำสั่ง join ที่ได้รับจาก Master Node:

sudo kubeadm join MASTER_IP:6443 --token YOUR_TOKEN --discovery-token-ca-cert-hash sha256:YOUR_HASH

การแก้ไขปัญหาทั่วไป

หากพบปัญหาระหว่างการติดตั้ง ให้ลองข้อแนะนำต่อไปนี้:

  • ปัญหา: Nodes ไม่เป็น Ready - ตรวจสอบว่า Network Plugin ติดตั้งเสร็จแล้ว
  • ปัญหา: kubelet ไม่เริ่ม - ตรวจสอบ logs: sudo journalctl -u kubelet -n 50
  • ปัญหา: Connection refused - ตรวจสอบ firewall rules บน Cloud VPS

สรุป

การติดตั้ง Kubernetes Cluster บน Cloud VPS ด้วย kubeadm นั้นตรงไปตรงมา เพียงทำตามขั้นตอนข้างต้น คุณจะได้ Kubernetes Cluster ที่พร้อมใช้งาน ซึ่งสามารถใช้จัดการแอปพลิเคชัน containerized ของคุณบน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ได้อย่างมีประสิทธิภาพและปลอดภัย