首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >azure AKS内部负载均衡器没有响应请求

azure AKS内部负载均衡器没有响应请求
EN

Stack Overflow用户
提问于 2022-10-29 17:45:43
回答 3查看 224关注 0票数 0

我有一个AKS集群,以及一个单独的VM。AKS集群和VM在同一个VNET (以及子网)中。

我用下面的yaml部署了一个回显服务器,我可以从VM直接使用vnet来压缩pod。但是当用负载均衡器尝试时,什么都没有返回。真的不知道我错过了什么。任何帮助都是非常感谢的。

代码语言:javascript
复制
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相同的响应。

EN

回答 3

Stack Overflow用户

发布于 2022-10-30 04:30:24

您是否检查过pod的IP是否被正确地映射为服务的端点?你可以用

k describe svc echo-server -n test | grep Endpoints

如果没有,请检查标签和选择器与您的实际部署(而不是在描述中的资源)。

如果映射正确,是否确定所使用的VM (_@tester)位于正确的子网下,其中也应包括iLB IP;10.240.0.226?

票数 0
EN

Stack Overflow用户

发布于 2022-10-31 13:52:48

你能检查一下你的内部负载平衡器健康探头吗?

“对于Kubernetes 1.24+,具有LoadBalancer HTTP/HTTPS类型的服务将切换为使用HTTP/HTTPS作为健康探测协议(而在v1.24.0之前它使用appProtocol )。和/将用作默认的健康探测请求路径。如果您的服务没有为服务响应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)

如果您正在使用nginx-ingress控制器,请尝试添加与doc:(https://learn.microsoft.com/en-us/azure/aks/ingress-basic?tabs=azure-cli#basic-configuration)中提到的相同的内容。

代码语言:javascript
复制
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
  --reuse-values \
  --namespace <NAMESPACE> \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz
票数 0
EN

Stack Overflow用户

发布于 2022-10-31 15:22:54

找到解决方案后,我唯一需要做的就是将以下内容添加到服务声明中:

代码语言:javascript
复制
externalTrafficPolicy: 'Local'

yaml全文如下

代码语言:javascript
复制
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

以前,它被设置为“群集”。

刚开始支持蔚蓝,似乎是一个特定的错误(它发生在更新版本的AKS),张贴在这里的相关链接:https://github.com/kubernetes/ingress-nginx/issues/8501

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74247498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档