kind ของดีที่ทำให้เรามี K8S Cluster ใช้งานแบบไม่ยุ่งยาก บน macOS
Damrongsak Reetanon
Posted on February 3, 2021
ตอนนี้เขียนจากส่วนประกอบต่าง ๆ ดังนี้
- macOS Catalina version 10.15.7
- Docker Desktop version 3.1.0(51484)
- สร้าง Kubernetes Cluster ชื่อว่า d8k ประกอบด้วย 1 Control Plane และ 2 Node
kind เป็นเครื่องมือที่จะทำให้มี Kubernetes Cluster ใช้งานโดยใช้ Docker Container เป็น node ดังนั้นถ้าระบบปฎิบัติการใดที่มี kind ให้ใช้งานได้ และติดตั้ง Docker ได้ก็จะทำได้ เท่าที่อ่านดูก็เป็นการจับคู่ที่หลากหลาย อย่างใน macOS ก็จะเป็น kind สำหรับ macOS และ Docker Desktop หรือว่า kind สำหรับ Windows 10 และ WSL2 - Windods Subsystem for Linux 2 ส่วนใน Linux ไม่น่าจะต้องห่วงยังไม่ได้ลอง แต่มั่นใจว่าน่าจะใช้งาน kind ได้อยู่แล้ว
ขั้นตอนการเตรียม Docker Desktop ให้มีหน่วยความจำเพียงพอสำหรับการทำงานของ Kubernetes Cluster
ติดตั้ง kind ด้วยเครื่องมือ brew
❯ brew install kind
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/kind-0.10.0.catalina.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/88fc4241b464cfec95189c325d2d28eecb0b04aeb1d7e56f9d04a7cd82f
######################################################################## 100.0%
==> Pouring kind-0.10.0.catalina.bottle.tar.gz
==> Caveats
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/kind/0.10.0: 8 files, 9.2MB
สร้าง Configuration File สำหรับ kind เพื่อสร้าง 1 Control Plane และ 2 Node
❯ cat > lab.yaml <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
EOF
สร้าง Kubernetes Cluster ชื่อว่า d8k จาก lab.yaml
❯ kind create cluster --config lab.yaml --name d8k
Creating cluster "d8k" ...
✓ Ensuring node image (kindest/node:v1.20.2) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-d8k"
You can now use your cluster with:
kubectl cluster-info --context kind-d8k
Have a nice day! 👋
- การติดตั้งใช้เวลานานพอสมควรเนื่อจาก Container Image ของ kind node (v1.20.2) มีขนาด 1.17 GB
- หลังจากติดตั้งเสร็จ kind จะเพิ่มข้อมูลลงใน .kube/config เพื่อให้พร้อมใช้งาน
ตรวจสอบความเรียบร้อย และความพร้อมของ Kubenetes Cluster
❯ kind get clusters
d8k
❯ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kind-d8k kind-d8k kind-d8k
kubernetes-admin@kubernetes kubernetes kubernetes-admin
❯ kubectl get nodes
NAME STATUS ROLES AGE VERSION
d8k-control-plane Ready control-plane,master 8m41s v1.20.2
d8k-worker Ready <none> 6m55s v1.20.2
d8k-worker2 Ready <none> 6m56s v1.20.2
❯ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:50358
KubeDNS is running at https://127.0.0.1:50358/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
หากไม่ต้องการใช้งาน Kubernetes Cluster แล้วสามารถลบด้วยคำสั่ง kind
❯ kind delete clusters d8k
Deleted clusters: ["d8k"]
หากต้องการระบุ version ของ Kubernetes สามารถทำได้โดยการระบุ version ได้ โดยข้อมูลของ image ในแต่ละ version หาได้จาก kind release เช่นต้องการติดตั้ง Kubernetes Cluster version 1.19.7
❯ cat > lab.yaml <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.19.7@sha256:a70639454e97a4b733f9d9b67e12c01f6b0297449d5b9cbbef87473458e26dca
- role: worker
image: kindest/node:v1.19.7@sha256:a70639454e97a4b733f9d9b67e12c01f6b0297449d5b9cbbef87473458e26dca
- role: worker
image: kindest/node:v1.19.7@sha256:a70639454e97a4b733f9d9b67e12c01f6b0297449d5b9cbbef87473458e26dca
EOF
❯ kind create cluster --config lab.yaml --name d8k
Creating cluster "d8k" ...
✓ Ensuring node image (kindest/node:v1.19.7) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-d8k"
You can now use your cluster with:
kubectl cluster-info --context kind-d8k
Have a nice day! 👋
❯ kubectl get nodes
NAME STATUS ROLES AGE VERSION
d8k-control-plane Ready master 3m2s v1.19.7
d8k-worker Ready <none> 2m24s v1.19.7
d8k-worker2 Ready <none> 2m24s v1.19.7
สร้าง pod แรกใน Kubernetes ที่สร้างโดย kind
❯ kubectl run myfiristpod --image damrongsak/hello:8080
pod/myfiristpod created
❯ kubectl get pods
NAME READY STATUS RESTARTS AGE
myfiristpod 1/1 Running 0 28s
มูลค่าความสุข
Posted on February 3, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.