แอปพลิเคชัน .NET ของฉันถูกนำไปใช้กับคลัสเตอร์ EKS ซึ่งมีข้อมูลขาเข้าที่กำหนดด้วยคำอธิบายประกอบที่เกี่ยวข้องต่อไปนี้
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS-1-2-2017-01
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80}, {"HTTPS":443}]'
alb.ingress.kubernetes.io/scheme: เชื่อมต่ออินเทอร์เน็ต
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "โปรโตคอล": "HTTPS", "พอร์ต": "443", "StatusCode": " HTTP_301"}}'
alb.ingress.kubernetes.io/healthcheck-path: "/swagger/v1/swagger.json"
alb.ingress.kubernetes.io/backend-protocol-version: HTTP2
แอปของฉันใช้งานได้ดีบนคลัสเตอร์โดยผ่านการตรวจสุขภาพและพ็อดทั้งหมดที่อยู่ในสถานะทำงานอยู่ อย่างไรก็ตาม เมื่อฉันสอบถามปลายทางขาเข้าด้วยคำขอ GRPC ฉันได้รับข้อผิดพลาดดังที่แสดงด้านล่างโดยย่อ
ข้อยกเว้นที่ไม่สามารถจัดการได้: System.Reflection.TargetInvocationException: ข้อยกเว้นถูกโยนทิ้งโดยเป้าหมายของการเรียกใช้
---> Grpc.Core.RpcException: สถานะ (StatusCode="Unavailable", Detail="ข้อผิดพลาดในการเริ่มต้นการโทร gRPC HttpRequestException: เกิดข้อผิดพลาดขณะส่งคำขอ IOException: คำขอถูกยกเลิก Http2ConnectionException: เซิร์ฟเวอร์ HTTP/2 ส่งข้อมูลไม่ถูกต้องในการเชื่อมต่อ รหัสข้อผิดพลาด HTTP/2 'PROTOCOL_ERROR' (0x1), DebugException="System.Net.Http.HttpRequestException: เกิดข้อผิดพลาดขณะส่งคำขอ
ฉันแน่ใจว่าไม่มีปัญหากับคำขอที่เป็นปัญหา เพราะเมื่อฉันทำการส่งต่อพอร์ตบนหนึ่งในพอร์ตและกดที่ localhost:5000 endpoint ฉันได้รับผลลัพธ์ที่ต้องการ
ฉันตรวจสอบตัวโหลดบาลานเซอร์และกลุ่มเป้าหมายในคอนโซล AWS แล้ว และอยู่ในสถานะปกติ อย่างไรก็ตาม การแสดงแดชบอร์ดการตรวจสอบจะเพิ่มจำนวน ELB 4xx ทุกครั้งที่ฉันเข้าถึงจุดสิ้นสุด ฉันแน่ใจว่ามีปัญหาที่ระดับทางเข้า แต่ฉันไม่สามารถเข้าใจได้ว่าคืออะไรกันแน่
ไม่แน่ใจว่าฉันพลาดอะไรไปหรือมีอะไรผิดปกติกับการตั้งค่าของฉัน แต่เนื่องจาก port-forward ทำงานตามที่คาดไว้ สิ่งนี้จึงต้องมีปัญหาบางอย่างกับ LoadBalancer
สำหรับการอ้างอิง ฉันได้ลองเปลี่ยน backend-protocol-version เป็น GRPC ซึ่งไม่ได้ผล