【k8s 系列】k8s 学习二十七 - 5,k8s 自身原理 5

简介: 我们知道容器是通过 pod 来承载的,我们在 k8s 中,服务都是跑在 pod 里面的,pod 里面可以跑 1 个容器,或者跑多个容器,那么咱们 pod 里面跑 1 个服务容器,咱真的就以为里面就只有这样个容器吗

【k8s 系列】k8s 学习二十七 - 5,k8s 自身原理 5

我们知道容器是通过 pod 来承载的,我们在 k8s 中,服务都是跑在 pod 里面的,pod 里面可以跑 1 个容器,或者跑多个容器,那么咱们 pod 里面跑 1 个服务容器,咱真的就以为里面就只有这样个容器吗?

pod 到底是个啥?

假如咱们 pod 里面只运行我们的一个服务的时候,也就是里面只运行一个容器,那么实际上里面是有几个容器呢?

是有两个的,默认会有一个基础容器,提供 Linux 命名空间

  • 一个我们自己的容器
  • 一个附加容器

这个附加容器难道就只提供命名空间?

不不不,这个附加容器就干一件事,就是保存这个 pod 的所有容器的命名空间

画一个简图来形象的说明一下:

image.png

最开始我们认为的是图中的上半部分,那么实际上容器 A 共享的命名空间是保存在哪里的呢?就是保存在基础容器里面的

哪怕我们现在再加一个容器 B,这个容器 B 也是共享这个基础容器的 Linux 命名空间的

那么基础容器的生命周期是多少呢?

上述有说到一个 pod 里面的所有容器都会共享这个基础容器保存的命名空间

咱们自己加入的容器,做服务,可能会有挂的时候,也会有重启的时候,放咱们的服务容器重启启动时,还是需要之前的 Linux 命名空间,这个时候,就可以找基础容器获取了

只要 pod 还活着,基础容器就会一直陪着它, pod 不挂,基础容器不消失

如果手动关闭了这个重要的基础容器,那么节点里面的 关键角色之一 kubelet 就会监控到异常信息,就会马上重新建立一个基础容器

pod 和 pod 之间通信会进行网络地址转换吗?

首先说一下结论:

  • pod 和 pod 之间通信,是没有进行网络地址转换 NAT 的
  • pod 和 node 之间通信,也没有进行网络地址转换 NAT

image.png

就比如说在 节点 1 里面有一个 pod1,ip 是 1.1.1.1 , 节点 2 里面有一个 pod 2, ip:1.1.1.2

当 pod 1 中的容器需要访问 pod 2 的时候, 节点 1 出去的包,源 ip 是 pod 1 的 ip,目的 ip 是 pod 2 的 ip,同样,到 pod  2 收到包的时候也是这样的,并没有经过 NAT

pod 和 node 通信也是这样的逻辑

我们知道 pod 容器实际上是运行在 worker 节点上的, 那么我们要访问咱们运行在 worker 节点上的 pod ,但是咱们的主控节点是 master

这个时候,如果我们外面的网络,需要访问上面这个 pod 节点的容器,那么这个时候,外面的网络需要访问 master 的 ip 还是 worker 的 ip 呢?

需要访问 worker 的 ip ,这是为什么呢?可以思考一下...

今天就到这里,学习所得,若有偏差,还请斧正


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
11月前
|
存储 Kubernetes 持续交付
k8s学习
【10月更文挑战第1天】
400 4
|
11月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
192 2
k8s学习--YAML资源清单文件托管服务nginx
|
11月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
396 2
k8s学习--基于Ingress-nginx实现灰度发布系统
|
11月前
|
存储 Kubernetes 调度
|
11月前
|
Kubernetes API 调度
k8s学习--pod的所有状态详解(图例展示)
k8s学习--pod的所有状态详解(图例展示)
1196 1
|
11月前
|
Kubernetes JavaScript 前端开发
k8s学习--chart包开发(创建chart包)
k8s学习--chart包开发(创建chart包)
557 1
|
11月前
|
Kubernetes 固态存储 调度
k8s学习--如何控制pod调度的位置
k8s学习--如何控制pod调度的位置
172 0
|
11月前
|
存储 Kubernetes 调度
k8s学习--k8s群集部署zookeeper应用及详细解释
k8s学习--k8s群集部署zookeeper应用及详细解释
599 0
|
11月前
|
Kubernetes 监控 测试技术
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
387 0
|
11月前
|
Kubernetes 关系型数据库 MySQL
k8s学习--利用helm部署应用mysql,加深helm的理解
k8s学习--利用helm部署应用mysql,加深helm的理解
922 0

推荐镜像

更多