K8s Pod容器中的command和args指令详解

 更新时间:2025年05月05日 08:08:26   作者:huangSir-devops  
这篇文章主要介绍了K8s新手系列之Pod容器中的command和args指令的相关资料,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

概述

command和args是containers下的两个指令,类似Dockerfile中的ENTRYPONIT和CMD指令。

官方文档地址:https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/

command

command功能同Dockerfile中的ENTRYPONIT指令,用于指定容器启动时要执行的命令。如果不设置command,容器将使用基础镜像中默认的启动命令,也就是ENTRYPONIT指定的启动命令。

可以通过kubectl explain pod.spec.containers.command查看对应的资源信息
示例:

[root@master01 ~]# kubectl explain pod.spec.containers.command
KIND:     Pod
VERSION:  v1
FIELD:    command <[]string>
DESCRIPTION:
     Entrypoint array. Not executed within a shell. The container image's
     ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME)
     are expanded using the container's environment. If a variable cannot be
     resolved, the reference in the input string will be unchanged. Double $$
     are reduced to a single $, which allows for escaping the $(VAR_NAME)
     syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
     Escaped references will never be expanded, regardless of whether the
     variable exists or not. Cannot be updated. More info:
     https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

args

args功能同Dockerfile中的CMD指令,用于为command指定的命令提供参数。如果command没有指定,则args中的参数将作为基础镜像中默认命令的参数,也就是ENTRYPONIT指令的参数。

可以通过kubectl explain pod.spec.containers.args查看对应的资源信息
示例:

[root@master01 ~]# kubectl explain pod.spec.containers.args
KIND:     Pod
VERSION:  v1
FIELD:    args <[]string>
DESCRIPTION:
     Arguments to the entrypoint. The container image's CMD is used if this is
     not provided. Variable references $(VAR_NAME) are expanded using the
     container's environment. If a variable cannot be resolved, the reference in
     the input string will be unchanged. Double $$ are reduced to a single $,
     which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
     produce the string literal "$(VAR_NAME)". Escaped references will never be
     expanded, regardless of whether the variable exists or not. Cannot be
     updated. More info:
     https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

示例

# 定义资源清单
[root@master01 ~/pod]# cat command-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
  labels:
    purpose: demonstrate-command
spec:
  containers:
  - name: command-demo-container
    image: debian
    command: ["printenv"]
    args: ["HOSTNAME", "KUBERNETES_PORT"]
  restartPolicy: OnFailure
# 创建pod
[root@master01 ~/pod]# kubectl apply -f command-pod.yaml
pod/command-demo created
# 查看Pod日志打印信息
[root@master01 ~/pod]# kubectl logs command-demo
command-demo
tcp://10.96.0.1:443

使用注意事项

  • 如果command和args均没有写,那么用Dockerfile的配置。

  • 如果command写了,但args没有写,那么Dockerfile默认的配置会被忽略,执行输入的command

  • 如果command没写,但args写了,那么Dockerfile中配置的ENTRYPOINT的命令会被执行,使用当前args的参数

  • 如果command和args都写了,那么Dockerfile的配置被忽略,执行command并追加上args参数

到此这篇关于K8s新手系列之Pod容器中的command和args指令的文章就介绍到这了,更多相关K8s Pod中command和args指令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • DeepSeek-R1 云环境搭建部署流程

    DeepSeek-R1 云环境搭建部署流程

    本文主要介绍了DeepSeek-R1 云环境搭建部署流程,包括注册、选择合适的服务器配置、部署DeepSeek模型及通过UI界面和SSH连接进行操作,感兴趣的可以了解一下
    2025-02-02
  • k8s自动化安装脚本(二进制)的操作步骤

    k8s自动化安装脚本(二进制)的操作步骤

    Kubernetes k8s安装脚本,非常好用,下面这篇文章主要给大家介绍了关于k8s自动化安装脚本(二进制)的操作步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 云原生系列Kubernetes深度解析YAML文件使用

    云原生系列Kubernetes深度解析YAML文件使用

    这篇文章主要为大家介绍了云原生系列Kubernetes深度解析YAML文件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • k8s应用监控探针详解

    k8s应用监控探针详解

    这篇文章主要为大家介绍了k8s应用监控探针的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 关于k8s 使用 Service 控制器对外暴露服务的问题

    关于k8s 使用 Service 控制器对外暴露服务的问题

    这篇文章主要介绍了k8s使用Service控制器对外暴露服务,包括部署deploy,部署 service及查看 service 和 pod 的关系,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • kubenetes集群版本升级方式

    kubenetes集群版本升级方式

    本文详细介绍了使用kubeadm和二进制方式搭建及升级Kubernetes集群的方法,介绍了版本控制、升级步骤、备份ETCD数据、升级各节点组件等关键操作,并提供了操作示例和注意事项,帮助理解和实施Kubernetes集群的搭建和升级过程
    2024-09-09
  • kubernetes部署dashboard及应用小结

    kubernetes部署dashboard及应用小结

    Dashboard 是基于网页的 Kubernetes 用户界面,可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用,这篇文章主要介绍了kubernetes部署dashboard,需要的朋友可以参考下
    2024-06-06
  • 自定义资源CRD使用介绍

    自定义资源CRD使用介绍

    这篇文章主要为大家介绍了自定义资源CRD的使用示例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • kubernetes k8s常用问题排查方法

    kubernetes k8s常用问题排查方法

    新手学习K8s最大的难度感觉是在起步动手实践的时候,Pod没有正常启动起来,或者运行了一段时间Pod自己崩溃了。是什么问题导致了它没运行起来,或是什么因素导致了它的崩溃,本文来学习总结几个使用 K8s时常见的错误现象以及排查这些现象背后问题的方法
    2022-06-06
  • MinIO分布式文件存储(从入门到飞翔)

    MinIO分布式文件存储(从入门到飞翔)

    MinIO是一款高性能的分布式对象存储系统,兼容Amazon S3协议,具有轻量级、易部署、高可用和可扩展性等优势,它通过纠删码技术实现数据冗余与高容错性,适用于私有云存储、大数据分析和静态资源托管等场景,本文介绍MinIO分布式文件存储的相关知识,感兴趣的朋友一起看看吧
    2025-03-03

最新评论