Kubernetes คือ ตอนที่ 2 : การติดตั้งและการกำหนดค่า Kubernetes

  1. การติดตั้ง Kubernetes
    1.1 การติดตั้ง Minikube
    1.2 กำลังติดตั้ง Kubectl
  2. การกำหนดค่าและการทำความเข้าใจไฟล์ kubeconfig
  3. ทำแอพ Kubernetes แรกของคุณ

ในบทความที่แล้ว เราแนะนำ Kubernetes และสัมผัสกับแนวคิดของคอนเทนเนอร์ออร์เคสตรา ตอนนี้ มาเจาะลึกและครอบคลุมขั้นตอนเริ่มต้น: การติดตั้ง Kubernetes การตั้งค่า และการทำแอพแรกของคุณ เราจะแนะนำคุณผ่านขั้นตอนเหล่านี้ทีละขั้นตอน โดยให้คำอธิบายโดยละเอียดสำหรับแต่ละส่วนของกระบวนการสำหรับการทำแอพ

1. การติดตั้ง Kubernetes

ขั้นตอนแรกในการเริ่มต้นใช้งาน Kubernetes คือการติดตั้งบนเครื่องของคุณ กระบวนการอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มที่คุณใช้ (เช่น เครื่องในระบบ คลาวด์ ศูนย์ข้อมูล) แต่สำหรับบทช่วยสอนนี้ เราจะเน้นไปที่การติดตั้งในเครื่องโดยใช้ Minikube ซึ่งเป็นเครื่องมือที่ช่วยให้เรียกใช้ คลัสเตอร์ Kubernetes โหนดเดียวบนคอมพิวเตอร์ส่วนบุคคลของคุณเพื่อวัตถุประสงค์ในการทำแอพและการทดสอบ

1.1 การติดตั้ง Minikube

ก่อนติดตั้ง Minikube คุณจะต้องติดตั้งซอฟต์แวร์เวอร์ชวลไลเซชัน ตัวเลือกทั่วไปบางอย่าง ได้แก่ VirtualBox, Hyper-V สำหรับ Windows และ KVM สำหรับ Linux

หลังจากติดตั้งซอฟต์แวร์ virtualization แล้ว คุณสามารถติดตั้ง Minikube ได้โดยทำตามขั้นตอนเหล่านี้:

  1. ดาวน์โหลด Minikube รุ่นล่าสุดโดยใช้คำสั่ง curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
  2. จากนั้นย้ายไฟล์เรียกทำงาน Minikube ไปยังเส้นทางของคุณด้วย sudo mv minikube /usr/local/bin
  3. ตรวจสอบว่ามีการติดตั้ง Minikube อย่างถูกต้องโดยเรียกใช้ minikube start คำสั่งนี้สร้างเครื่องเสมือนใหม่และเริ่มคลัสเตอร์ Kubernetes ในเครื่อง

1.2 กำลังติดตั้ง Kubectl

นอกจาก Minikube แล้ว คุณยังต้องมี kubectl ซึ่งเป็นเครื่องมือบรรทัดคำสั่ง (command-line tool) ที่ให้คุณโต้ตอบกับคลัสเตอร์ Kubernetes นี่คือวิธีการติดตั้ง:

  1. ดาวน์โหลดรุ่นล่าสุดด้วยคำสั่ง curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
  2. ทำให้ไบนารี kubectl สามารถเรียกใช้งานได้ด้วย chmod +x ./kubectl
  3. ย้ายไบนารีไปยังเส้นทางของคุณด้วย sudo mv ./kubectl /usr/local/bin/kubectl
  4. ตรวจสอบว่าติดตั้ง 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 ให้เชี่ยวชาญนั้นเป็นการวิ่งมาราธอน ไม่ใช่การวิ่งเร็ว ต้องใช้เวลาฝึกฝนและความเพียร แต่ทุกย่างก้าวจะทำให้คุณเข้าใกล้ความเชี่ยวชาญของเครื่องมือที่จำเป็นในแนวการทำแอพในปัจจุบันมากขึ้น


Kubernetes คืออะไร

Kubernetes คือ ตอนที่ 1 : สถาปัตยกรรม (Architecture)
Kubernetes คือ ตอนที่ 3 : การควบคุม Kubernetes Workloads