【问题标题】:How do I fix 'Failed to Connect' from an external load balancer deployed via a service in k8s?如何从通过 k8s 中的服务部署的外部负载均衡器修复“连接失败”?
【发布时间】:2020-01-26 00:52:29
【问题描述】:

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

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

  • 已验证(使用 kubectl)部署在 k8s 中的 pod 并且运行正常。
  • 已验证(使用 netstat)网络端口 80 处于“侦听”状态。我使用“kubectl exec”登录到 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

【问题讨论】:

  • 能否在本地运行镜像并访问成功?
  • 您忘记在您的服务中指定spec.ports.targetPort。编辑:根据Docs,默认情况下targetPort设置为端口。这应该不是问题。

标签: azure kubernetes azure-load-balancer


【解决方案1】:

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

  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 &amp;&amp; apt-get install -y curl
  4. 尝试 curl 到 pod IP(从第 1 步开始): curl -v -m5 http://&lt;Pod IP&gt;:80

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

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多