k8s 网络基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s 网络基础相关的知识,希望对你有一定的参考价值。
参考技术A 重点关注containerPort,他与Pod IP组成了endpoint,Pod IP就是docker0网桥分配的IP,有pause容器拥有,Pod其他容器与pause容器公用一个network namespace。关于containerPort有个问题,如果一个pod中有2个容器,2个容器暴露相同的port,为什么可以?两个容器应该是公用pause容器的网络协议栈,如果tcp来了,到底是访问哪个容器的里面的进程?
如果简单点想尽快从外部访问pod,就可以直接指定hostPort,一般不推荐。
这个问题需要理解pause,待解决
service的网络信息早期采用ENV管理,后期通过DNS系统,直接使用service name访问cluster ip。
设置clusterIP: None,自己做LB,而非k8s做LB,提供cluster IP,减少网络损耗。直接返回对应ep。
service通过label selector筛选合适的pod,然后post到同名的Endpoints对象,Endpoints对象保存Endpoint,即Pod IP + Container Port
[图片上传失败...(image-83ad0d-1536978807340)]
endpoints用法:
具体流程:
比如这里有个场景,batch服务的task多副本,一个task对应一个service,一个pod;那么如何对这些task多副本做一个统一的入口呢?我们可以在这些services上面再加一个serivce,然后手动创建对应的Endpoints,这里注意endpoint必须是pod ip,而不能是cluster ip,至于为什么暂时不清楚。
详见 services
以上是关于k8s 网络基础的主要内容,如果未能解决你的问题,请参考以下文章