kubernetes实现了对容器的编排,实际上就是对计算、网络、存储的编排。
在网络部分,涉及到的概念或者模块有三个:
-
kube-proxy: 本质上讲就是Service 资源的实现
kube-proxy pod运行在每个kubernetes节点中,通过iptables或者ipvs的方式实现service到pod-endpoint的负载均衡能力。
ipvs是基于netfilter实现的内核级的lvs实现。 当然iptables也是基于netfilter的5个链实现。
Kube-proxy就是通过添加各种规则实现虚拟IP到实际pod的endpoint IP的转发。 -
cni: pod底层网络实现
CNI的具体实现完成了对pod container 的IP分配和网络处理(封装、路由、转发)。不同的cni具有不同的实现方式,技术栈也并不相同。 -
coreDNS: kubernetes中的dns实现。
CoreDNS 和普通的DNS类似,实现了name到IP的转换。