我已经在Oracle Virtualbox中建立了一个kubernetes集群,其中有一个通过Virtualbox的“桥接适配器”连接的主VM(192.168.0.150)和两个Worker VM(.151和.152)。 我正在使用法兰绒网络,并且Pod网络的CIDR为10.244.0.0/16。 我创建了一个包含4个nginx服务器副本的部署,并使用nodePort 30300提供了服务。
我正在用“ curl'工作节点的IP:30300”测试系统,我已经体验到大约50%的请求已由nginx服务器正确处理,但另一半返回错误:“ curl: (7)无法连接到192.168.0.151:30300:主机没有路由。 我怀疑当调度程序返回在当前工作程序节点(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