0

首先我想说我是kubernetes-topic的初学者,当我给服务一个固定的IP时,我遇到的问题是我无法(通过服务)到达一个pod,所以我想总结一下我认为我已经理解的事情,也许这里有人可以纠正我或了解我解决问题的方法。

我使用 ansible-script kubespray 在裸机(2 个 CentOS 7 的节点)上部署我的集群,并配置脚本和生成的集群如下:

  • 代理模式:ipvs
  • 服务网络:10.0.0.0/24
  • 吊舱网络:10.0.1.0/24
  • 网络插件:编织网
  • dns_mode: dnsmasq_kubedns

部署成功后,我可以将 pod、服务、机密等部署到集群,所以对我来说它工作正常,但是当我现在定义一个外部 IP 时,例如:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - port: 80
  selector:
    name: nginx
  externalIPs:
  - "192.168.1.42"
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  containers:
  - name: gluster-pod1
    image: gcr.io/google_containers/nginx-slim:0.8
    ports:
    - name: web
      containerPort: 80

我可以通过他的内部 IP、端点的 IP 和主服务器的 IP 而不是通过我为此服务定义的 IP 到达 pod,当我尝试这个时,我通过 curl 错误得到:“没有到主机的路由“对我来说奇怪的是,当我将服务的 IP 设置为与 kubernetes master 相同的 IP 时,即

...
spec:
  ports:
  - port: 80
  selector:
    name: nginx
  externalIPs:
  - "192.168.1.1"

我可以到达吊舱。

现在,在我阅读了大量文档和操作指南后,当我配置自己的负载均衡器来管理外部 IP 时,问题是可以解决的,因为如果我没有定义固定 IP,服务会等待外部 IP 的状态为“待定” .

但不幸的是,在阅读完所有文档之后,我不确定架构是否真的以这种方式工作,我的意思是 pod <-> service <-> load-balancer (<-> DHCP)

所以我可以通过服务到达吊舱。

当我开始时,我想关闭这篇文章,我不确定这是解决我的问题的正确方向。这就是为什么如果有人可以确认或纠正我,我将非常感激:-) 最好的问候丹

4

0 回答 0