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

时间:2019-09-25 19:02:26

标签: azure kubernetes azure-load-balancer

我已经在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 个答案:

答案 0 :(得分: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 && apt-get install -y curl
  4. 试图卷曲到Pod IP(从步骤1开始): curl -v -m5 http://<Pod IP>:80

步骤4对我来说失败了,但是,我能够在我的机器上成功运行docker容器并进行连接。问题是我以本地主机(而不是0.0.0.0)打开了连接。