我正在尝试运行连接到Deployment Pod的简单负载平衡服务器。
我已经安装了Docker for Mac edge版本。
问题是,当我尝试向公开的负载均衡器URL http://localhost:8081/api/v1/posts/health发出GET请求时,出现的错误是:
org.apache.http.NoHttpResponseException:本地主机: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
应该是基本设置!
我的部署窗格没有显示任何重新启动,一切看起来都不错:
欢迎任何建议!
注意:
修改
使用端口31082时出现错误:
org.apache.http.conn.HttpHostConnectException:连接到 本地主机:31082 [本地主机/127.0.0.1]失败:连接被拒绝 (连接被拒绝)
使用端口8083没有特定原因。
这是因为我首先尝试了nodeport(具有多个服务),现在尝试了Load Balancer。
下一步将是入口,但是第一次对我来说并没有真正解决问题,因此我尝试逐步进行。
我使用端口8081而不是端口80,因为我在某处读到Mac OSX上端口80仅由root用户使用。
答案 0 :(得分:0)
服务端口必须对应于Deployment containerPort。
我现在可以在localhost:8083上访问api。