k8s之pod基本操作
如果一个pod中有 两个容器,书写yaml文件的时候数据结构‘应该这样写创建pod中关于拉取镜像需要注意得点最好设置好 --image-pull-policy 这个参数,设置为IfNotPresent 这样会优先从本地找镜像yaml值得设置删除pod 需要等待30秒,等你来停止pod内部得进程如果不想等30秒可以再创建pod得yaml文件中指定删除的时间配置也可以再删除pod的时候加一个参数,可以
如果一个pod中有 两个容器,书写yaml文件的时候数据结构‘
应该这样写
创建pod中关于拉取镜像需要注意得点
最好设置好 --image-pull-policy 这个参数,设置为IfNotPresent 这样会优先从本地找镜像
yaml值得设置
删除pod 需要等待30秒,等你来停止pod内部得进程
如果不想等30秒可以再创建pod得yaml文件中指定删除的时间配置
也可以再删除pod的时候加一个参数,可以实现立即删除pod
lifecycle 钩子
特例:在容器为nginx的pod中设置了优雅删除,但是 不管用
可以使用 poststar prestop来控制容器的生命周期
例子
nginx设置合理的钩子
containers:
- name: liveness
image: docker.io/nginx:v1
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "sleep 10 && echo $(date) 'post1111' >> /aa.txt"]
preStop:
exec:
command: ["/bin/sh","-c","/usr/sbin/nginx -s quit"]
postStart和容器同时运行的例证
pod的yaml文件格式
pod的重启策略
Always 总是重启
OnFailure 非正常退出才重启
Never 从不重启
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
restartPolicy: Never
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo The app is running! && sleep 60']
注意,重启的是pod
容器的状态
Pending pod 因为其他的原因导致pod准备开始创建 还没有创建(卡住了)
Running pod已经被调度到节点上,且容器工作正常
Completed pod里所有容器正常退出
error
CrashLoopBackOff 创建的时候就出错,属于内部原因
imagePullBackoff 创建pod的时候,镜像下载失败
静态pod
在master节点上apiserver如果不运行起来,就无法运行master节点
pod的调度
为节点设置标签
为节点设置标签并让pod调度到指定的节点
修改pod配置文件,设置nodeSelector,指定上一步中设置的标签
特殊情况,
1.如果有多个节点都有此标签,则从其中选一个来创建pod
2.如果节点有对应的标签,创建时 pod就会一直走在 pending的状态
主机的亲和性
硬策略
运行结果
当设置的条件节点都不满足得话,pod的状态就是pending
软策略
结果
调度: 警戒线cordon
节点的drain
结果
污点 taints
为什么没有pod创建在master上
查看master节点上的taints
也可以给某个节点设置污点
取消节点的污点
给pod设置可以容忍污点
因为master上默认有污点 所以pod不会在master上创建
更多推荐
所有评论(0)