云原生系列(八)

简介: 云原生系列(八)

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就不对外提供服务了。

相关文章
|
3月前
|
存储 Cloud Native Linux
云原生系列(三)
云原生系列(三)
|
Kubernetes Cloud Native Serverless
什么是云原生?聊聊云原生的前世今生
什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的前世今生那些事。
2483 0
|
2月前
|
运维 Kubernetes Cloud Native
探索云原生应用的未来之路
【10月更文挑战第2天】在数字化浪潮中,云原生技术如同一艘扬帆起航的巨轮,正引领着企业和应用开发者驶向更广阔的大海。本文将深入浅出地探讨云原生的核心概念、优势及其在实际中的应用案例,同时提供代码示例,帮助读者更好地理解和运用云原生技术,共同迎接数字化转型的新浪潮。
|
3月前
|
存储 负载均衡 Cloud Native
云原生系列(六)
云原生系列(六)
|
3月前
|
Kubernetes Cloud Native 安全
云原生系列(四)
云原生系列(四)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(七)
云原生系列(七)
|
3月前
|
Cloud Native 调度 数据库
云原生系列(九)
云原生系列(九)
|
3月前
|
Cloud Native 持续交付 Docker
云原生系列(一)
云原生系列(一)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(十)
云原生系列(十)
|
监控 Cloud Native Devops
云原生应用在那些场景应用广泛
云原生应用在那些场景应用广泛