【发布时间】:2019-01-15 09:11:02
【问题描述】:
我在 Oracle Virtualbox 中建立了一个 kubernetes 集群,其中一个主 VM(192.168.0.150)和两个工作 VM(.151 和 .152)通过 Virtualbox 的“桥接适配器”连接。 我使用的是法兰绒网络,pod 网络的 CIDR 是 10.244.0.0/16。 我创建了一个包含 4 个 nginx 服务器副本的部署,其中一个服务使用 nodePort 30300。
我正在使用“curl 'IP of worker node':30300”测试系统,我体验到大约 50% 的请求由 nginx 服务器正确处理,但另一半返回错误:“curl: (7) 无法连接到 192.168.0.151:30300: No route to host”。 我怀疑当调度程序返回一个在当前工作节点(具有在 curl 请求中使用的 IP 的节点)上运行的 pod 时请求得到服务,但是如果调度程序提供了一个位于另一个节点上的 pod,则数据包不会转发到该节点。
是否可以在没有外部负载均衡器的情况下使用带有多个工作节点的 nodePort 服务?
在这里您可以看到我用于创建部署和服务的 yaml 文件:
deployment.yaml:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
service.yaml
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 8080
targetPort: 80
name: web
nodePort: 30300
type: NodePort
selector:
app: nginx
【问题讨论】:
标签: kubernetes