如果一个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上创建

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐