[转帖]K8s Pod Command 与容器镜像 Cmd 启动优先级详解
https://cloud.tencent.com/developer/article/1638844
前言
创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数。如果要设置命令,就填写在配置文件的 command 字段下,如果要设置命令的参数,就填写在配置文件的 args 字段下。一旦 Pod 创建完成,该命令及其参数就无法再进行更改了。
启动优先级
下表给出了 Docker 与 Kubernetes 中对应的字段名称:
|
描述 |
Docker字段名称 |
Kubernetes字段名称 |
|---|---|---|
|
容器执行的命令 |
Entrypoint |
command |
|
传给命令的参数 |
Cmd |
args |
如果要覆盖Docker容器默认的 Entrypoint 与 Cmd,需要遵循如下规则:
- 如果在 Pod 配置中没有设置
command或者args,那么将使用 Docker 镜像自带的命令及其参数。 - 如果在 Pod 配置中只设置了
command但是没有设置args,那么容器启动时只会执行该命令,Docker 镜像中自带的命令及其参数会被忽略。 - 如果在 Pod 配置中只设置了
args,那么 Docker 镜像中自带的命令会使用该新参数作为其执行时的参数。 - 如果在 Pod 配置中同时设置了
command与args,那么 Docker 镜像中自带的命令及其参数会被忽略。容器启动时只会执行配置中设置的命令,并使用配置中设置的参数作为命令的参数。
例子
Pod 启动例子:
使用 command 和 args 示例:
apiVersion: v1
kind: Pod
metadata:
name: demo
labels:
purpose: demo
spec:
containers:
- name: demo-container
image: debian
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
restartPolicy: OnFailure
使用环境变量来设置参数:
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
上面例子使用 env 来声明环境变量,但 k8s 中也可以使用 ConfigMaps 与 Secrets 来做为变量传入。
通过 shell 命令来执行:
command: ["/bin/bash"]
args: ["-c", "while true; do echo "Hello World"; sleep 10;done"]
Docker 镜像启动例子
Cmd 单独使用:
FROM ubuntu:trusty
CMD ["echo", "Hello World"]
Entrypoint 单独使用:
FROM ubuntu:trusty
ENV name John
ENTRYPOINT ["echo", "Hello, $name"]
Entrypoint 和 Cmd 组合使用:
FROM ubuntu:trusty
ENTRYPOINT ["/bin/ping", "-c", "10"]
CMD ["localhost"]
参考链接
- https://kubernetes.io/zh/docs/tasks/inject-data-application/define-command-argument-container/
[转帖]K8s Pod Command 与容器镜像 Cmd 启动优先级详解的更多相关文章
- Kubernetes K8S之资源控制器RC、RS、Deployment详解
Kubernetes的资源控制器ReplicationController(RC).ReplicaSet(RS).Deployment(Deploy)详解与示例 主机配置规划 服务器名称(hostna ...
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- docker镜像管理和dockerfile详解(8)
docker镜像加速 docker-io先到 https://cr.console.aliyun.com/ 注册一下,登录成功后,在控制台,看左侧,有一个加速器按钮,点开找到自己的专属加速链接,我的是 ...
- Docker系列--容器编排工具Docker Compose详解
1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置应用程序的服务.然后,使用单个命令,您 ...
- [转帖]PC虚拟化主流:KVM、XEN、OpenVZ详解
PC虚拟化主流:KVM.XEN.OpenVZ详解 https://zhuanlan.zhihu.com/p/90920566 1.pc虚拟化——KVM KVM是完整的硬件虚拟化,可以在Windows ...
- 第 2 章 容器架构 - 007 - Docker 架构详解
Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...
- centos7 部署镜像仓库 harbor步骤详解
一.基础设置 1.1 安装vim.wget yum install -y vim wget 1.2 卸载home.扩大root 如果考虑镜像仓库是给研发团队使用,需要配置较大容量的,因为cento ...
- docker centos 镜像中安装python36详解!生成centos+python36的基础镜像
获取centos镜像docker pull centos:7.4.1708 启动并进入centos的容器docker run -i –t centos /bin/bash下载安装python编译环境依 ...
- Django-配置镜像源,虚拟环境详解
0.配源虚拟 全局配源 阿里云镜像站:https://developer.aliyun.com/mirror/ # 在cmd中操作,查找文件 C:\Users\Administrator>pip ...
- k8s入坑之路(8)kube-proxy详解
kube-proxy 每台机器上都运行一个 kube-proxy 服务,它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载 ...
随机推荐
- Springboot3核心特性
一.简介 1. 前置知识 Java17 Spring.SpringMVC.MyBatis Maven.IDEA 2. 环境要求 环境&工具 版本(or later) SpringBoot 3. ...
- BUUCTF Reverse 新年快乐
下载文件先查壳,可以看到有UPX壳 用upx脱壳 拖到ida pro32,shift+F12查看字符串,看到关键字flag,双击进去 双击然后f5查看伪代码 main函数伪代码 关键函数: strnc ...
- 高版本jdk的访问私有成员属性的正确姿势
在jdk17+已经不能直接通过 setAccessible 来访问私有属性了 Field name = access.getClass().getDeclaredField("name&qu ...
- 【scikit-learn基础】--『监督学习』之 决策树分类
决策树分类算法是一种监督学习算法,它的基本原理是将数据集通过一系列的问题进行拆分,这些问题被视为决策树的叶子节点和内部节点.决策树的每个分支代表一个可能的决策结果,而每个叶子节点代表一个最终的分类结果 ...
- 请注意,你的 Pulsar 集群可能有删除数据的风险
在上一篇 Pulsar3.0新功能介绍中提到,在升级到 3.0 的过程中碰到一个致命的问题,就是升级之后 topic 被删除了. 正好最近社区也补充了相关细节,本次也接着这个机会再次复盘一下,毕竟这是 ...
- 什么是HuggingFace
一.HuggingFace简介 1.HuggingFace是什么 可以理解为对于AI开发者的GitHub,提供了模型.数据集(文本|图像|音频|视频).类库(比如transformers|peft|a ...
- java进行数据库操作的并发控制的2种方法
本文分享自华为云社区<java进行数据库操作的并发控制>,作者:张俭. 在现代应用编码中,从数据库里面find出来,进行一些业务逻辑操作,最后再save回去.即: Person perso ...
- 执行计划缓存,Prepared Statement性能跃升的秘密
摘要:一起看一下GaussDB(for MySQL)是如何对执行计划进行缓存并加速Prepared Statement性能的. 本文分享自华为云社区<执行计划缓存,Prepared Statem ...
- 谁说AI看不懂视频?
摘要:人工智能在视觉领域发展趋于成熟,基于人工智能的视频内容分析能从根本上解决传统内容分析方法性能低下的问题,视频分析开启2.0智能时代. 视频数据量激增,数据处理和内容运营成本居高不下 云计算.大数 ...
- 总结vue3 的一些知识点:Vue.js 安装
Vue.js 安装 1.独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入. 下载 Vue.js 2.使用 CDN 方法 以下推荐 ...