การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม
กำหนดค่าโพรบการทำงานและความพร้อมเพื่อให้แน่ใจว่าแอปพลิเคชันมีสุขภาพดีและพร้อมให้บริการทราฟฟิก
การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเก็บบันทึกด้วย kubectl logs
- ตัวชี้วัดด้วย Prometheus และ Grafana
- การตรวจสอบสุขภาพ: โพรบการทำงานและความพร้อม
- การติดตามแบบกระจายและเหตุการณ์