เรามีคอนเทนเนอร์คลัสเตอร์ที่มีโหมด: Autopilot ทำงานใน GKE
ขณะนี้เราได้รับข้อผิดพลาดในหน้าต่างสั้นๆ เมื่อดำเนินการปรับใช้ "สีน้ำเงิน/สีเขียว" จาก Jenkins
เมื่อเราเปลี่ยนบริการเป็นการปรับใช้ใหม่ จะมีหน้าต่างน้อยกว่า 100 มิลลิวินาทีที่จะทำให้เกิดข้อผิดพลาดต่อไปนี้
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>502 Server Error</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Server Error</h1>
<h2>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.</h2>
<h2></h2>
</body></html>
ฉันคิดว่าเป็นเพราะหนึ่งในพ็อดยังไม่เริ่มทำงาน แต่ยังคงเริ่มกำหนดเส้นทางทราฟฟิกไปยังการปรับใช้
เราตรวจสอบว่าการปรับใช้นั้นเริ่มใช้งานหลังจากการปรับใช้ถูกสร้างขึ้นในลักษณะนี้
ด้วยปลั๊กอินเจนกินส์: https://github.com/jenkinsci/google-kubernetes-engine-plugin
เรามี ตรวจสอบการปรับใช้ แอตทริบิวต์ที่กำหนดเป็น จริง.
ขั้นตอน ([
$คลาส: 'KubernetesEngineBuilder'
รหัสโครงการ: env.PROJECT_ID,
ชื่อคลัสเตอร์: env.CLUSTER_NAME
เนมสเปซ: env.NAMESPACE,
ตำแหน่ง: env.CLUSTER_LOCATION
manifestPattern: './apps/app/deployments/green.yaml',
รหัสประจำตัว: env.APP_CREDENTIALS_ID,
ตรวจสอบการปรับใช้: จริง
])
นอกจากนี้ เรายังรวมการตรวจสอบครั้งที่สองเพื่อตรวจสอบว่าการปรับใช้จริงได้เริ่มใช้งานแล้ว
เห็นได้ชัดว่าปลั๊กอิน Jenkins ดูเหมือนจะไม่น่าเชื่อถือมากนัก
สถานะการเปิดตัว kubectl การปรับใช้แอปการปรับใช้ --namespace app-namespace --watch --timeout=5m
นอกจากนี้เรายังสังเกตเห็นว่าการปรับใช้อาจเกิดข้อผิดพลาดได้และบริการจะถูกสร้างขึ้นในขั้นตอนต่อไปซึ่งจะทำให้แอปพลิเคชันขัดข้อง แต่นี่เป็นอีกกรณีหนึ่งที่เราต้องหาวิธีแก้ไข ซึ่งอาจเกี่ยวข้องกับปลั๊กอิน Jenkins
ของเรา การปรับใช้ YAML มีลักษณะดังนี้:
apiVersion: แอป/v1
ประเภท: การปรับใช้
ข้อมูลเมตา:
ชื่อ: แอพ-ฟ้า
เนมสเปซ: แอป
ป้ายกำกับ: {app.kubernetes.io/managed-by: graphite-jenkins-gke}
ข้อมูลจำเพาะ:
ความคืบหน้า Deadline วินาที: 600
แบบจำลอง: 3
ตัวเลือก:
matchLabels: {แอป: แอปสีน้ำเงิน}
แม่แบบ:
ข้อมูลเมตา:
ป้ายกำกับ: {แอป: แอปสีน้ำเงิน}
ข้อมูลจำเพาะ:
automountServiceAccountToken: จริง
ตู้คอนเทนเนอร์:
ภาพ: eu.gcr.io/container-registry-project/app:latest
imagePullPolicy: เสมอ
ชื่อ: แอพ
พอร์ต:
- {containerPort: 8080, ชื่อ: http, โปรโตคอล: TCP}
livenessProbe:
httpรับ:
เส้นทาง: /สุขภาพ
พอร์ต: 8080
initialDelaySeconds: 15
periodSeconds: 10
ความพร้อม Probe:
httpรับ:
เส้นทาง: /
พอร์ต: 8080
initialDelaySeconds: 15
periodSeconds: 5
ทรัพยากร:
ขีดจำกัด: {cpu: 500m, พื้นที่เก็บข้อมูลชั่วคราว: 1Gi, หน่วยความจำ: 512Mi}
คำขอ: {cpu: 500m, พื้นที่เก็บข้อมูลชั่วคราว: 1Gi, หน่วยความจำ: 512Mi}
บริบทความปลอดภัย:
allowPrivilegeEscalation: เท็จ
ความสามารถ:
ดร็อป: [NET_RAW]
สิทธิพิเศษ: เท็จ
readOnlyRootFilesystem: เท็จ
runAsNonRoot: เท็จ
นโยบายรีสตาร์ท: เสมอ
ชื่อตัวกำหนดตารางเวลา: ตัวกำหนดตารางเวลาเริ่มต้น
บัญชีบริการ: แอป
ชื่อบัญชีบริการ: แอป
ของเรา บริการ YAML มีลักษณะดังนี้:
api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
ชื่อ: แอพ-บริการ
เนมสเปซ: แอป
ข้อมูลจำเพาะ:
ตัวเลือก:
แอพ: แอพ-blue
พอร์ต:
- โปรโตคอล: TCP
พอร์ต: 80
พอร์ตเป้าหมาย: 8080
เราเพียงแค่สลับตัวเลือก - แอป: ในบริการ ไปที่การปรับใช้แอปสีน้ำเงินหรือแอปสีเขียวเพื่อสลับไปยังการปรับใช้ใหม่ แต่มักจะพบข้อผิดพลาดเล็กน้อยเมื่อทำเช่นนี้ ใครก็ตามมีความคิดว่าเราคืออะไร ทำผิด?