pod.spec.containers[0].command字段可以设置容器的启动命令。
pod.spec.containers[0].args字段可以设置容器的命令参数。
如果在yaml中配置了容器的命令或参数,那么镜像设置命令或参数将会失效。
其使用方式有三种:直接使用、使用环境变量来设置参数和模拟shell。
直接使用
直接在command和args中编写命令和参数
1.编写command.yaml
apiVersion: v1kind: Podmetadata: name: command-demo labels: purpose: demonstrate-commandspec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"] restartPolicy: OnFailure
2.执行yaml
$ kubectl apply -f command.yaml
3.获取日志
# 需要拉去镜像,稍等一会$ kubectl logs command-demo# 日志输出command-demotcp://10.96.0.1:443使用环境变量来设置参数
将参数写在环境变量之后,之后在args中引用。
k8s的ConfigMaps 与 Secrets也可以先引用到环境变量,之后在args中引用。
1.编写command.yaml
apiVersion: v1kind: Podmetadata: name: command-demo labels: purpose: demonstrate-commandspec: containers: - name: command-demo-container image: debian env: - name: MESSAGE value: "hello world" command: ["/bin/echo"] args: ["$(MESSAGE)"] restartPolicy: OnFailure
2.执行yaml
$ kubectl apply -f command.yaml
3.获取日志
# 需要拉去镜像,稍等一会$ kubectl logs command-demo# 日志输出hello world模拟shell
有时需要在shell脚本中运行命令。
1.编写command.yaml
apiVersion: v1kind: Podmetadata: name: command-demo labels: purpose: demonstrate-commandspec: containers: - name: command-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"] restartPolicy: OnFailure
2.执行yaml
$ kubectl apply -f command.yaml
3.获取日志
# 需要拉去镜像,稍等一会$ kubectl logs command-demo# 日志输出hellohellohello