- การติดตั้ง Kubernetes
1.1 การติดตั้ง Minikube
1.2 กำลังติดตั้ง Kubectl - การกำหนดค่าและการทำความเข้าใจไฟล์ kubeconfig
- ทำแอพ Kubernetes แรกของคุณ
ในบทความที่แล้ว เราแนะนำ Kubernetes และสัมผัสกับแนวคิดของคอนเทนเนอร์ออร์เคสตรา ตอนนี้ มาเจาะลึกและครอบคลุมขั้นตอนเริ่มต้น: การติดตั้ง Kubernetes การตั้งค่า และการทำแอพแรกของคุณ เราจะแนะนำคุณผ่านขั้นตอนเหล่านี้ทีละขั้นตอน โดยให้คำอธิบายโดยละเอียดสำหรับแต่ละส่วนของกระบวนการสำหรับการทำแอพ
1. การติดตั้ง Kubernetes
ขั้นตอนแรกในการเริ่มต้นใช้งาน Kubernetes คือการติดตั้งบนเครื่องของคุณ กระบวนการอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มที่คุณใช้ (เช่น เครื่องในระบบ คลาวด์ ศูนย์ข้อมูล) แต่สำหรับบทช่วยสอนนี้ เราจะเน้นไปที่การติดตั้งในเครื่องโดยใช้ Minikube ซึ่งเป็นเครื่องมือที่ช่วยให้เรียกใช้ คลัสเตอร์ Kubernetes โหนดเดียวบนคอมพิวเตอร์ส่วนบุคคลของคุณเพื่อวัตถุประสงค์ในการทำแอพและการทดสอบ
1.1 การติดตั้ง Minikube
ก่อนติดตั้ง Minikube คุณจะต้องติดตั้งซอฟต์แวร์เวอร์ชวลไลเซชัน ตัวเลือกทั่วไปบางอย่าง ได้แก่ VirtualBox, Hyper-V สำหรับ Windows และ KVM สำหรับ Linux
หลังจากติดตั้งซอฟต์แวร์ virtualization แล้ว คุณสามารถติดตั้ง Minikube ได้โดยทำตามขั้นตอนเหล่านี้:
- ดาวน์โหลด Minikube รุ่นล่าสุดโดยใช้คำสั่ง
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
- จากนั้นย้ายไฟล์เรียกทำงาน Minikube ไปยังเส้นทางของคุณด้วย
sudo mv minikube /usr/local/bin
- ตรวจสอบว่ามีการติดตั้ง Minikube อย่างถูกต้องโดยเรียกใช้
minikube start
คำสั่งนี้สร้างเครื่องเสมือนใหม่และเริ่มคลัสเตอร์ Kubernetes ในเครื่อง
1.2 กำลังติดตั้ง Kubectl
นอกจาก Minikube แล้ว คุณยังต้องมี kubectl ซึ่งเป็นเครื่องมือบรรทัดคำสั่ง (command-line tool) ที่ให้คุณโต้ตอบกับคลัสเตอร์ Kubernetes นี่คือวิธีการติดตั้ง:
- ดาวน์โหลดรุ่นล่าสุดด้วยคำสั่ง
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
- ทำให้ไบนารี kubectl สามารถเรียกใช้งานได้ด้วย
chmod +x ./kubectl
- ย้ายไบนารีไปยังเส้นทางของคุณด้วย
sudo mv ./kubectl /usr/local/bin/kubectl
- ตรวจสอบว่าติดตั้ง kubectl อย่างถูกต้องโดยเรียกใช้
kubectl version --client
2. การกำหนดค่าและการทำความเข้าใจไฟล์ kubeconfig
Kubernetes ใช้ไฟล์ที่ตั้งชื่อ kubeconfig
เพื่อติดตามบริบท คลัสเตอร์ และผู้ใช้ในการจัดการคลัสเตอร์หลายรายการ ตามค่าเริ่มต้นไฟล์ kubeconfig
จะอยู่ในไดเร็กทอรี ~/.kube
ภายในไฟล์ kubeconfig
คุณจะพบหลายฟิลด์:
- clusters:รายการคลัสเตอร์ที่คุณสามารถเชื่อมต่อได้ พร้อมด้วยรายละเอียดของผู้ออกใบรับรองและที่อยู่เซิร์ฟเวอร์
- contexts:วิธีการจัดกลุ่มคลัสเตอร์ ผู้ใช้ และพารามิเตอร์เนมสเปซภายใต้ชื่อที่สะดวก
- users:ข้อมูลรับรองผู้ใช้ที่จำเป็นสำหรับการเชื่อมต่อกับคลัสเตอร์
- current-context:บริบทเริ่มต้น (เช่น คลัสเตอร์) ที่คำสั่ง kubectl โต้ตอบด้วย
คุณสามารถสลับระหว่างบริบทต่างๆ โดยใช้คำสั่ง kubectl config use-context [context-name]
3. ทำแอพ Kubernetes แรกของคุณ
ขณะนี้เรามีคลัสเตอร์ Kubernetes และ kubectl
เครื่องมือบรรทัดคำสั่งที่ทำงานอยู่แล้ว ก็ถึงเวลาทำแอพ Kubernetes แรกของคุณ
สมมติว่าเราต้องการ Deployment แอป “Hello World” แบบธรรมดาที่เขียนด้วย Node.js ขั้นแรก คุณต้องบรรจุแอปของคุณโดยใช้ Docker
3.1 การสร้างไฟล์ Docker
สร้างไฟล์ชื่อ Dockerfile
ในไดเร็กทอรีโปรเจ็กต์ของคุณโดยมีเนื้อหาต่อไปนี้:
# Use an official Node.js runtime as the base image
FROM node:14
# Set the working directory in the container to /usr/src/app
WORKDIR /usr/src/app
# Copy package.json and package-lock.json to the working directory
COPY package*.json ./
# Install the application dependencies
RUN npm install
# Copy the rest of the application code to the working directory
COPY . .
# Make port 8080 available outside the container
EXPOSE 8080
# Define the command to run the application
CMD [ "node", "server.js" ]
ข้อมูล นี้ Dockerfile
จะระบุอิมเมจพื้นฐาน ตั้งค่าไดเร็กทอรีการทำงาน คัดลอกแอปของคุณลงในอิมเมจ ติดตั้งการอ้างอิงใดๆ และระบุวิธีเรียกใช้แอป
3.2 สร้างอิมเมจ Docker
หากต้องการสร้างอิมเมจ Docker ให้รันคำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:
docker build -t hello-node:v1 .
ในคำสั่งด้านบน -t hello-node:v1
ให้ระบุแท็กสำหรับ Image ซึ่งจะช่วยให้คุณค้นหาได้ในภายหลัง
3.3 เรียกใช้ Docker Container ในเครื่อง
ก่อนที่จะย้ายไปที่ Kubernetes คุณอาจต้องการทดสอบคอนเทนเนอร์ Docker ของคุณในเครื่อง คุณสามารถทำได้โดยเรียกใช้:
docker run -p 8080:8080 -d hello-node:v1
ตอนนี้ คุณควรจะสามารถเข้าถึงแอพของคุณได้ที่ http://localhost:8080
3.4 การสร้างการ Deployment Kubernetes
Kubernetes Deployment จะตรวจสอบความสมบูรณ์ของ Pod ของคุณและรีสตาร์ทคอนเทนเนอร์ของ Pod หากหยุดทำงาน การทำให้ใช้งานได้เป็นวิธีที่แนะนำในการจัดการการสร้างและการปรับขนาดของพ็อด
ในการสร้างการ Deployment Kubernetes คุณต้องมีอิมเมจ Docker ของแอปพลิเคชันของคุณ ซึ่งเราได้สร้างไว้แล้วก่อนหน้านี้ ( hello-node:v1
)
สร้างไฟล์ deployment.yaml
และวางการกำหนดค่าต่อไปนี้:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-node
spec:
replicas: 3
selector:
matchLabels:
app: hello-node
template:
metadata:
labels:
app: hello-node
spec:
containers:
- name: hello-node
image: hello-node:v1
ports:
- containerPort: 8080
บรรทัด replicas: 3
บอกให้ Kubernetes เรียกใช้แอปพลิเคชันของคุณสามอินสแตนซ์
3.5 การ Deployment
หากต้องการ Deployment ให้ใช้คำสั่ง kubectl apply
:
kubectl apply -f deployment.yaml
คำสั่ง apply
จะสั่งให้ Kubernetes กำหนดค่าคลัสเตอร์ของคุณให้ตรงกับสถานะที่อธิบายไว้ในไฟล์การกำหนดค่า ในกรณีนี้ จะสร้างการ Deployment ตามที่อธิบายไว้ใน deployment.yaml
3.6 การสร้างบริการ Kubernetes
แม้ว่า Pod แต่ละเครื่องจะมีที่อยู่ IP ที่ไม่ซ้ำกัน แต่ IP เหล่านั้นจะไม่ถูกเปิดเผยนอกคลัสเตอร์หากไม่มีบริการ บริการอนุญาตให้แอปพลิเคชันของคุณรับปริมาณข้อมูล
สร้างไฟล์ service.yaml
และวางการกำหนดค่าต่อไปนี้:
apiVersion: v1
kind: Service
metadata:
name: hello-node
spec:
type: LoadBalancer
selector:
app: hello-node
ports:
- protocol: TCP
port: 80
targetPort: 8080
3.7 การใช้บริการ (Service)
ในการใช้บริการ ใช้คำสั่ง kubectl apply
:
kubectl apply -f service.yaml
คำสั่งนี้สร้างบริการใหม่ที่เปิดเผยแอปพลิเคชันของคุณต่อทราฟฟิกภายนอก
บทความนี้ให้คำแนะนำโดยละเอียดเกี่ยวกับวิธีติดตั้ง Kubernetes กำหนดค่า และทำแอพแรกของคุณ เราได้กล่าวถึงการติดตั้ง Kubernetes โดยใช้ Minikube, การติดตั้งเครื่องมือบรรทัดคำสั่ง kubectl, การทำความเข้าใจไฟล์ kubeconfig และการสร้างการ Deployment และบริการใน Kubernetes
แม้ว่า Kubernetes อาจดูซับซ้อน แต่เมื่อคุณเริ่มใช้งานและเข้าใจแนวคิดพื้นฐานของมัน มันจะกลายเป็นเครื่องมือที่มีประสิทธิภาพในการจัดการแอปพลิเคชันในการทำแอพ เมื่อคุณเรียนรู้เพิ่มเติมเกี่ยวกับ Kubernetes คุณจะพบว่าคุณสมบัติและความยืดหยุ่นของมันสามารถเพิ่มความคล่องตัวให้กับกระบวนการทำแอพของคุณได้อย่างมาก และทำให้มั่นใจได้ว่าแอปพลิเคชันของคุณปรับขนาดได้และเชื่อถือได้
ในส่วนถัดไปของซีรีส์ เราจะเจาะลึกลงไปในแนวคิดขั้นสูงของ Kubernetes เช่น Pods, Labels และ Namespaces และบทบาทของ Kubernetes ในการจัดระเบียบและจัดการแอปพลิเคชันคอนเทนเนอร์ของคุณ
Kubernetes มีการพัฒนาอย่างต่อเนื่อง โดยมีชุมชนนักพัฒนาที่เข้มแข็งที่มีส่วนร่วมในการปรับปรุง สิ่งนี้ทำให้เป็นแพลตฟอร์มแบบไดนามิก แข็งแกร่ง และหลากหลายที่สามารถตอบสนองความต้องการที่หลากหลายในการ Deployment การปรับขนาด และการจัดการแอปพลิเคชันคอนเทนเนอร์
การเดินทางเพื่อฝึกฝน Kubernetes ให้เชี่ยวชาญนั้นเป็นการวิ่งมาราธอน ไม่ใช่การวิ่งเร็ว ต้องใช้เวลาฝึกฝนและความเพียร แต่ทุกย่างก้าวจะทำให้คุณเข้าใกล้ความเชี่ยวชาญของเครื่องมือที่จำเป็นในแนวการทำแอพในปัจจุบันมากขึ้น