azure - 如何从通过 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 容器并进行连接。问题是我将连接打开为 localhost 而不是 0.0.0.0。
推荐阅读
- react-native - 如何在 React Native 中的所有组件上使用样式表组件
- javascript - Kendo MultiSelect 使值被选择和禁用
- python - Python: Dictionary to pandas dataframe
- mongodb - 如何在猫鼬中检索超过 48 小时的 createdAt 文档
- android - 如何在来自多个用例/交互器的视图模型中使用 Kotlin Flows 的组合结果?
- google-app-engine - Permission error while deploying to app enginewith service account
- c++ - C++动态内存分配,在新的第二次崩溃之前使用删除
- google-chrome-extension - Chrome 扩展:将 HTML 添加到网页中
- android - Getting "Program type already present" error in Android Studio
- php - PHP按字母顺序排序