適用於容器的應用程式閘道的自訂健全狀態探查
適用於容器的應用程式閘道預設會監視所有後端目標的健康情況。 後端目標狀況良好或狀況不良時,適用於容器的應用程式閘道只會將流量散發至狀況良好的端點。
除了使用預設的健全狀況探查監視,您也可以自訂健全狀況探查,以符合應用程式的需求。 本文討論預設和自訂健全狀態探查。
健全狀態探查的順序和邏輯如下:
下列屬性構成自訂健全狀態探查:
屬性 | 預設值 |
---|---|
interval | 應該將健全狀態探查傳送至後端目標的頻率 (以秒為單位)。 最小間隔必須 > 0 秒。 |
timeout | 要求在標示為失敗之前應該等待多久的時間 (以秒為單位)。 最小間隔必須 > 0 秒。 |
healthyThreshold | 將目標端點標示為狀況良好之前的健全狀態探查數目。 最小間隔必須 > 0。 |
port | 探查後端目標時所使用的連接埠號碼。 |
unhealthyTreshold | 要在後端目標應該標示為狀況不良之前失敗的健全狀態探查數目。 最小間隔必須 > 0。 |
grpc | 如果後端服務預期 gRPC 連線,則加以指定。 值必須是 {} 。 |
(http) | 如果後端服務預期 http 連線,則加以指定。 |
(http) host | 後端目標要求中所指定的主機名稱。 |
(http) path | 要求的特定路徑。 如果應該載入單一檔案,則路徑可能是 /index.html。 |
(http -> match) statusCodes | 包含兩個屬性 (start 和 end ),其定義從後端傳回的有效 HTTP 狀態碼範圍。 |
useTLS | 指定健康情況檢查是否應該強制執行 TLS。 如果未指定,若健康狀態檢查使用相同的連接埠,健康情況檢查會使用與服務相同的通訊協定。 如果連接埠不同,健康情況檢查是純文字。 |
預設的健全狀況探查
當您未定義自訂探查設定或未設定整備度探查時,適用於容器的應用程式閘道會自動設定預設健全狀況探查。 監視行為的運作方式是對已設定後端目標的 IP 位址提出 HTTP GET 要求。 針對預設探查,如果後端目標設定為使用 HTTPS,則探查會使用 HTTPS 來測試後端目標的健康狀態。
如需更多實作詳細資料,請參閱 API 規格中的 HealthCheckPolicyConfig。
使用預設健全狀態探查時,會使用每個健全狀態探查屬性的下列值:
屬性 | 預設值 |
---|---|
interval | 5 秒鐘 |
timeout | 30 秒 |
healthyTrehshold | 1 個探查 |
unhealthyTreshold | 3 個探查 |
port | 所使用的連接埠號碼是由輸入資源中的後端連接埠號碼或 HttpRoute 資源中的 HttpRoute 後端連接埠所定義。 |
(http) host | localhost |
(http) path | / |
useTLS | 指定 TLS 時 HTTP 和 HTTPS 的 HTTP。 |
1 當後端 TLSPolicy 參考了目標後端服務時 (適用於閘道 API 實作),或指定了具有 HTTPS 的 backendSetting 通訊協定的 IngressExtension 時 (適用於輸入 API 實作),將會使用 HTTPS。
注意
健康情況探查會以 Microsoft-Azure-Application-LB/AGC
的 User-Agent
值起始。
自訂的健全狀況探查
在閘道 API 和輸入 API 中,可以定義 HealthCheckPolicy 資源,並參考健全狀態探查應檢查的服務,來定義自訂健全狀態探查。 因為 HTTPRoute 或輸入資源使用適用於容器的應用程式閘道的類別參考來參考服務,所以會針對每個參考使用自訂健全狀態探查。
在此範例中,適用於容器的應用程式閘道所發出的健全狀態探查會將主機名稱 contoso.com 傳送至構成 test-service 的 Pod。 要求的通訊協定是 http
,其路徑為 /
。 每 5 秒會發出一次探查,並在判斷連線逾時之前等候 3 秒。如果收到回應,則會將 200 與 299 (含 200 和 299) 之間的 HTTP 回應碼視為狀況良好,並將所有其他回應都視為狀況不良。
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
name: gateway-health-check-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: test-service
namespace: test-infra
default:
interval: 5s
timeout: 3s
healthyThreshold: 1
unhealthyThreshold: 1
port: 8123
# grpc: {} # defined if probing a gRPC endpoint
http:
host: contoso.com
path: /
match:
statusCodes:
- start: 200
end: 299
useTLS: true
EOF