kind ของดีที่ทำให้เรามี K8S Cluster ใช้งานแบบไม่ยุ่งยาก บน Ubuntu 20.04 LTS
Damrongsak Reetanon
Posted on February 4, 2021
ตอนนี้เขียนจากส่วนประกอบต่าง ๆ ดังนี้
- Ubuntu 20.04.2 LTS
- Docker version 19.03.8
- kubectl ติดตั้งเรียบร้อย
- สร้าง Kubernetes Cluster ชื่อว่า d8k ประกอบด้วย 1 Control Plane และ 2 Node
kind - Kubernetes IN Docker เป็นเครื่องมือที่จะทำให้มี Kubernetes Cluster ใช้งานโดยใช้ Docker Container เป็น node ดังนั้นถ้าระบบปฎิบัติการใดที่มี kind ให้ใช้งานได้ และติดตั้ง Docker ได้ก็จะทำได้ เท่าที่อ่านดูก็เป็นการจับคู่ที่หลากหลาย อย่างใน macOS ก็จะเป็น kind สำหรับ macOS และ Docker Desktop หรือว่า kind สำหรับ Windows 10 และ WSL2 - Windods Subsystem for Linux 2 ส่วนใน Linux ไม่น่าจะต้องห่วง น่าจะใช้งาน kind ได้อยู่แล้ว
ตรวจสอบสถานะการทำงานของ Docker
root@docker:~# docker version
Client:
Version: 19.03.8
API version: 1.40
Go version: go1.13.8
Git commit: afacb8b7f0
Built: Fri Dec 18 12:15:19 2020
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.13.8
Git commit: afacb8b7f0
Built: Fri Dec 4 23:02:49 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.3-0ubuntu2.2
GitCommit:
runc:
Version: spec: 1.0.1-dev
GitCommit:
docker-init:
Version: 0.18.0
GitCommit:
ติดตั้ง kind
root@docker:~# curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.10.0/kind-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7277k 100 7277k 0 0 4453k 0 0:00:01 0:00:01 --:--:-- 12.6M
root@docker:~# chmod +x kind
root@docker:~# ./kind version
kind v0.10.0 go1.15.7 linux/amd64
สร้าง 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
root@docker:~# ./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
Not sure what to do next? 😅 Check out https://kind.sigs.k8s.io/docs/user/quick-start/
- การติดตั้งใช้เวลานานพอสมควรเนื่อจาก Container Image ของ kind node (v1.20.2) มีขนาด 1.17 GB
- หลังจากติดตั้งเสร็จ kind จะเพิ่มข้อมูลลงใน .kube/config เพื่อให้พร้อมใช้งาน
ตรวจสอบความเรียบร้อย และความพร้อมของ Kubenetes Cluster
root@docker:~# ./kind get clusters
d8k
root@docker:~# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kind-d8k kind-d8k kind-d8k
root@docker:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
d8k-control-plane Ready control-plane,master 6m11s v1.20.2
d8k-worker Ready <none> 5m35s v1.20.2
d8k-worker2 Ready <none> 5m39s v1.20.2
root@docker:~# kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:39737
KubeDNS is running at https://127.0.0.1:39737/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
root@docker:~# ./kind delete clusters d8k
Deleted clusters: ["d8k"]
หากต้องการระบุ version ของ Kubernetes สามารถทำได้โดยการระบุ version ได้ โดยข้อมูลของ image ในแต่ละ version หาได้จาก kind release เช่นต้องการติดตั้ง Kubernetes Cluster version 1.19.7
root@docker:~# 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
root@docker:~# ./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
Thanks for using kind! 😊
root@docker:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
d8k-control-plane Ready master 78s v1.19.7
d8k-worker NotReady <none> 46s v1.19.7
d8k-worker2 NotReady <none> 46s v1.19.7
สร้าง pod แรกใน Kubernetes ที่สร้างโดย kind
root@docker:~# kubectl run myfiristpod --image damrongsak/hello:8080
pod/myfiristpod created
root@docker:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
myfiristpod 1/1 Running 0 26s
มูลค่าความสุข
Posted on February 4, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 30, 2024
November 30, 2024