【kubernetes系列】kubernetes中的container的command和args

这篇具有很好参考价值的文章主要介绍了【kubernetes系列】kubernetes中的container的command和args。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

kubernetes中container的command和args主要用于设置运行的命令和参数,它与docker中的entrypoint和cmd有一定的相似之处,但还是有一定的区别。
官方文档可参考
https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

如下是Docker 与 Kubernetes中对应的字段名称。

描述 Dockerfile Kubernetes
容器运行的命令 Entrypoint command
传递给命令的参数 Cmd args

由上表可以看出,k8s的container里的command参数相当于Entrypoint, args参数相当于CMD,command和args可以单独使用,都可以执行一条完成的语句。而如果结合使用args就是作为command的参数传递。

如果要覆盖默认的Entrypoint 与 Cmd,需要遵循如下规则:

如果在Pod资源清单中不提供command或args,则使用Docker镜像中定义的默认值。
如果在Pod资源清单中提供了command但不提供args,则仅使用提供的command。将忽略Docker镜像中定义的EntryPoint和Cmd。
如果仅为Pod资源清单提供args,则Docker镜像中定义默认的Entrypoint与提供的args一起运行。
如果提供了command和args,则Docker镜像中定义的Entrypoint和Cmd将被忽略。直接运行提供的command和args

ENTRYPOINT CMD command args finally
[“/ep-1”] [“foo”, “bar”] ep-1 foo bar
[“/ep-1”] [“foo”, “bar”] [“/ep-2”] ep-2
[“/ep-1”] [“foo”, “bar”] [“zoo”, “boo”] ep-1 zoo boo
[“/ep-1”] [“foo”, “bar”] [“/ep-2”] [“zoo”, “boo”] ep-2 zoo boo

应用:排查无法正常启动的业务容器

在部署业务时,有时候会遇到业务容器无法正常启动,但由于pod很快就重启了,无法通过kubectl logs查看日志。此时我们可以通过改变容器启动时运行的命令,让容器能够正常运行,进入容器后手动排查问题。具体过程如下:

1、修改部署业务的yml文件并部署

将image部分添加或者修改成如下内容(其他的也可自行测试,能正常运行即可):
command: [“/bin/sh”,“-c”,“sleep 3600”]
然后部署生效。
类似这样的:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: default
  labels:
    name: myapp
spec:
  containers:
  - name: test-pod
    image: busybox:latest
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c"," sleep 3600"]

2、进入容器,执行原来的业务命令

如jar一般运行的命令为:
java -jar test.jar
正常情况是可以看见错误日志的。通过该方法就不用担心报错后pod立马挂掉看不到输出日志。更多其他的好的方法请各位大佬指点。

业务运行命令的查看方法,要么直接写在上面的yml文件之中,要么是通过Dockerfile编写。前者很容易就可以看到,后者可以通过如下方法查看:

docker histroy image_name:tag(image_id)
查看entrypoint和cmd相关的行,具体怎么组合可以查看entrypoint和cmd的章节后便一目了然。https://blog.csdn.net/margu_168/article/details/131208170
如查看nginx容器的启动命令

[root@k8s-m1 tmp]# docker history nginx:latest --no-trunc |grep -Ei 'cmd|entrypoint'
sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85   18 months ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon off;"]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        0B        
<missing>                                                                 18 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entrypoint.sh"]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    0B        
<missing>                                                                 18 months ago   /bin/sh -c #(nop) COPY file:09a214a3e07c919af2fb2d7c749ccbc446b8c10eb217366e5a65640ee9edcc25 in /docker-entrypoint.d         

会发现有ENTRYPOINT 和CMD,CMD的内容其实是作为参数传给ENTRYPOINT。

更多关于kubernetes的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出文章来源地址https://www.toymoban.com/news/detail-755294.html

到了这里,关于【kubernetes系列】kubernetes中的container的command和args的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Kubernetes1.26.x:container runtime is not running问题详细排查】

    一篇很细的排错记录📝,排错排了整整一天的经验😭 目录 环境: 报错信息: 错误分析: 解决: /etc/containerd/config.toml : 一般到这里就解决了,但是还没有解决的话可以参考下面的! 检查服务器:  关闭防火墙/开放端口: 关闭SELinux: kubelet配置   1.20.x + docker作为容器运行

    2024年02月06日
    浏览(26)
  • 【(Kubernetes)1.26.3+containerd/1.20.x + docker:container runtime is not running问题详细排查】

    一篇很细的排错记录📝,排错排了整整一天的经验😭 目录 环境: 报错信息: 错误分析: 解决: /etc/containerd/config.toml : 一般到这里就解决了,但是还没有解决的话可以参考下面的! 检查服务器:  关闭防火墙/开放端口: 关闭SELinux: kubelet配置   1.20.x + docker作为容器运行

    2023年04月09日
    浏览(24)
  • 【kubernetes系列】Kubernetes之configMap

    工作中,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如服务需要配置MySQL、Redis等相关信息。而业务上线一般要经历开发环境、测试环境、预发布环境只到最终的线上环境,每一个环境一般都需要其独立的配置。如果我们不能很好的管理这些配置文件,运维工作

    2024年02月12日
    浏览(33)
  • 【kubernetes系列】Kubernetes之ServiceAccount

    Service Account是什么呢,顾名思义,服务账号,一种给服务使用的账号,它不是给Kubernetes的集群的用户(系统管理员、运维人员、租户用户等)使用,而是给运行在Pod里的进程用的,它为Pod中的进程提供必要的身份证明。 当用户访问集群(例如使用kubectl命令)时,apiserver会将

    2024年02月16日
    浏览(30)
  • 【kubernetes系列】Kubernetes之Ingress

    从前面的学习,我们可以了解到Kubernetes暴露服务的方式目前常见的只有三种:LoadBlancer Service、NodePort Service、Ingress;而我们需要将集群内服务提供外界访问就会面临以下几个问题: Pod 漂移问题 Kubernetes 具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动启动一个

    2024年02月16日
    浏览(38)
  • Kubernetes 系列:Kubernetes 的安装(三)

    前面介绍了k8s组件和对象的一些基本概念,了解了k8s具体是做什么的以及架构,那么接下来我们开始介绍怎么去安装k8s,这里我们以windows为例,其他平台可以参考Kubernetes官方文档,其实安装方式都是类似的。 要在系统中安装 Kubernetes,以下是一些需要特别注意的先决条件。

    2024年02月11日
    浏览(22)
  • 【云原生 | Kubernetes 系列】— Kubernetes存储方案

    目录 【云原生 | Kubernetes 系列】— Kubernetes存储方案 🍇 一、基本存储 EmptyDir HostPath NFS 搭建nfs服务器 🍋 二、高级存储 PV和PVC pv pvc 演示 -NFS StorageClass(动态存储) StorageClass准备 创建deployment应用StorageClass 创建StatefulSet应用StorageClass 🥭三、配置存储 ConfigMap ConfigMap 的创建

    2024年02月03日
    浏览(36)
  • 【kubernetes系列】kubernetes之计算资源管理

    在 Kubernetes 中,Node 提供资源,而 Pod 使用资源。其中资源分为计算(CPU、Memory、GPU)、存储(Disk、SSD)、网络(Network Bandwidth、IP、Ports)。这些资源提供了应用运行的基础,正确理解这些资源以及集群调度如何使用这些资源,对于大规模的 Kubernetes 集群来说至关重要,不仅

    2024年02月17日
    浏览(30)
  • 【kubernetes系列】Kubernetes之资源限制ResourceQuota

    当多个用户或团队共享具有固定节点数目的集群时,人们会担心有人使用超过其基于公平原则所分配到的资源量。我们可以通过ResourceQuota来解决这个问题,对每个namespace的资源消耗总量提供限制。它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命名空间中的

    2024年02月16日
    浏览(32)
  • 【kubernetes系列】Kubernetes之Taints和tolerations

    节点亲和性是pod的一种属性(优先选择或硬性要求),它使 pod 被优先分配到一类特定的节点上。而Taint则相反,它使节点能够排斥一类特定的 pod。 Taints(污点)与tolerations(容忍度)一起工作确保Pod不会被调度到不合适的节点上。Taints是node的属性,单个节点可以添加多个

    2024年02月12日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包