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 ของ ผู้ให้บริการโฮสติ้ง ได้อย่างมีประสิทธิภาพและปลอดภัย
