pod 控制器 3

2023-07-01  本文已影响0人  阿兵云原生

简单回顾

之前我们学习过的的 docker ,例如我们运行

docker run busybox echo "hello wrold"

[图片上传失败...(image-536465-1688307815530)]

他的实际内在逻辑是这个样子的

[图片上传失败...(image-7527ec-1688307815530)]

前面我们也知道了 每一个 pod 或者 docker 容器,都有自己独立的文件系统,进程,用户,主机名和网络接口

简单运行 pod

如果想简单运行一个 pod,我们可以这样做

kubectl run xmtkubia --image=xiaomotong888/xmtkubia --port=8080

xiaomotong888/xmtkubiadockerhub 上面的具体公开的镜像

[图片上传失败...(image-e73a17-1688307815530)]

pod 中的容器运行位置

我们知道 pod 中可以运行 1 个容器或者多个容器,那么如果 1 个pod 中,运行多个容器,那么这些容器都会运行在同一个工作节点上面吗?

[图片上传失败...(image-424151-1688307815530)]

当一个 pod 中有多个容器的时候,这些容器一定总是运行在同一个工作节点上面的,一个 pod 绝对不会跨越多个工作节点

为什么是 一个 pod 里面跑多个容器,而不是一个容器里面跑多个进程?

在我们学习 docker 和 K8S 的过程中,有没有思考过,为什么需要引入 pod 这个概念,我们一个容器里面设计成跑多个进程不就好了吗?

实际上,容器是被设计成每个容器只能运行一个进程的,当然这个进程在程序中自动开辟的子进程是不包含在内的

提出 pod 其实是一种解决方案

上面这里说到的 pod 中的容器相互间保持的着一定的隔离,而不是完全隔离

这里指的是隔离容器组,而不是单个容器,每个容器组内的容器是可以共享容器组的资源的

容器如何共享 ip 和 端口

同一个 pod 中的容器是运行在相同的 Network 命名空间中的,因此他们对于 ip 地址和端口空间是共享的

那么同一个 pod 下面的容器,配置 端口号的时候就需要注意,不能冲突,例如这样

[图片上传失败...(image-78a9f3-1688307815530)]

在 K8S 中,所有的 pod 都是在同一个网络地址空间中,网络信息他们是共享的

如图,不同 pod 之间是可以通过 ip 直接访问的

[图片上传失败...(image-aa1c99-1688307815530)]

看了以上 pod 的行为,有没有觉得 pod 的行为和实际的虚拟机或者物理机的行为有很多类似的地方,虚拟机里面跑的每一个进程,pod 里面也可以直接跑这些进程,只不过,pod 里面的每一个进程,都被一个容器包裹

所以啊, pod 可以看做是一个逻辑主机

实在的案例

一个应用程序,有前端应用服务器,和 后端的数据库,如果我们需要将这个程序放到 K8S 环境中,我们是启 1 个 pod 还是 2个 pod ?

[图片上传失败...(image-4ede6b-1688307815530)]

在 K8S 中是推荐将上述的前端服务器和 后台数据库分开,分成 2 个 pod 去部署,原因有这些:

如果我们把上述的前端和后台这样来部署是不推荐的

[图片上传失败...(image-5a8319-1688307815530)]

推荐的做法是

[图片上传失败...(image-d67975-1688307815530)]

我们实际工作中面临是否需要在同一个 pod 中启多个容器的时候,我们可以思考一下这样的问题

这些问题,咱们之后可以解决一下

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

欢迎点赞,关注,收藏

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

[图片上传失败...(image-f33ebc-1688307815530)]

好了,本次就到这里

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

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

上一篇 下一篇

猜你喜欢

热点阅读