如何从通过 k8s 中的服务部署的外部负载均衡器修复 'Failed to Connect'?
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
原来是我打开套接字的代码中的错误。希望这会对其他人有所帮助,这就是我进行故障排除的方式:
- 获得 pod 的 IP:
kubectl get pods -o wide
- 在集群中创建了一个新的 ubuntu pod:
kubectl run -it --rm --restart=Never --image=ubuntu:18.04 ubuntu bash
- 已将 curl 下载到新 pod:
apt-get update && apt-get install -y curl
- 尝试 curl 到 pod IP(从第 1 步开始):
curl -v -m5 http://<Pod IP>:80
第 4 步对我来说失败了,但是,我能够在我的机器上成功地 运行 docker 容器并连接。问题是我以本地主机而不是 0.0.0.0 打开连接。
我已经在 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
原来是我打开套接字的代码中的错误。希望这会对其他人有所帮助,这就是我进行故障排除的方式:
- 获得 pod 的 IP:
kubectl get pods -o wide
- 在集群中创建了一个新的 ubuntu pod:
kubectl run -it --rm --restart=Never --image=ubuntu:18.04 ubuntu bash
- 已将 curl 下载到新 pod:
apt-get update && apt-get install -y curl
- 尝试 curl 到 pod IP(从第 1 步开始):
curl -v -m5 http://<Pod IP>:80
第 4 步对我来说失败了,但是,我能够在我的机器上成功地 运行 docker 容器并连接。问题是我以本地主机而不是 0.0.0.0 打开连接。