繁体   English   中英

如何从通过 k8s 中的服务部署的外部负载均衡器修复“连接失败”?

[英]How do I fix 'Failed to Connect' from an external load balancer deployed via a service in k8s?

我在 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

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

  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. Tried to curl to the pod IP (from step 1): curl -v -m5 http://<Pod IP>:80

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM