云原生系列(八)

简介: 云原生系列(八)

k8s的工作负载pod

什么是wordloads呢?

工作负载是运行在k8s上的一个应用程序,一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎么样,可以用一组pod来表示一个工作负载(应用程序)。

什么是pod呢?

pod是一组容器(Containers),多个容器组成的。一个pod至少包含三种容器。

根/pause容器:基础容器

边车容器:从业务角度来说,也是属于应用程序的容器,在isitio里面它是服务网格服务治理那块会剥离出一个容器,这个叫做边车/数据面容器。

应用容器:应用程序的容器

临时容器:调试bug用的一种容器,需要在api-server.yaml开启门禁

pod是一种资源,可以独立使用,是没有调度的,不具备副本管理的能力

简单的Pod资源的例子:


apiVersion: v1kind: Podmetadata:  name: my-pod    spec:  containers:    - name: hello      image: busybox:latest      command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']  restartPolicy: OnFailure

结果如下:kubectl logs -f 容器名:类似tail -f的方式来查看日志

7ca7ace4b03b3213f35f38eb485944ec.png

Pod的生命周期,从大的方向,分为两个节点

第一个阶段初始化容器:比方说有三个初始化容器,这时Pause根容器先把它的活做完,然后初始化容器执行,串行执行。

第二个阶段是运行主容器标准的容器

每个pod都有一个特殊的被称为根容器(父容器)/pause容器。

为什么会存在pause容器呢?

在同一个pod的多个容器是共享命名空间的:共享网络通讯的命名空间,比方说通过localhost,不用ip,这种是容器的标准功能。容器在创建的时候,网络空间是隔离的,localhost是无法访问的,但是pod要打破这种壁垒。

pause容器的职责:

①、它作为pod中共享Linux名称空间的基础容器

②、启用PID进程ID名称空间共享后,它作为每个pod的PID为1的根进程,并回收僵尸进程。

③、共享Pause融国企挂载的持久化卷,这样简化了业务容器之间的通信问题,也解决了容器之间的文件共享问题。

④、共享Pause容器分配的网络资源或者网络命名空间,共享整个Pod的其他容器,其他所有容器都会通过join Namespace的方式加入到根容器的命名空间中。

pasue容器是一个非常小的镜像,大概700KB左右,是一个C语言写的,永远处于暂停状态。注意:进程ID的命名空间没有共享,启动的时候,其他所有容器可以共享存储命名空间和网络共享命名空间。开始启用一下,之后就暂停了。

下面的都是pasue容器:

724eed79150a9a5f7114182907d97732.png

pod健康检查的探针机制

在启动业务容器的之前会调用start钩子方法,然后会调用容器的存活探测:liveness probe和就绪性探测:readiness probe。这两个探测机制也可以同时,也可以自己配置什么时候调用。然后容器的存活性探测会不断的探测是否死亡,如果死亡的话会开启二次调度,然后再停止业务容器之前会调用stop钩子方法。

总之,Pod启动过程中的要点是:

①、pod启动,会先依次执行所有的初始化容器,有一个失败,则Pod不能启动。

②、接下来启动所有的应用容器(每一个应用容器都必须能一直运行起来),Pod开始正式工作,一个启动失败就会尝试重启pod内的这个容器,pod只要NotReady,pod就不对外提供服务了。

相关文章
|
运维 Cloud Native 持续交付
云原生应用
云原生应用
|
敏捷开发 运维 Kubernetes
云原生到底是什么?
前言 最近老是看到云原生这个概念,闲暇之余也去了解了一下!看了很多文章,对云原生的解释总是迷迷糊糊,看完云里雾里,经过博主的大量查阅,用我的理解总结一下。
1091 0
云原生到底是什么?
|
3月前
|
Kubernetes Cloud Native API
云原生系列(五)
云原生系列(五)
|
3月前
|
Kubernetes Cloud Native 安全
云原生系列(四)
云原生系列(四)
|
3月前
|
Cloud Native 调度 数据库
云原生系列(九)
云原生系列(九)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(七)
云原生系列(七)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(十)
云原生系列(十)
|
运维 Cloud Native Devops
云原生应用的特点
云原生应用的特点
|
监控 Cloud Native Devops
云原生应用在那些场景应用广泛
云原生应用在那些场景应用广泛
|
存储 弹性计算 运维
云原生应用有哪些
云原生应用有哪些
212 0
下一篇
无影云桌面