【发布时间】:2019-01-13 15:44:44
【问题描述】:
我正在尝试运行一个连接到 Deployment pod 的简单负载平衡服务器。
我已经为 Mac 边缘版本安装了 Docker。
问题是当我尝试向暴露的负载均衡器 url http://localhost:8081/api/v1/posts/health 发出 GET 请求时,出现的错误是:
org.apache.http.NoHttpResponseException: localhost:8081 响应失败
做的时候:
k get services
我明白了:
显然,服务正在运行,但 localhost:8081 无法响应,不知道为什么,我一直在努力解决这个问题。
我的服务资源:
---
apiVersion: v1
kind: Service
metadata:
name: posts-api-svc
# namespace: nginx-ingress
labels:
app: posts-api
rel: beta
env: dev
spec:
type: LoadBalancer
selector:
app: posts-api
rel: beta
env: dev
ports:
- protocol: TCP
port: 8081
我的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts-api-deployment
# namespace: nginx-ingress
labels:
app: posts-api
rel: beta
env: dev
spec:
replicas: 1
selector:
matchLabels:
app: posts-api
env: dev
rel: beta
template:
metadata:
labels:
app: posts-api
env: dev
rel: beta
spec:
containers:
- name: posts-api
image: kimgysen/posts-api:latest
ports:
- containerPort: 8083
livenessProbe:
httpGet:
path: /api/v1/posts/health
port: 8083
initialDelaySeconds: 120
timeoutSeconds: 1
应该是基本设置!
我的部署 pod 没有显示任何重新启动,一切看起来都很好:
欢迎任何建议!
注意:
编辑
当使用端口 31082 时,我得到错误:
org.apache.http.conn.HttpHostConnectException:连接到 localhost:31082 [localhost/127.0.0.1] 失败:连接被拒绝 (连接被拒绝)
我没有使用 8083 端口的具体原因。
这是因为我先尝试了 nodeport(使用多个服务),现在尝试了负载均衡器。
下一步将是入口,但第一次对我来说并没有真正奏效,所以我尝试一步一步地进行。
我使用端口 8081 而不是端口 80,因为我在某处读到 Mac OSX 上的端口 80 仅供 root 用户使用。
【问题讨论】:
-
你试过31082端口吗?查看您的第一个屏幕截图。您是否有意在部署中使用 8083 而在服务中使用 8081?
-
@RyanDawson 请查看我在问题中的编辑以回答您的问题。
-
可以作为诊断步骤来尝试端口转发,看看您是否可以像那样访问kubernetes.io/docs/tasks/access-application-cluster/… 然后是kubernetes.io/docs/tasks/debug-application-cluster/…中的步骤
-
@RyanDawson 好的,我会试试这个,谢谢你的资源!