สวัสดีครับ เราได้ตรวจสอบเซิร์ฟเวอร์ 'Yunyou Hong Kong' อย่างละเอียดแล้ว และพบปัญหาใน 3 ระดับ โดยขอสรุปภาพรวมดังนี้ครับ:
1. สาเหตุหลักที่ทำให้ ingress-controller เกิด CrashLoopBackOff
มี nginx ทำงานอยู่บน host โดยตรง (เริ่มทำงานผ่าน systemd, PID 810/812/813/814/815) ซึ่งกำลังยึด port 80 และ port 443 ไว้ทั้งหมด ในขณะที่ ingress-controller ของ Zeabur ถูกปรับใช้ในโหมด hostNetwork ซึ่งจำเป็นต้องใช้พอร์ตทั้งสองนี้ ส่งผลให้การ bind ล้มเหลวและ pod รีสตาร์ทวนไปเรื่อยๆ คุณจะไม่เห็นคอนเทนเนอร์ nginx ใดๆ ผ่าน crictl ps ในระดับคอนเทนเนอร์ ดังนั้นนี่คือ nginx ที่ติดตั้งบน host โดยตรง ไม่ใช่ส่วนประกอบของ Zeabur ครับ
โปรดทราบ: เซิร์ฟเวอร์เฉพาะของ Zeabur คือโหนด K3s ที่มีการจัดการ ไม่ใช่ VPS ทั่วไป การติดตั้ง nginx / Caddy / haproxy หรือสิ่งที่คล้ายกันลงบน host โดยตรงและไปยึดพอร์ต 80/443 จะทำให้เกิดความขัดแย้งกับ ingress ของ Zeabur จนเป็นสาเหตุให้เข้าใช้งานไม่ได้ทั้งหมด คุณจำเป็นต้องลบหรือปิดการใช้งาน nginx บน host นั้นครับ
2. ปัญหา 600s timeout กลับมาอีกครั้งหลังจากที่คุณ "ติดตั้งส่วนประกอบระบบ Zeabur ใหม่"
นี่เป็นบั๊กจากทางเราครับ: ก่อนหน้านี้ Can ได้อัปเกรด ingress บนเครื่องทั้ง 4 เครื่องของคุณเป็น 1.1.16 (เวอร์ชันที่ปลดล็อกขีดจำกัด timeout แล้ว) ด้วยตนเอง แต่การกด "Reinstall System" จะเป็นการนำ manifest ของระบบกลับมาใช้ใหม่ ซึ่งทำให้ image ถูกย้อนกลับไปเป็น 1.1.15 ข่าวดีคือทาง backend ได้อัปเกรดเวอร์ชันเริ่มต้นเป็น 1.1.16 แล้ว (เพิ่ง merge เข้า main) หลังจากที่เวอร์ชันนี้ถูก deploy แล้ว การกด Reinstall ในอนาคตจะดึงเวอร์ชัน 1.1.16 มาใช้โดยตรงและจะไม่ถูกเขียนทับอีกครับ
3. ข้อจำกัดด้านอัตราการใช้งาน (Rate limit) ของ Let's Encrypt
เนื่องจากการติดตั้งใหม่ติดต่อกันหลายครั้ง ทำให้ทุกครั้งที่พยายามลงทะเบียนบัญชี LE ใหม่ ระบบจึงไปติดข้อจำกัด "10 new accounts per IP per 3h" ของ LE ซึ่งจะถูกปลดล็อกโดยอัตโนมัติในเวลาประมาณ ~07:18 UTC และจะไม่ส่งผลกระทบต่อการแก้ไขในขั้นตอนถัดไปครับ
โปรดทำตามขั้นตอนต่อไปนี้เพื่อแก้ไข 'Yunyou Hong Kong' (อีก 3 เครื่องที่เหลือ — Yunyou USA / Hongkong / goma Hong Kong — ปัจจุบันทำงานปกติบน 1.1.16 อยู่แล้ว ไม่ต้องดำเนินการใดๆ ครับ):
- SSH เข้าไปที่ 'Yunyou Hong Kong' และ หยุดการทำงานของ nginx บน host:
systemctl stop nginx
systemctl disable nginx
(หากคุณจำเป็นต้องใช้ nginx ตัวนี้ คุณต้องเปลี่ยนไป deploy ในรูปแบบ service บน Zeabur หรือย้ายไปไว้บนเครื่องอื่นที่ไม่ได้จัดการด้วย K3s มิฉะนั้นเมื่อรีสตาร์ทเซิร์ฟเวอร์ครั้งหน้า nginx จะกลับมาแย่งพอร์ต 80/443 และปัญหาจะเกิดขึ้นซ้ำอีกครับ)
- หลังจากที่ backend อัปเดตเป็น 1.1.16 แล้ว ให้กด Reinstall System สำหรับ 'Yunyou Hong Kong' ใน Dashboard อีกครั้ง ingress เวอร์ชันใหม่จะถูกดึงลงมา และการกด
Reinstall จะไม่ย้อนกลับไปเป็น 1.1.15 อีกต่อไปครับ
เมื่อเสร็จสิ้น ingress จะเริ่มทำงานตามปกติ บริการจะกลับมาเข้าถึงได้ และปัญหา 600s timeout จะได้รับการแก้ไข หากทำตามขั้นตอนแล้วยังมีปัญหาอยู่ โปรดตอบกลับมาเพื่อให้เราช่วยเหลือเพิ่มเติมครับ