Rancher入门到精通-2.0 深入理解k8s网络模型及服务访问配置

举报
隔壁老汪 发表于 2022/06/27 00:11:41 2022/06/27
【摘要】 当我们使用k8s部署了一套应用时(比如一个blog系统),要怎么访问它便成了我们最直接的问题,这里的访问应该同时包括了对外(tomcat)和对内(mysql)服务。 要弄清楚这个问题,首先我们需要了解kubernetes网络模型设计的基础原则: 每个pod都拥有一个独立的ip地址,而且假定所有的pod都在一个直接连通的、扁平的网络空...

当我们使用k8s部署了一套应用时(比如一个blog系统),要怎么访问它便成了我们最直接的问题,这里的访问应该同时包括了对外(tomcat)和对内(mysql)服务。

要弄清楚这个问题,首先我们需要了解kubernetes网络模型设计的基础原则:

每个pod都拥有一个独立的ip地址,而且假定所有的pod都在一个直接连通的、扁平的网络空间中。

回到题目的问题,我们这里分两步分讨论:

1. 集群内部访问


1.1 通过pod的ip访问
通过这种方式访问是不可靠的,因为当pod重启后,它的ip会重新分配

1.1.1 因为pod中所有容器共享一个网络堆栈(pod的ip地址是docker0分配的),所以同一个pod中的容器可以通过localhost来互相访问 
1.1.2 不同pod的容器访问可以使用endpoint方式:pod的ip+容器的端口

1.2 通过服务访问
通过创建service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,这个地址不会因为pod的重启而发生改变,所以是可靠的。

访问方式:服务的clusterIP(这个是系统分配的全局唯一ip)+containerPort(应用容器的端口)

2. 集群外部访问


2.1 直接访问容器
在启动pod的rc/deployment中指定容器的hostport,并设置pod级别的hostwork=true,这样直接通过主机ip+hostport就可以实现访问

2.2 通过service访问


2.2

文章来源: blog.csdn.net,作者:隔壁老瓦,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wxb880114/article/details/102550595

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。