我有一個 AKS 群集,以及一個單獨的 VM。AKS 群集和 VM 位于同一 VNET(以及子網)中。
我使用以下 yaml 部署了一個回顯服務器,我可以使用來自 VM 的 vnet ip 直接卷曲 pod。但是當嘗試使用負載均衡器時,沒有任何回報。真的不確定我錯過了什么。任何幫助表示贊賞。
apiVersion: v1
kind: Service
metadata:
name: echo-server
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: echo-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo-deployment
spec:
replicas: 1
selector:
matchLabels:
app: echo-server
template:
metadata:
labels:
app: echo-server
spec:
containers:
- name: echo-server
image: ealen/echo-server
ports:
- name: http
containerPort: 8080
下面的圖片展示了這種情況

我期望當從負載均衡器卷曲 vnet ip 時,會收到與我直接卷曲 pod ip 相同的回應
uj5u.com熱心網友回復:
您是否檢查過 pod 的 IP 是否正確映射為服務的端點?你可以檢查它使用,
k describe svc echo-server -n test | grep Endpoints
如果不是,請使用您的實際部署檢查標簽和選擇器(而不是描述中的資源)。
如果映射正確,您確定您使用的 VM ( _@tester ) 位于正確的子網下,該子網也應包括 iLB IP;10.240.0.226?
uj5u.com熱心網友回復:
你能檢查你的內部負載均衡器健康探測嗎?
“對于 Kubernetes 1.24 ,帶有 appProtocol HTTP/HTTPS 的 LoadBalancer 型別的服務將切換為使用 HTTP/HTTPS 作為健康探測協議(而在 v1.24.0 之前它使用 TCP)。并且 / 將用作默認的健康探測請求路徑。如果您的服務對 / 沒有回應 200,請確保您正在設定服務注釋 service.beta.kubernetes.io/port_{port}_health-probe_request-path 或 service.beta.kubernetes.io/azure-load-具有正確請求路徑的 balancer-health-probe-request-path(適用于所有埠)以避免服務中斷。” (參考:https ://github.com/Azure/AKS/releases/tag/2022-09-11 )
uj5u.com熱心網友回復:
找到解決方案,我唯一需要做的就是在服務宣告中添加以下內容:
externalTrafficPolicy: 'Local'
完整的yaml如下
apiVersion: v1
kind: Service
metadata:
name: echo-server
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
externalTrafficPolicy: 'Local'
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: echo-server
以前它被設定為“集群”。
剛剛獲得 azure 支持,這似乎是一個特定的錯誤(它發生在較新版本的 AKS 中),在此處發布相關鏈接:https ://github.com/kubernetes/ingress-nginx/issues/8501
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/523595.html
