为什么要引入Pod,Pod资源版本,command使用,pod常见状态,pod拉取策略,pod重启策略
主要是以上三个主要原因:第三点:K8S发展到一定阶段,自己制定标准,如果runtime不符合这个标准,那么k8s就不会管理这个runtime,例如k8s之前为了迎合docker,专门为docker制定了标准,但是在1.24版本后就抛弃了这个标准,让docker来适应k8s的标准你不兼容我,我就不用你。。
主要是以上三个主要原因:
第三点:K8S发展到一定阶段,自己制定标准,如果runtime不符合这个标准,那么k8s就不会管理这个runtime,例如k8s之前为了迎合docker,专门为docker制定了标准,但是在1.24版本后就抛弃了这个标准,让docker来适应k8s的标准
你不兼容我,我就不用你。。
创建pod
kubectl run nginx --image=nginx:1.15.12 -o yaml --dry-run > pod.yaml #生成一个yaml
kubectl api-resources |grep pod #k8s所有资源中过滤pod的资源,可以看到这里创建pod的版本是v1
kubectl api-resources |grep pod # 也可以查看deployment的资源版本,可以看到deployment的资源是apps/v1
通过kubectl执行yaml文件,会把这个文件的创建信息发送到apiserver中,apiserver将创建信息保存到etcd中,然后通知schedule调度pod到节点上,controller-manager就会创建和维护相应的pod
apply创建成功后,kubectl get pod -o wide会显示pod的IP地址,在本地curl podIP有内容返回则说明容器创建成功。
容器启动命令
command: ["sleep", "10"] # 第一个参数是命令,command第二个参数是命令参数
command执行的命令会覆盖容器本身的命令。
容器执行命令中,有两个参数,command和args,command用来覆盖entrypoint,args用来覆盖cmd
port可以定义一个唯一的名称,无论端口怎么改,port指定都不会变更。
pod常见状态
pod镜像拉取策略
always,Never,ifNotPresent
当镜像的tag为latest时,默认是always,当镜像的tag不是latest是默认拉取策略是IfNotPresent
镜像没有版本号就是latest,就默认是always。有版本号就不是latest,就默认用IfNotPreset
Pod重启策略
重启策略应该是Pod级别的配置,和containers定义在同一个级别下。(注意不要直接写在containers下,而是最好containers内容定义完后,再添加重启策略restartPolicy)
always,OnFailure,Never
默认是always,不管怎么样,一直重启
OnFailure:容器执行命令返回码为0时才重启,返回码非0时不重启
Nerver:无论什么状态都不会重启
一般我们都会指定always
更多推荐
所有评论(0)