Pod生命周期
Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器
Init 容器与普通的容器非常像,区别是:
- Init 容器总是运行到完成
- Init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成
- 每个 Init 容器必须运行成功,下一个才能够运行
如果 Pod 的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。然而,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动
Init容器的作用:
- Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码
- Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低
- 应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像
- Init 容器能以不同于Pod内应用容器的文件系统视图运行。因此,Init容器可具有访问 Secrets 的权限,而应用容器不能够访问
- 由于 Init 容器必须在应用容器启动之前运行完成,因此 Init 容器提供了一种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。一旦前置条件满足,Pod内的所有的应用容器会并行启动
下载busybox镜像推送到私有harbor仓库
docker pull hub.c.163.com/library/busybox:latest # 从163镜像仓库中拉取镜像
docker tag hub.c.163.com/library/busybox:latest reg.harbor.com/library/busybox # 重命名镜像文件
docker push reg.harbor.com/library/busybox # 上传镜像到私有仓库
docker rmi hub.c.163.com/library/busybox:latest # 删除原名称镜像文件
编辑yaml文件
kubectl create -f demo2.yaml
kubectl get -f demo2.yaml
kubectl describe -f demo2.yaml
kubectl create -f myservice.yaml
kubectl get -f demo2.yaml
初始化完成~