首页 > 解决方案 > 如何从通过 k8s 中的服务部署的外部负载均衡器修复“连接失败”?

问题描述

我在 AKS 中部署了一个 pod,并尝试通过外部负载均衡器连接到它。

我为故障排除所做的项目是:

我用来部署的 .yaml 文件是:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qubo
  namespace: qubo-gpu
spec:
  replicas: 1
  selector:
    matchLabels:
      app: qubo
  template:
    metadata:
      labels:
        app: qubo
    spec:
      containers:
        - name: qubo-ctr
          image: <Blanked out>
          resources:
            limits:
              nvidia.com/gpu: 1
          command: ["/app/xqx"]
          args: ["80"]
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: api
  namespace: qubo-gpu
  annotations:
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
  selector:
    app: qubo

标签: azurekubernetesazure-load-balancer

解决方案


原来是我打开套接字的代码中的错误。希望这对其他人有所帮助,这就是我进行故障排除的方式:

  1. 获得 pod 的 IP: kubectl get pods -o wide
  2. 在集群中创建了一个新的 ubuntu pod: kubectl run -it --rm --restart=Never --image=ubuntu:18.04 ubuntu bash
  3. 将 curl 下载到新 pod: apt-get update && apt-get install -y curl
  4. 尝试 curl 到 pod IP(从步骤 1 开始): curl -v -m5 http://<Pod IP>:80

第 4 步对我来说失败了,但是,我能够在我的机器上成功运行 docker 容器并进行连接。问题是我将连接打开为 localhost 而不是 0.0.0.0。


推荐阅读