0Pricing
Kubernetes Basics · บทเรียน

การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม

กำหนดค่าโพรบการทำงานและความพร้อมเพื่อให้แน่ใจว่าแอปพลิเคชันมีสุขภาพดีและพร้อมให้บริการทราฟฟิก

การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม เป็นบทเรียน Kubernetes Basics ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kubernetes Basics และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน

ทำให้แอปทำงานได้อย่างมีสุขภาพดี

Kubernetes ทราบได้อย่างไรว่าแอปพลิเคชันของคุณทำงานได้จริง การที่คอนเทนเนอร์ทำงานอยู่เพียงอย่างเดียวนั้นไม่เพียงพอ แต่คอนเทนเนอร์ต้อง มีสุขภาพดี และ พร้อม ให้บริการทราฟฟิกด้วย

Kubernetes ใช้การตรวจสอบพิเศษที่เรียกว่า โพรบ เพื่อตรวจสอบแอปพลิเคชันของคุณ โพรบเหล่านี้ช่วยให้มั่นใจว่าผู้ใช้จะได้รับบริการที่เชื่อถือได้อยู่เสมอ

โพรบตรวจสอบการทำงานคืออะไร

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

ลองนึกภาพว่าโพรบนี้เป็นเครื่องตรวจการเต้นของหัวใจ หากหัวใจหยุดเต้น ก็จำเป็นต้องเริ่มต้นใหม่! วิธีนี้ช่วยกู้คืนจากภาวะติดล็อกหรือแอปพลิเคชันหยุดทำงาน

พื้นฐานโพรบตรวจสอบการทำงาน

คุณสามารถกำหนดค่าโพรบตรวจสอบการทำงานโดยใช้วิธีต่าง ๆ ดังนี้:

  • HTTP GET: ส่งคำขอ HTTP ไปยังเส้นทางที่ระบุ
  • ซ็อกเก็ต TCP: ตรวจสอบว่าสามารถเปิดการเชื่อมต่อ TCP ไปยังพอร์ตได้หรือไม่
  • คำสั่ง Exec: เรียกใช้คำสั่งภายในคอนเทนเนอร์

สำหรับเว็บแอปพลิเคชัน HTTP GET เป็นวิธีที่ใช้กันมาก นี่คือตัวอย่างบางส่วนที่แสดงวิธีกำหนดค่าใน YAML ของ Pod:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

โพรบตรวจสอบการทำงานในการใช้งานจริง

แอป Flask ใน Python นี้จะจำลองสถานะที่ไม่แข็งแรงโดยหยุดทำงานหลังจากได้รับคำขอไปยัง /healthz สองครั้ง โพรบของ Kubernetes จะตรวจพบสถานะนี้และเริ่มต้นคอนเทนเนอร์ใหม่

ขั้นแรก ให้บันทึกโค้ดนี้เป็น app.py:

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

การเรียกใช้โพรบตรวจสอบการทำงาน

ตอนนี้มาดูกันว่า Kubernetes ใช้โพรบตรวจสอบการทำงานอย่างไร หากคุณติดตั้งด้วย YAML ต่อไปนี้ Kubernetes จะเริ่มต้น Pod ใหม่เมื่อการตรวจสอบสุขภาพล้มเหลว:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

เมื่อติดตั้งแล้ว หลังจากการตรวจสอบสำเร็จ 2 ครั้ง การตรวจสอบครั้งที่สามจะล้มเหลว และ Kubernetes จะเริ่มต้นคอนเทนเนอร์ใหม่

โพรบตรวจสอบความพร้อมคืออะไร

โพรบตรวจสอบความพร้อมจะตรวจสอบว่าแอปพลิเคชันของคุณพร้อมให้บริการทราฟฟิกหรือไม่ หากโพรบตรวจสอบความพร้อมล้มเหลว Kubernetes จะหยุดส่งทราฟฟิกไปยัง Pod นั้น แต่จะไม่เริ่มต้น Pod ใหม่

สิ่งนี้มีความสำคัญอย่างยิ่งในระหว่างการเริ่มต้น (เช่น ระหว่างรอการเชื่อมต่อฐานข้อมูล) หรือการปิดระบบอย่างเรียบร้อย ลองคิดว่า "ร้านเปิดให้ลูกค้าเข้าหรือยัง"

พื้นฐานโพรบตรวจสอบความพร้อม

โพรบตรวจสอบความพร้อมได้รับการกำหนดค่าในลักษณะคล้ายกับโพรบตรวจสอบการทำงาน โดยใช้ HTTP GET, ซ็อกเก็ต TCP หรือคำสั่ง Exec ความแตกต่างสำคัญคือผลลัพธ์ที่เกิดขึ้น:

  • การตรวจสอบการทำงาน: เริ่มต้นคอนเทนเนอร์ใหม่เมื่อล้มเหลว
  • การตรวจสอบความพร้อม: นำ Pod ออกจากปลายทางของบริการเมื่อล้มเหลว (ไม่มีทราฟฟิก)

นี่คือตัวอย่างบางส่วนของโพรบตรวจสอบความพร้อม:

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

โพรบตรวจสอบความพร้อมในการใช้งานจริง

แอป Flask นี้จำลองแอปพลิเคชันที่ใช้เวลาเริ่มต้นระยะหนึ่ง (เช่น การเชื่อมต่อกับฐานข้อมูล) โดยจะแจ้งสถานะ "พร้อม" หลังจากผ่านไป 5 วินาทีเท่านั้น

บันทึกโค้ดนี้เป็น ready_app.py:

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

การเรียกใช้โพรบความพร้อม

เมื่อปรับใช้ด้วย YAML นี้ พ็อดจะไม่รับทราฟฟิกในช่วง initialDelaySeconds บวกกับเวลาที่ใช้ในการทำให้ /ready ส่งคืน 200 OK

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

การตั้งค่านี้ช่วยให้มั่นใจว่าทราฟฟิกจะถูกส่งไปยังอินสแตนซ์ที่พร้อมทำงานอย่างแท้จริงเท่านั้น

โพรบตรวจการทำงานเทียบกับโพรบความพร้อม

สิ่งสำคัญคือควรใช้โพรบทั้งสองประเภทให้ถูกต้อง:

  • โพรบตรวจการทำงาน: ใช้ตรวจสอบว่าแอปพลิเคชันขัดข้องหรืออยู่ในสถานะที่ไม่สามารถกู้คืนได้หรือไม่ หากตรวจสอบไม่ผ่าน คูเบอร์เนทีสจะเริ่มการทำงานของคอนเทนเนอร์ใหม่
  • โพรบความพร้อม: ใช้ตรวจสอบว่าแอปพลิเคชันพร้อมรับและประมวลผลคำขอหรือไม่ หากตรวจสอบไม่ผ่าน คูเบอร์เนทีสจะหยุดส่งทราฟฟิกไปยังพ็อด

โพรบทั้งสองมีจุดประสงค์แตกต่างกันแต่เสริมกัน เพื่อช่วยให้แอปพลิเคชันมีความทนทาน

ตรวจสอบความเข้าใจของคุณ

ข้อใดต่อไปนี้กล่าวเกี่ยวกับโพรบตรวจการทำงานและโพรบความพร้อมได้อย่างถูกต้อง?

โพรบ: ประเด็นสำคัญ

ในบทเรียนนี้ คุณได้เรียนรู้เกี่ยวกับโพรบตรวจการทำงานและโพรบความพร้อมในคูเบอร์เนทีส การตรวจสอบสถานะเหล่านี้มีความสำคัญอย่างยิ่งต่อการรักษาความน่าเชื่อถือและความพร้อมใช้งานของแอปพลิเคชัน:

  • โพรบตรวจการทำงานจะตรวจจับคอนเทนเนอร์ที่มีปัญหาและเรียกให้เริ่มการทำงานใหม่
  • โพรบความพร้อมจะควบคุมว่าพ็อดพร้อมรับทราฟฟิกเครือข่ายเมื่อใด

การใช้งานโพรบเหล่านี้อย่างมีประสิทธิภาพช่วยให้แอปพลิเคชันตอบสนองได้เสมอและรับมือกับปัญหาได้ดี

คำถามที่พบบ่อย

บทเรียน “การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kubernetes Basics ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม”

กำหนดค่าโพรบการทำงานและความพร้อมเพื่อให้แน่ใจว่าแอปพลิเคชันมีสุขภาพดีและพร้อมให้บริการทราฟฟิก คุณปฏิบัติ Kubernetes Basics ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kubernetes Basics หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kubernetes Basics บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kubernetes Basics นี้ได้ไหม

ได้ บทเรียน Kubernetes Basics ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเก็บบันทึกด้วย kubectl logs
  2. ตัวชี้วัดด้วย Prometheus และ Grafana
  3. การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม
  4. การติดตามแบบกระจายและเหตุการณ์
← กลับไปที่ Kubernetes Basics