สวัสดีครับ
เราได้ตรวจสอบสถานะของเซิร์ฟเวอร์นี้ (Tencent Tokyo, 43.130.246.201) แล้ว:
สาเหตุ:
คอมโพเนนต์ ingress-controller ค้างอยู่ที่สถานะ STARTING (ไม่เคยเริ่มทำงานได้สำเร็จ โดยที่ timestamp ค้างอยู่ที่ 1970-01-01) ทำให้บริการทั้งหมดบนเซิร์ฟเวอร์ไม่สามารถเข้าถึงจากภายนอกได้ คอมโพเนนต์ระบบอื่นๆ (DNS, log-api, fluent-bit, node-exporter ฯลฯ) ทำงานได้ตามปกติ และทรัพยากรก็เพียงพอ (CPU 10%, หน่วยความจำ 50%) ดังนั้นจึงไม่ใช่ปัญหาเรื่องทรัพยากรไม่เพียงพอ
เหตุผลที่การรีสตาร์ทและการ "ติดตั้งคอมโพเนนต์ระบบ Zeabur ใหม่" หลายครั้งล้มเหลว เป็นเพราะ ingress-controller ถูกขัดขวางด้วยสาเหตุเดิมทุกครั้งที่เริ่มทำงาน จากกรณีที่คล้ายกันในอดีต สาเหตุที่พบบ่อยที่สุดคือ มีโปรแกรมอื่นบนเซิร์ฟเวอร์โฮสต์ใช้งานพอร์ต 80 หรือ 443 อยู่ (เช่น nginx ที่ติดมากับระบบซึ่งเริ่มทำงานอัตโนมัติหลังรีบูต) ทำให้ ingress-controller ไม่สามารถผูกพอร์ต (bind) ได้และเกิดการ crash ซ้ำๆ
k3s ของ Zeabur จำเป็นต้องใช้พอร์ตต่อไปนี้แบบผูกขาด:
| พอร์ต | การใช้งาน |
|---|
| 80 | HTTP |
| 443 | HTTPS (ingress-controller) |
| 4222 | การสื่อสารจัดการ Zeabur |
| 6443 | Kubernetes API |
| 30000–32767 | NodePort |
โปรดช่วยตรวจสอบดังนี้:
- หลังจาก SSH เข้าสู่เซิร์ฟเวอร์แล้ว ให้รันคำสั่ง:
sudo ss -tlnp | grep -E ':(80|443)\b'
sudo lsof -i :80
sudo lsof -i :443
- หากพบว่า
nginx, apache หรือโปรแกรมอื่นใช้งานพอร์ต 80/443 อยู่ โปรดหยุดและปิดการใช้งานโปรแกรมนั้น (ยกตัวอย่าง nginx):
sudo systemctl stop nginx && sudo systemctl disable nginx
- หลังจากหยุดแล้ว ให้รอ 1–2 นาที ingress-controller จะผูกพอร์ตใหม่โดยอัตโนมัติและกลับมาทำงานได้ตามปกติ และบริการทั้งหมดก็จะกลับมาใช้งานได้เช่นกัน
หากพอร์ต 80/443 ไม่ได้ถูกใช้งานอยู่ โปรดคัดลอกผลลัพธ์ของคำสั่งต่อไปนี้มาให้เรา เพื่อที่เราจะตรวจสอบข้อผิดพลาดในระดับ pod ต่อไป:
sudo k3s kubectl -n zeabur get pods -o wide | grep ingress
sudo k3s kubectl -n zeabur describe pod <ingress-pod-name>
sudo k3s kubectl -n zeabur logs <ingress-pod-name> --previous