Đã nhiều tuần kể từ khi tôi có nhiều thời gian chờ khi gcp lbs kiểm tra ingress-nginx healthz trong khi mọi thứ phản hồi chính xác.
Tôi đang có một cụm GKE với Hệ điều hành được tối ưu hóa vùng chứa và n1-tiêu chuẩn-4 dưới dạng phiên bản máy và kubernetes v1.21.10-gke.2000
.
Đây là các nút của tôi:
top kubectl
TÊN CPU(lõi) CPU% BỘ NHỚ(byte) BỘ NHỚ%
gke-xxx-gke-cluster0-xxx-gke-cluster0-0a2ef32c-6lj0 821m 20% 3683Mi 29%
gke-xxx-gke-cluster0-xxx-gke-cluster0-98567a10-pqk2 2302m 58% 4983Mi 40%
gke-xxx-gke-cluster0-xxx-gke-cluster0-cd892740-3v6m 83m 2% 852Mi 6%
Đây là các nhóm và dịch vụ ingress-nginx của tôi:
TÊN TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI
pod/nginx-ingress-controller-fnxlc 1/1 Đang chạy 0 65m
pod/nginx-ingress-controller-m4nq2 1/1 Chạy 0 67m
pod/nginx-ingress-controller-tb4gc 1/1 Chạy 0 66m
TÊN LOẠI CLUSTER-IP (CỔNG IP NGOÀI) TUỔI
dịch vụ/nginx-ingress-controller NodePort ĐÃ GIẤU <none> 80:32080/TCP,443:32443/TCP 69d
dịch vụ/nginx-ingress-controller-metrics ClusterIP ĐÃ GIẤU <none> 10254/TCP 69d
Dưới đây là các giá trị lái xe của tôi cho ngress-nginx/ingress-nginx
phiên bản 4.1.0
:
ingressClassResource:
tên: nginx
đã bật: đúng
mặc định: sai
giá trị bộ điều khiển: "k8s.io/ingress-nginx"
loại: DaemonSet
livenessProbe:
httpNhận:
đường dẫn: "/healthz"
cổng: 10254
lược đồ: HTTP
ban đầuDelaySeconds: 10
chu kỳGiây: 10
thời gian chờGiây: 1
ngưỡng thành công: 1
failThreshold: 5
sẵn sàngThăm dò:
httpNhận:
đường dẫn: "/healthz"
cổng: 10254
lược đồ: HTTP
ban đầuDelaySeconds: 10
chu kỳGiây: 10
thời gian chờGiây: 1
ngưỡng thành công: 1
failThreshold: 3
podChú thích:
prometheus.io/scrape_metrics_app: "true"
prometheus.io/scrape_metrics_port_app: "10254"
prometheus.io/scrape_metrics_port_name_app: số liệu
tài nguyên:
yêu cầu:
CPU: 100m
bộ nhớ: 120Mi
dịch vụ:
đã bật: đúng
chú thích:
cloud.google.com/backend-config: '{"ports": {"80":"security-policy"}}'
cổng đích:
http: http
https: https
loại: NútPort
nútPorts:
http:32080
https:32443
tcp:
8080: 32808
chỉ số:
cổng: 10254
# nếu cổng này bị thay đổi, hãy thay đổi healthz-port: trong extraArgs: cho phù hợp
đã bật: đúng
priorityClassName: nginx-ingress
tuyển sinhWebhook:
đã bật: sai
vá:
priorityClassName: nginx-ingress
Cấu hình phụ trợ của tôi:
---
apiVersion: lập lịch trình.k8s.io/v1
loại: Lớp ưu tiên
metadata:
tên: nginx-ingress
giá trị: 1000000
toàn cầuDefault: sai
---
apiVersion: cloud.google.com/v1
loại: BackendConfig
metadata:
tên: chính sách bảo mật
thông số kỹ thuật:
thời gian chờSec: 60
kết nốiDraining:
thoát nướcTimeoutSec: 10
chính sách bảo mật:
tên: "BẢO MẬT"
kiểm tra sức khỏe:
checkIntervalSec: 10
thời gian chờSec: 5
khỏe mạnh Ngưỡng: 1
không lành mạnhThreshold: 2
cổng: 32080
loại: HTTP
đường dẫn yêu cầu: /healthz
---
apiVersion: mạng.k8s.io/v1
loại: Xâm nhập
metadata:
tên: nginx-ingress-controller-gke
chú thích:
kubernetes.io/ingress.global-static-ip-name: "DỮ LIỆU BỊ GIẤU"
kubernetes.io/ingress.class: "gce"
thông số kỹ thuật:
ingressClassName: nginx
phụ trợ mặc định:
dịch vụ:
tên: nginx-ingress-controller
Hải cảng:
số: 80
Quy tắc tường lửa của tôi:
cho phép:
- Giao thức IP: tcp
cổng:
- '32080'
- '80'
tạoDấu thời gian: 'BẢO MẬT'
sự miêu tả: ''
hướng: INGRESS
vô hiệu hóa: sai
id: 'BẢO MẬT'
loại: tính toán # tường lửa
logConfig:
kích hoạt: sai
tên: REDACTED-allow-i-google-gke-health
mạng: https://www.googleapis.com/compute/v1/projects/REDACTED/global/networks/REDACTED
ưu tiên: 1000
selfLink: https://www.googleapis.com/compute/v1/projects/REDACTED/global/firewalls/REDACTED-allow-i-google-gke-health
phạm vi nguồn:
- 130.211.0.0/22
- 35.191.0.0/16
targetServiceAccounts:
- ĐÃ GIẤU
Dịch vụ phụ trợ của tôi LÀ KHỎE MẠNH:
---
phụ trợ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-b/instanceGroups/k8s-ig--REDACTED
trạng thái:
tình trạng sức khỏe:
- tình trạng sức khỏe: KHỎE MẠNH
ví dụ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-b/instances/REDACTED
Địa chỉ ip: ĐÃ GIẤU
cổng: 32080
loại: tính toán # backendServiceGroupHealth
---
phụ trợ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-c/instanceGroups/k8s-ig--REDACTED
trạng thái:
tình trạng sức khỏe:
- tình trạng sức khỏe: KHỎE MẠNH
ví dụ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-c/instances/REDACTED
Địa chỉ ip: ĐÃ GIẤU
cổng: 32080
loại: tính toán # backendServiceGroupHealth
---
phụ trợ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-d/instanceGroups/k8s-ig--REDACTED
trạng thái:
tình trạng sức khỏe:
- tình trạng sức khỏe: KHỎE MẠNH
dụ: https://www.googleapis.com/compute/v1/projects/REDACTED/zones/europe-west1-d/instances/REDACTED
Địa chỉ ip: ĐÃ GIẤU
cổng: 32080
loại: tính toán # backendServiceGroupHealth
Proxy http/https mục tiêu của tôi là OKAY.
Vấn đề là, kể từ GKE 1.21, tôi có rất nhiều thời gian chờ kiểm tra sức khỏe từ google lb:
{
"insertId": "120vrdac2cf",
"jsonPayload": {
"healthCheckProbeResult": {
"healthCheckProtocol": "HTTP",
"healthState": "KHÔNG KHỎE MẠNH",
"previousHealthState": "KHỎE MẠNH",
"probeResultText": "Phản hồi HTTP: , Lỗi: Hết thời gian chờ kết nối",
"probeSourceIp": "35.191.13.216",
"ipAddress": "BẢO MẬT",
"probeCompletionTimestamp": "2022-04-27T15:40:52.868912018Z",
"previousDetailedHealthState": "KHỎE MẠNH",
"targetIp": "BẢO MẬT",
"detailedHealthState": "HẾT THỜI GIAN",
"responseLatency": "5.001074s",
"cổng đích": 32080,
"probeRequest": "/healthz"
}
},
"nguồn": {
"type": "gce_instance_group",
"nhãn": {
"instance_group_name": "k8s-ig--d350a72156e88e7d",
"instance_group_id": "7274987390644036118",
"địa điểm": "châu Âu-tây1-c",
"project_id": "BẢO MẬT"
}
},
"dấu thời gian": "2022-04-27T15:40:53.307035382Z",
"mức độ nghiêm trọng": "THÔNG TIN",
"logName": "projects/REDACTED/logs/compute.googleapis.com%2Fhealthchecks",
"receiveTimestamp": "2022-04-27T15:40:54.568716762Z"
}
Đây là một ảnh chụp màn hình của tất cả các lỗi:
lỗi kiểm tra sức khỏe
Tôi không có vấn đề về tường lửa.
Từ một nút, không có vấn đề kiểm tra sức khỏe:
trong khi đúng; làm curl -m 2 -o /dev/null -sw "%{http_code} %{time_total}s\n" 0:32080/healthz; xong
200 0,000984 giây
200 0,000845s
200 0,000704s
200 0,002411 giây
200 0,001235s
200 0,000784 giây
200 0,001471 giây
200 0,000498 giây
Phản hồi http luôn là 200.
Tất cả điều này có nghĩa là cả gke và nhóm đều khỏe mạnh. Nếu các nhóm không khỏe mạnh, tôi sẽ có một số lần khởi động lại mà tôi hoàn toàn không có.
Kiểm tra tình trạng nhóm của tôi luôn phản hồi trong mili giây.
Nhưng vì một số lý do không rõ, tôi gặp rất nhiều vấn đề về kiểm tra sức khỏe Hết thời gian chờ kết nối
đang gây ra sự cố lưu lượng truy cập trên trang web của tôi.
Trong quá trình gỡ lỗi, tôi không có lưu lượng truy cập trên trang web của mình.
Tôi không nhớ có bất kỳ vấn đề nào với GKE 1.19/1.20
. Tất nhiên tôi đã thử nhiều phiên bản 1.21 nhưng vẫn không gặp may.
Tôi đã chuyển từ ingress-nginx 4.0.16
đến 4.1.0
nhưng vấn đề vẫn còn.
Tôi cũng đã tăng khoảng thời gian kiểm tra sức khỏe và thời gian chờ nhưng vấn đề tương tự.
Tôi giống như có thể nginx đang tải lại cấu hình của anh ấy rất nhiều lần nhưng thực tế không phải vậy vì trong nhật ký khá giống nhau:
nginx-ingress-controller-fnxlc controller I0427 16:10:38.352350 8 event.go:285] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nginx-ingress", Name:"nginx-ingress-controller- gke", UID:"45baf918-c5b9-499e-9930-b6e5d03aa38e", APIVersion:"networking.k8s.io/v1", ResourceVersion:"83550719", FieldPath:""}): gõ: 'Bình thường' lý do: ' Sync' Được lên lịch để đồng bộ hóa
Có ai có cùng vấn đề này không?
Bất kỳ giúp đỡ?