Kubernetes应用部署模型解析(部署篇)(3)

这个chain主要是处理所有service对象的cluster IP和port到kube-proxy本地端口的映射。比如下面规则:

-A KUBE-PORTALS-CONTAINER -d 192.168.3.84/32 -p tcp -m comment --comment "default/nginx-service-nodeport:" -m tcp --dport 8000 -j REDIRECT --to-ports 43981

就是为nginx-service-nodeport服务的Cluster IP准备的。其中192.168.3.84/32是该服务获得的Cluster IP,端口8000是其在定义文件中指定的spec.ports.port。43981则是kube-proxy为这个service分配的本地端口。规则的意思是到192.168.3.84:8000的流量重定向到43981。

2.  KUBE-NODEPORT-CONTAINER

这条chain上则串连着类型为NodePort的service的NodePort规则。比如下面规则:

-A KUBE-NODEPORT-CONTAINER -p tcp -m comment --comment "default/nginx-service-nodeport:" -m tcp --dport 32606 -j REDIRECT --to-ports 43981

就是为nginx-service-nodeport服务的NodePort 32606准备的。意思是访问本地32606端口的流量重新定向到43981,后者是kube-proxy为这个service分配的本地端口。

3.  KUBE-PORTALS-HOST

这条chain上也关联着各个service的Cluster IP和Port的规则,比如:

-A KUBE-PORTALS-HOST -d 192.168.3.84/32 -p tcp -m comment --comment "default/nginx-service-nodeport:" -m tcp --dport 8000 -j DNAT --to-destination 192.168.0.201:43981

这条规则是和KUBE-PORTALS-CONTAINER类似的,只不过流量来自于本地进程。

4.  KUBE-NODEPORT-HOST

这条chain上则关联着类型为NodePort的service的NodePort规则。比如下面规则:

-A KUBE-NODEPORT-HOST -p tcp -m comment --comment "default/nginx-service-nodeport:" -m tcp --dport 30975 -j DNAT --to-destination 192.168.0.201:43981

这条规则是和KUBE-NODEPORT-CONTAINER类似的,只不过流量来自于本地进程。

总结

笔者认为Docker已经不是仅代表容器本身,而是一组以应用部署为中心的技术,产品和最佳实践生态系统。Kubernetes以其出身,文档的成熟度,社区的支持在这个生态系统中表现得比较突出。在部署Kubernetes时,我们首先要理解Kubernetes的组件结构,它们有哪些角色,各个角色的作用是什么和它们之接的通信。在应用部署时,了解Kubernetes的应用模型是非常重要的。笔者认为复制器和Service的概念是Kubernetes模型的核心,复制器和Service共同完成了应用的高可用性要求。最后本文以一个简单的nginx服务来展示了复制器和Service的使用,特别通过对Service的cluster IP和NodePort的分析,使得读者能够了解这个模型中的网络特性。

最后就是容器技术的选型,本文使用Docker作为容器,其实Kubernetes也支持CoreOS的rkt容器。kubelet的参数--container_runtime用于选择使用的容器技术。

OpenStack, Kubernetes, Mesos 谁主沉浮 

Kubernetes集群搭建过程中遇到的问题及解决 

Kubernetes 的详细介绍请点这里
Kubernetes 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/39cc0e621f62520e8b139fcc8dd327d1.html