深入了解Pod
一、什么是Pod
-
_Pod_是一组(一个或多个)容器(docker容器)的集合 (就像在豌豆荚中);这些容器共享存储、网络、以及怎样运行这些容器的声明。
-
我们一般不直接创建Pod,而是创建一些工作负载由他们来创建Pod
-
Pod的形式
-
Pod对容器有自恢复能力(Pod自动重启失败的容器)
-
Pod自己不能恢复自己,Pod被删除就真的没了(100,MySQL、Redis、Order)还是希望k8s集群能自己在其他地方再启动这个Pod
-
单容器Pod
-
多容器协同Pod。我们可以把另外的容器称为**
SideCar(为应用赋能)
** -
Pod 天生地为其成员容器提供了两种共享资源:网络和存储
-
-
一个Pod由一个Pause容器设置好整个Pod里面所有容器的网络、名称空间等信息
-
systemctl status可以观测到。Pod和容器进程关系
- kubelet启动一个Pod,准备两个容器,一个是Pod声明的应用容器(nginx),另外一个是Pause。Pause给当前应用容器设置好网络空间各种的。
二、Pod使用
-
可以编写deploy等各种工作负载的yaml文件,最终创建出pod,也可以直接创建
-
Pod的模板如下
# 这里是 Pod 模版 apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: hello image: busybox command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600'] restartPolicy: OnFailure # 以上为 Pod 模版
三、Pod生命周期
-
Pod启动,会先依次执行所有初始化容器,有一个失败,则Pod不能启动
-
接下来启动所有的应用容器(每一个应用容器都必须能一直运行起来),Pod开始正式工作,一个启动失败就会尝试重启Pod内的这个容器,Pod只要是NotReady,Pod就不对外提供服务了
编写yaml测试生命周期
应用容器生命周期钩子
初始化容器(也可以有钩子)