1. k8s的网络模型是什么?
- 容器与容器之间要能相互通信
- pod和pod之间要能相互通信
- 任意pod和任意service之间要能相互通信
- 集群外部和内部组件要相互通信
- 任意node/pod的ip地址要唯一
- 采用了网络插件flannel/calico等第三方解决方案。
- 其中flannel的ip地址为..124.0或者..125.0,然后给docker0分配的ip地址为..124.1或者..125.1,因为网段地址可能不够,所以有时候需要用到ipv6
网络模型
网络模型 -
其中node1的pod想要和node2的pod想要通信,则先通过veth0找到docker0再到flanneld,flanneld去etcd找到node2的ip地址,然后通过eth0和node2进行交流,所以前提是node1和node2之间必须要能够进行相互通信。
Flannel实现跨node之间的通讯
2. k8s的ip概念有哪些?
集群IP概念-
proxy ip可以通过命令行查看,可以对外访问
proxy ip -
service ip可以通过k8s的控制面板查看,其由lvs分配,是一个固定的虚拟ip
service ip -
node ip是通过命令行查看,安装不同系统的镜像会获得不同名字。
node ip
3. k8s和docker的网络模式有什么区别?
答:docker有4种网络模式,默认为bridge,k8s只用bridge这一种网络模式,因为这种模式可以使得容器和宿主机相互通信。
docker
k8s
k8s
4. k8s容器之间是如何进行通信的?
答:pod是一堆容器的组合,容器是没有ip的,他们使用的pod的ip,共享pod的网络命名空间,通过localhost可以相互通信,所以相互之间不能有重复的端口号。
pod网络
5. k8s的pod之间是如何进行通信的?
pod的通信-
如果两个pod是同一个node,因为pod的内网ip是由同一个网卡docker0分发的,所以是可以相互通信的,相当于内网ip之间可以互相ping。
同一个node -
如果两个pod是不同node,首先打通不同node之间的通信,使之在同一个通信网段
不同node
6. service的ip是虚拟的,kube-proxy已经帮忙做好了复杂均衡。
service ipkube proxy
7. kube-dns的好处是不用记ip
kube-dns8. 开源的网络组件有哪些?
CNMCNI
网友评论