主要是以上三个主要原因:

第三点: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

 

 

Logo

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

更多推荐