ติดตั้ง Kubernetes บน local ด้วย Kind
Kind ย่อมาจาก Kubernetes in Docker ตือ เครื่องมือที่ใช้จำลอง Kubernetes cluster ขึ้นมาในเครื่องของเรา ซึ่งข้อดีของ Kind คือสามารถเพิ่มและลบ node ได้ตามที่เราต้องการ
คำสั่งของ Kind ที่ต้องรู้จัก
คำสั่งแรกคือ คำสั่งในการสร้าง Kubernetes Cluster เราสามารถสั่ง create cluster ได้เลย โดยที่ไม่ค้องกำหนด parameter อะไรแบบนี้
$ kind create cluster
หลังจากที่เราสร้าง cluster ขึ้นมาแล้วให้ลอง list รายการของ docker container ออกมาดู
$ docker ps
เราจะพบว่ามี container ที่ถูกสร้างขึ้นมาใหม่ 1 ตัว คือ kind-control-plane ทำหน้าที่เป็น master node แต่จะสังเกตุว่าเรายังไม่มี worker node เลยซักตัว ซึ่งเดี๋ยวเราจะทำการเพิ่มขึ่้นมาหลังจากนี้
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cb0473dd019 kindest/node:v1.21.1 "/usr/local/bin/entr…" 3 minutes ago Up 3 minutes 127.0.0.1:60058->6443/tcp kind-control-plane
ตอนนนี้่เราสร้าง Cluster ขึ้นมา 1 Cluster ซึ่ง Cluster ที่สร้างขึ้นมาจะมีชื่อว่า kind(ถ้าไม่ได้ตัวชื่อใหม่ cluster จะเป็นชื่อนี้) แต่ถ้าเราต้องการตั้งชื่อของ cluster ให้เติม –name เข้าไปแบบนี้
$ kind create cluster --name demo-cluster
คราวนี้เราจะได้ cluster ตัวที่ 2 ซึ่งมีชื่อว่า demo-cluster ลอง docker ps ดูใหม่จะพบว่าเรามี container เพิ่มขึ้นมาอีก 1 ตัวคือ demo-cluster-control-plane (ชื่อ cluster ตามด้วยคำว่า control-plane)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
610fc9255a20 kindest/node:v1.21.1 "/usr/local/bin/entr…" 29 seconds ago Up 26 seconds 127.0.0.1:60083->6443/tcp demo-cluster-control-plane
3cb0473dd019 kindest/node:v1.21.1 "/usr/local/bin/entr…" 3 minutes ago Up 3 minutes 127.0.0.1:60058->6443/tcp kind-control-plane
ตอนนี้เรามี cluster อยู่ 2 cluster เราสามารถ list รายการของ cluster ทั้งหมดที่มีออกมาดูด้วย
$ kind get clusters
เราจะได้ผลลัพธ์ออกมาแบบนี้
demo-cluster
kind
ทีนี้ตำถามที่ตามมาก็คือเราจะติดต่อกับ cluster แต่ละตัวได้ยังไง เมื่อเรา run คำสั่ง kubectl แล้วจะมีผลกับ cluster ไหน คำตอบคือ cluster ไหนถูกสร้างขึ้่นมาหลังสุด kubectl จะชี้ไปที่ cluster นั้น ซึ่งถ้าเราต้องการสลับไปทำงานกับ cluster อื่นให้เปลี่ยน context ไปมาด้วยคำสั่งนี้
$ kubectl config use-context kind-[ชื่อ cluster]
Context ของ Kind จะชึ้นต้นด้วยคำว่า kind แล้วตามด้วยชื่อ cluster เช่น ถ้าเราต้องการกลับไปทำงานกับ cluster ตัวแรกให้ใช้คำสั่ง
$ kubectl config use-context kind-kind
จะมีคำว่า kind ซ้ำกัน 2 รอบ เพราะ kind- เป็น prefix นำหน้าชื่อ context จะได้ไม่ชนกับ context ที่เราสร้างเอง ส่วน kind ตัวหลังคือชื่อ cluster ที่เป็น default เมื่อรวมกันแล้วเลยกลายเป็น kind-kind เช่นเดียวกันถ้าเราต้องการกลับไปทำงานใน demo-cluster เราจะใช้คำสั่ง
$ kubectl config use-context kind-demo-cluster
Kind Configuration
เราสามารถกำหนดจำนวนของ node ใน cluster ได้ด้วยการเขียน configuration file ในตัวอย่างนี้ผมจะตั้งชื่อไฟล์ว่า kind-config.yaml ซึ่งจะมีเนื้อหาแบบนี้
|
|
หลังจากนั้นเราจะสร้าง cluster โดยที่ระบุ configuration เข้่าไปแบบนี้
$ kind create cluster --config kind-config.yaml
ในตัวอย่างนี้เราไม่ได้ระบุชื่อดังนั้น kind จะใช้ชื่อ kind ที่เป็น default ถ้าเรา run คำสั่ง kind create cluster ด้านบนมาแล้วให้ลบ cluster ที่ชื่อ kind ออกก่อน(คำสั่งลบ cluster อยู่ด้านล่าง)
นอกจากนี้เรายังสามารถสร้าง cluster ที่มี High Availability(มี Control Plane หรือ Master มากกว่า 1 ตัว) ได้ง่ายๆ เพียงแค่เพิ่ม Control Plane เข้าไปอีก 2 ตัวแบบนี้
|
|
ลบ Cluster ที่ไม่ต้องการออก
Cluster ไหนที่เราไม่ต้องการใช้งานแล้วให้ทำการลบออกด้วยคำสั่ง
$ kind delete cluster
ถ้าเราไม่ได้ระบุชื่อ cluster จะเป็นการลบ cluster ที่ชื่อ kind เหมือนกับตอน create cluster แต่ถ้าเราต้องการลบ cluster ที่มีชื่ออื่นให้ใส่ –name เข้าไปแบบนี้
$ kind delete cluster --name demo-cluster