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,确保容器执行完成后不再重启