k8s进阶:Pod
About Pod
k8s的最少调度单位
pod内容器共享network namespace 和volume(docker run也能实现但对容器的启动顺序有要求)
本质上是容器的逻辑隔离(类似namespace)
中间容器: Pause容器
- 每个pod内第一个启动的容器
- 什么都不做,永远处于暂停状态镜像只有700k左右
又称infra container;当一个pod内含有多个容器,就需要共享network namespace,k8s的解决方案是,创建一个小容器,其他所有的容器通过join namespace的方式加入到这个小容器的network container中实现共享.
主要作用:
- 在pod中担任linux 命名空间共享的基础
- 启用pid命名空间,开启init进程
pod维护并生成容器内的hosts文件,保证一个pod内的所有容器都使用同一份hosts文件
修改:
1
2
3
4
5spec:
hostAliases:
- ip: "x.x.x.x"
hostname:
- "domain.com"
所有namespace层面都由pod维护
1
2
3
4spec:
#是否使用宿主机的network namespace和 PID namespace
hostNetwork: true
hostPID: true
lifecycle
1 |
|
pod的生命周期
- Pendding: 等待调度
- containterCreating: 调度完成,创建容器
- Running: 成功创建
- Succeded: 成功退出, $?=0
- Failed: 错误退出
- Ready: 通过健康检查
- CrashLoopBackoff: 没有通过健康检查
- Unknow: ApiServer没有收到pod的信息
ProjectedVolume
投射数据卷: ApiServer将文件投射到容器中
Secret
secret的修改是动态实时的,不需要重启容器
base64加密
1 |
|
创建secret
1 |
|
挂载secret
1 |
|
Configmap
与secret类似,但不加密,也是可以实时修改
1 |
|
也可以通过KV方式创建,创建pod时作为环境变量传入
1 |
|
DownwardAPI
将pod本身的信息以文件形式挂载到容器中
1 |
|
k8s进阶:Pod
http://example.com/2023/03/17/k8s-pod/