TurterDev.com
  • Welcome
  • พื้นฐานคำสั่ง Linux Command
    • Linux Command
    • Linux Command (ต่อ)
    • ใช้งาน VI และ VIM
    • Shell script
    • Vagrant
  • การเขียนโปรแกรมเชิงวัตถุ OOP
    • การเขียนโปรแกรมเชิงวัตถุ
      • เริ่มต้นเขียนโปรแกรมเชิงวัตถุด้วย Javascript
  • Git
    • คำสั่งสำหรับใช้งาน Git
    • Branch,Merge,Stash
    • Remote Repository
  • คำสั่งใช้งาน Docker
    • 🐳Docker
      • Docker Command
  • Kubernetes
    • Kubernetes (K8s)
      • Install Cilium on kubernetes (เปลี่ยนจาก Calico เป็น Cilium บน K8s)
      • Install Kubernetes on Ubuntu 24.04 LTS (Kube-VIP)
      • How to Install Kubernetes Cluster on CentOS 7
  • Etc
    • Kubernetes (K8s)
      • สรุปการพัฒนา Application แบบ The Twelve-Factor แบบสั้นๆง่ายๆ
  • Website
  • Facebook
  • Instagram
Powered by GitBook
On this page
  1. Kubernetes
  2. Kubernetes (K8s)

Install Kubernetes on Ubuntu 24.04 LTS (Kube-VIP)

PreviousInstall Cilium on kubernetes (เปลี่ยนจาก Calico เป็น Cilium บน K8s)NextHow to Install Kubernetes Cluster on CentOS 7

Last updated 21 days ago

สวัสดีครับทุกคน วันนี้เราก็จะมาลองติดตั้ง Kubernetes กันครับ ก่อนอื่นเลย ทุกคนต้องเตรียม Resource ที่จะใช้ติดตั้งให้พร้อมก่อนนะครับ OK ถ้าพร้อมแล้วไปลุยกันเล๊ยยย!! เอ้ๆ ลืมอีกอย่าง ผมจะติดตั้งโดยใช้ Kube-VIP สำหรับไว้รองรับการทำ Mutiple Control-Plane (HA) ไว้ด้วย เริ่มกันเลยครับ

วิธีการติดตั้ง #Set hostname $ sudo hostnamectl set-hostname “k8sc1”

ซึ่งผมจะทำดังนี้ Control-Plane ประกอบด้วย – k8sc1 – k8sc2 – k8sc3 Worker node ประกอบด้วย – k8sw1 – k8sw2 – k8sw3 – k8sw4 – k8sw5

#Install dependencies $ sudo apt update && sudo apt upgrade –y $ sudo apt install apt–transport–https curl –y

#Install containerd $ sudo apt install containerd -y

#Configure containerd $ sudo mkdir -p /etc/containerd $ containerd config default | sudo tee /etc/containerd/config.toml > /dev/null

$ sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/’ /etc/containerd/config.toml

$ sudo systemctl restart containerd

#Install Kubernetes $ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg –dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

$ echo ‘deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /’ | sudo tee /etc/apt/sources.list.d/kubernetes.list

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

#Disable swap $ sudo swapoff -a $ sudo sed -i ‘/ swap / s/^\(.*\)$/#\1/g’ /etc/fstab

$ sudo modprobe overlay $ sudo modprobe br_netfilter

#Set required sysctl $ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF

$ sudo sysctl –system

ถึงส่วนนี้ผมก็จะทำในทุกๆ Node นะครับ ต่อไปก็จะทำการ Config Kube-VIP กันต่อ ซึ่งผมจะทำตาม Document นี้เลยครับ

#Kube-VIP (ทำแค่ C1) $ export VIP=192.168.0.40 (ซึ่ง IP Address ของ VIP ก็ใช้ทำที่ทุกคนใช้ได้เลยครับ เพียงแค่ไม่ชนกันกับ IP Node ที่ใช้งาน)

$ export INTERFACE=ens160 (ในส่วนนี้ควรตรวจสอบก่อนโดยใช้คำสั่ง $ ip a สำหรับตรวจสอบ interface ที่ใช้งานก่อน)

$ KVVERSION=$(curl -sL https://api.github.com/repos/kube-vip/kube-vip/releases | jq -r “.[0].name”)

#Set hosts (ในทุกๆ node) $ sudo vi /etc/hosts โดยผมจะเพิ่มส่วนนี้เข้าไปในไฟล์ hosts : 192.168.0.40 kube-api-server 192.168.0.41 k8sc1 192.168.0.42 k8sc2 192.168.0.43 k8sc3 192.168.0.44 k8sw1 192.168.0.45 k8sw2 192.168.0.46 k8sw3 192.168.0.47 k8sw4 192.168.0.48 k8sw5

#ทำการตรวจสอบ kube-api-server ว่าสามารถใช้งานได้หรือไม่ด้วยคำสั่ง : $ ping kube-api-server หรือ ping 192.168.0.40

***หากไม่พบใช้คำสั่ง ip a ดูว่ามี VIP ติดอยู่กับ interface หรือไม่*** $ ip a show dev ens160 (ควรเห็น 192.168.0.40 อยู่ในรายการ)

#ถ้าไม่มีให้เพิ่มด้วยคำสั่ง : $ ip addr add 192.168.0.40/24 dev ens160

# ทดสอบ ping อีกครั้ง (ควรจะใช้ได้) $ ping kube-api-server

#Copy file kube-vip.yaml to k8sc2, k8sc3 $ scp /etc/kubernetes/manifests/kube-vip.yaml root@k8sc2:/etc/kubernetes/manifests/ $ scp /etc/kubernetes/manifests/kube-vip.yaml root@k8sc3:/etc/kubernetes/manifests/

ผมลัพธ์ที่ได้ควรจะมีคำสั่งที่ใช้ Join ของ Control-Plane และ Worker nodes ออกมาด้วย เช่น : kubeadm join xxx.xx.xx.xxx:6443 –token <token> \ –discovery-token-ca-cert-hash sha256:<key> \ –control-plane

kubeadm join xxx.xx.xx.xxx:6443 –token <token> \ –discovery-token-ca-cert-hash sha256:<key>

————————————

$ export KUBECONFIG=/etc/kubernetes/admin.conf

#ตรวจสอบ calico $ kubectl get -f calico.yaml $ kubectl get pod -n kube-system

หลังจากที่ได้ kubeadm แล้วทุกคนสามารถนำคำสั่งที่ได้ไปที่ node อื่นๆและทำการ join ได้เลยครับ เพียงเท่านี้ก็เป็นอันเสร็จเรียบร้อยครับ แต่เดี๋ยวก่อนสำหรับการ Join Control-Plane ไว้บทความต่อไปผมจะมาแชร์วิธีอีกครั้งนะครับ!!

ขอบคุณทุกท่านที่เข้ามาอ่านครับ

#HA () $ kubeadm init –control-plane-endpoint 192.168.0.40 –apiserver-advertise-address 192.168.0.41

#Curl Caloco () $ kubectl apply -f calico.yaml

https://kube-vip.io/docs/installation/static/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
https://docs.tigera.io/calico/latest/getting-started/kubernetes/self-managed-onprem/onpremises