kubernetes - Kubernetes 端口转发 - 连接被拒绝
问题描述
转发端口时出现以下错误。任何人都可以帮忙吗?
mjafary$ sudo kubectl port-forward sa-frontend 88:82
Forwarding from 127.0.0.1:88 -> 82
Forwarding from [::1]:88 -> 82
错误日志:
Handling connection for 88
Handling connection for 88
E1214 01:25:48.704335 51463 portforward.go:331] an error occurred forwarding 88 -> 82: error forwarding port 82 to pod a017a46573bbc065902b600f0767d3b366c5dcfe6782c3c31d2652b4c2b76941, uid : exit status 1: 2018/12/14 08:25:48 socat[19382] E connect(5, AF=2 127.0.0.1:82, 16): Connection refused
这是 pod 的描述。我的期望是,当我在浏览器中点击 localhost:88 时,请求应该转发到 jafary/sentiment-analysis-frontend 容器并且应用程序页面应该加载
mjafary$ kubectl describe pods sa-frontend
Name: sa-frontend
Namespace: default
Node: minikube/192.168.64.2
Start Time: Fri, 14 Dec 2018 00:51:28 -0700
Labels: app=sa-frontend
Annotations: <none>
Status: Running
IP: 172.17.0.23
Containers:
sa-frontend:
Container ID: docker://a87e614545e617be104061e88493b337d71d07109b0244b2b40002b2f5230967
Image: jafary/sentiment-analysis-frontend
Image ID: docker-pullable://jafary/sentiment-analysis-frontend@sha256:5ac784b51eb5507e88d8e2c11e5e064060871464e2c6d467c5b61692577aeeb1
Port: 82/TCP
Host Port: 0/TCP
State: Running
Started: Fri, 14 Dec 2018 00:51:30 -0700
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-mc5cn (ro)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
default-token-mc5cn:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-mc5cn
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
解决方案
连接被拒绝的原因是没有进程监听端口 82。用于创建 nginx 映像的 dockerfile 暴露了端口 80,并且在您的 pod 规范中,您还暴露了端口 82。但是,nginx 被配置为监听端口80.
这意味着您的 pod 有两个已暴露的端口:80 和 82。但是,nginx 应用程序正在主动侦听端口 80,因此只有对端口 80 的请求才有效。
要使用端口 82 使您的设置工作,您需要更改 nginx 配置文件,以便它侦听端口 82 而不是 80。您可以通过创建自己的 docker 镜像来执行此操作,并将更改内置到您的镜像中,或者您可以使用 configMap 将默认配置文件替换为您想要的设置
推荐阅读
- r - 如何将 bind_rows 与 tibble 一起使用?
- php - 如何在 Angular JS 1.6.9 中将数据发布/更新到 PHP?
- jquery - 使用jQuery仅在具有其他字符的div中选择数字
- r - 按大小写拆分字符串
- azure - Azure 机器学习服务在哪里缓存数据?
- python - 使用 scapy 从 pcap 文件中提取有效负载中的特定字节
- excel - 用于将所有数据转换为具有任意数量分隔符的列的 VBA 代码
- laravel - 如何在 Google Cloud 中访问 Laravel 文件夹
- r - 将长 Excel 公式翻译成 Dplyr
- php - 如何检查 php 参数的来源?我