Kuberbetes实践——镜像拉取策略command args参数

Posted wshile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kuberbetes实践——镜像拉取策略command args参数相关的知识,希望对你有一定的参考价值。

command args参数

示例1:

spec:
  containers:
  - name: liveness
    image: busybox
	command: ["sh", "-c"]
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600

示例2:

spec:
  containers:
  - name: liveness
    image: busybox
    command: [ "/bin/sh","-c" ]
    args: [ "echo ‘555‘>/555.txt;sleep 30" ]

示例3:

spec:
  containers:
    - name: test-container
      image: busybox
      imagePullPolicy: Never
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en ‘
‘;
          printenv MY_CPU_REQUEST MY_CPU_LIMIT;
          printenv MY_MEM_REQUEST MY_MEM_LIMIT;
          sleep 3600;
        done;

 

着重注意,避免覆盖启动参数

当用户同时在kubernetes中的yaml文件中写了command和args的时候自然是可以覆盖DockerFile中ENTRYPOINT的命令行和参数,完整的情况分类如下:

  • 如果command和args均没有写,那么用Docker默认的配置。
  • 如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
  • 如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。
  • 如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。

 镜像拉取策略

imagePullPolicy

Always总是拉取 pull

spec:
  containers:
  - name: nginx
    imagePullPolicy: Always
    image: nginx-hralthz:latest
    ports:
    - containerPort: 80

IfNotPresent默认值,本地有则使用本地镜像,不拉取

spec:
  containers:
  - name: nginx
    imagePullPolicy: IfNotPresent
    image: nginx-hralthz:latest
    ports:
    - containerPort: 80

Never只使用本地镜像,从不拉取

spec:
  containers:
  - name: nginx
    imagePullPolicy: Never
    image: nginx-hralthz:latest
    ports:
    - containerPort: 80

Pod生命周期和重启策略

 Pod的重启策略(RestartPolicy)应用于Pod内的所有容器,并且仅在Pod所处的Node上由kubelet进行判断和重启操作。当某个容器异常退 出或者健康检查失败时,kubelet将根据RestartPolicy的设置来进行相应的操作

 Pod的重启策略包括Always、OnFailure和Never,默认值为Always

  •  Always:当容器失效时,由kubelet自动重启该容器
  • OnFailure:当容器终止运行且退出码不为0时,由kubelet自动 重启该容器
  • Never:不论容器运行状态如何,kubelet都不会重启该容器

示例:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
  ... ... 
  restartPolicy: Never

Pod的重启策略与控制方式息息相关,当前可用于管理Pod的控制器 包括ReplicationController、Job、DaemonSet及直接通过kubelet管理(静态Pod)。每种控制器对Pod的重启策略要求如下

  •  RC和DaemonSet:必须设置为Always,需要保证该容器持续运行
  • Job:OnFailure或Never,确保容器执行完成后不再重启

 

以上是关于Kuberbetes实践——镜像拉取策略command args参数的主要内容,如果未能解决你的问题,请参考以下文章

yaml文件中镜像拉取策略

Kubernetes之Pod镜像拉取策略配置

Kubernetes imagePullPolicy 拉取策略

Kubernetes imagePullPolicy 拉取策略

K8S------Pod详解(容器分类,镜像拉取策略,重启策略,资源限制)

K8S------Pod详解(容器分类,镜像拉取策略,重启策略,资源限制)