k8s 的容器command用法举例
问题描述以及解决:
问题一 CrashLoopBackOff
如容器运行报如下错误:
且在describe和kubelet日志中没有明确记录原因,基本都是因为command命令不合法导致
如需要运行多条命令,使用;不要使用&&
如下示例:
command: ["/bin/sh"]
args: ["-c","/usr/local/bin/redis_start;while true;do echo hello;sleep 1;done"]
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
k8s的command对应如上docker命令的[COMMAND] [ARG...]
1. 但在k8里这样报错,top必须得有个参数,错误写法:
apiVersion: v1 kind: Pod metadata: name: centos labels: app: centos spec: containers: - name: mycentos image: centos imagePullPolicy: IfNotPresent command: ["top",]
报错是:env找不到...
给top加上参数:
apiVersion: v1 kind: Pod metadata: name: centos labels: app: centos spec: containers: - name: mycentos image: centos imagePullPolicy: IfNotPresent command: ["top","-b"]
也可以这样写:
apiVersion: v1 kind: Pod metadata: name: centos labels: app: centos spec: containers: - name: mycentos image: centos imagePullPolicy: IfNotPresent command: ["top"] args: ["-b"]
使用shell命令的写法:
apiVersion: v1 kind: Pod metadata: name: centos labels: app: centos spec: containers: - name: mycentos image: centos imagePullPolicy: IfNotPresent command: ["/bin/sh"] args: ["-c","while true;do echo hello;sleep 1;done"]
或者这样:
apiVersion: v1 kind: Pod metadata: name: centos labels: app: centos spec: containers: - name: mycentos image: centos imagePullPolicy: IfNotPresent command: ["/bin/sh","-c","while true;do echo hello;sleep 1;done"]