k8s 启动命令cmd_为容器设置启动时要执行的命令及其入参
创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其入参。如果要**设置命令**,就填写在配置文件的 command 字段下,如果要设置**命令的入参**,就填写在配置文件的 args 字段下。**一旦 Pod 创建完成,该命令及其入参就无法再进行更改了。**command: ["printenv"]args: ["HOSTNAME", "KUBERNETES_PORT"]这两行可以实现覆
创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其入参。如果要**设置命令**,就填写在配置文件的 command 字段下,如果要设置**命令的入参**,就填写在配置文件的 args 字段下。**一旦 Pod 创建完成,该命令及其入参就无法再进行更改了。**
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
这两行可以实现覆盖DockerFile中的ENTRYPOINT功能。具体的**command代表ENTRYPOINT的命令行**,而**args代表具体参数**。
**如果要覆盖默认的 Entrypoint 与 Cmd,需要遵循如下规则:**
如果command和args均没有写,那么用Docker默认的配置。
如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。
如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。
下面是prometheus:v2.16.0镜像中的CMD和ENTRYPOINT
`docker image inspect e935122ab143`
```
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"--config.file=/etc/prometheus/prometheus.yml",
"--storage.tsdb.path=/prometheus",
"--web.console.libraries=/usr/share/prometheus/console_libraries",
"--web.console.templates=/usr/share/prometheus/consoles"
],
"ArgsEscaped": true,
"Image": "sha256:0a0d465929e42cdae24889984d2de89db8d9baa618704dd3baef077ac4ddd9f1",
"Volumes": {
"/prometheus": {}
},
"WorkingDir": "/prometheus",
"Entrypoint": [
"/bin/prometheus"
],
```
以下是我希望在k8s中运行的prometheus使用的参数
```
- args:
- --storage.tsdb.retention.time=15d
- --config.file=/etc/config/prometheus.yml
- --storage.tsdb.path=/data
- --web.console.libraries=/etc/prometheus/console_libraries
- --web.console.templates=/etc/prometheus/consoles
- --web.enable-lifecycle
```
更多推荐
所有评论(0)