k8s hostport
hostport是一种把host的ip:port绑定到pod的port方法,是端口路由,访问host的ip:port即可访问pod的port。
hostport是一个三元组配置:<hostIP, hostPort, protocol>
,hostIP不配置时,默认为0.0.0.0
,protocol
默认为TCP
。
如下的Pod声明文件,指nginx这个Pod使用hostport,使用的是<0.0.0.0, 80, TCP>,即host上所有IP的80端口的TCP连接,都会转发给该nginx Pod。
1 | apiVersion: v1 |
特点:
- host上的任何两个pod不能有相同的hostport。由于端口绑定,host上的某个端口只能被1个Pod所绑定。
- host的ip和port资源是有限的,所能支持使用hostPort的pod数也是有限的。
- 灵活性差,需要维护name service。当pod被迁移到新node时,需要使用新node的ip访问pod。
node1的ip为10.0.13.3
,则:
- <0.0.0.0, 80, TCP> 和 <10.0.13.3, 80, TCP>是冲突的。
- <10.0.13.3, TCP> 和 <10.0.13.3, 80, TCP>是冲突的。
- <0.0.0.0, 80, TCP> 和 <10.0.13.3, 80, UDP>是不冲突的。
- <10.0.13.3, 80, TCP> 和 <10.0.13.3, 80, UDP>是不冲突的。
- <0.0.0.0, 80, TCP> 和 <10.0.13.3, 90, TCP>是不冲突的。