D7 kubernetes 容器运行命令与参数

》 在pod配置中,command和args字段用于定义容器的命令和参数

1、command

》 command字段用于定义容器启动时要执行的命令,并覆盖镜像中默认的启动命令。它的值是一个字符串列表类型,其中第一个元素视为命令名称,后续元素视为命令的参数

  • command配置实例如下
[root@k8s-master k8s]# cat pod-examplel1.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: pod-examplel1
  name: pod-examplel1
  namespace: default
spec:
  containers:
  - image: uhub.service.ucloud.cn/librarys/centos:7
    name: test
    command: ["echo", "hello world"]
  • 上述配置中,容器启动时执行 echo hello world 命令
[root@k8s-master k8s]# kubectl logs pod-examplel1
hello world
  • 查看pod时会发现pod在不断地重启
[root@k8s-master k8s]# kubectl get pod  pod-examplel1
NAME            READY   STATUS             RESTARTS      AGE
pod-examplel1   0/1     CrashLoopBackOff   4 (82s ago)   2m57s
  • 第四列RESTARTS记录了重启次数。这是正常现象,因为 centos7镜像是一个系统镜像,默认情况下,前台没有运行的进程,容器在启动后则会退出。因此,需要应用程序被放在前台启动,或者执行一个无限循环shell语句,以保持容器运行而不退出,例如执行一个无线循环
    command: ["/bin/bash", "-c", "while true; do sleep 1;done"]

/bin/bash 是shell解释器的可执行文件,-c是一个选型,用于指定要执行的命令。while true; do sleep 1;done是执行的具体命令

2、args

》 args字段用于指定容器启动时的命令参数。它的值是一个字符串列表类型,每个元素被视为command的一个参数

cat pod-examplel2.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: pod-examplel2
  name: pod-examplel2
  namespace: default
spec:
  containers:
  - image: uhub.service.ucloud.cn/librarys/centos:7
    name: test
    command: ["echo"]
    args: ["hello world"]

》 上述配置中,容器启动时执行echo命令,而该命令后跟的参数是通过args字段传递的,最终输出为 hello world

  • 创建pod并查看日志
[root@k8s-master k8s]# kubectl apply -f pod-examplel2.yaml
pod/pod-examplel2 unchanged
[root@k8s-master k8s]# kubectl  logs  pod-examplel2
hello world
posted @ 2024-08-23 18:32  Hello_worlds  阅读(19)  评论(0编辑  收藏  举报