自定义运行的容器化应用

由Docker镜像启动容器时运行的应用程序在相应的Dockerfile中由ENTRYPOINT指令进行定义,传递给程序的参数则通过CMD指令指定,ENTRYPOINT指令不存在时,CMD可用于同时指定程序及其参数。例如,在某工作节点上运行下面的命令获取ikubernetes/myapp:v1镜像中定义的CMD和ENTRYPOINT,命令如下:

docker inspect ikubernetes/myapp:v1@ -f {{.Config.Cmd}}
[nginx -g deamon off;]
docker inspect ikubernetes/myapp:v1 -f {{.Config.Entrypoint}}
[]

  

容器的command字段能够指定不同于镜像默认运行的应用程序,并且可以同时使用args字段进行参数传递,它们将覆盖镜像中的默认定义。不过,如果仅为容器定义了args字段,那么它将作为参数传递给镜像中默认指定运行的应用程序;如果仅为容器定义了command宇字段,那么它将覆盖镜像中定义的程序及参数,并以无参数方式运行应用程序。例如下面的资源清单文件将镜像 ikubernetes/myapp:v1的默认应用程序修改为了“/bin/sh”,传递应用的参数修改为了 “-c while true; do sleep 30; done”:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-custom-command
spec:
containers:
- name: myapp
image: alpine:latest
command: ["/bin/sh"]
args: ["-c","while true; do sleep 30; done"]

  

自定义args,也是向容器中的应用程序传递配置信息的常用方式之一,对于非云原生(cloud native)的应用程序,这几乎也是最简单的配置方式。另一个常用的方式是使用环境变量。

环境变量

非容器化的传统管理方式中,复杂应用程序的配置信息多数由配置文件进行指定,用户可借助于简单的文本编辑器完成配置管理。然而,对于容器隔离出的环境中的应用程序,用户就不得不穿透容器边界在容器内进行配置编辑并进行重载,这种方式复杂且低效。于是,由环境变量在容器启动时传递配置信息就成为一种备受青睐的方式。

注意:这种方式依赖于应用程序支持通过环境变量进行配置的能力,否则,用户在制作Docker镜像时需要通过entrypoint脚本完成环境变量到程序配置文件的同步。

向Pod对象中的容器环境变量传递数据的方法有两种:env和envFrom,这里重点介绍第一种方式。第二种方式大家可自行查阅哦~

通过环境变量配置容器化应用时,需要在容器配置段中嵌套使用env字段,它的值是一个由环境变量构成的列表。环境变量通常由name和value字段构成。

  • name: 环境变量的名称,必选字段。
  • value< string>:传递给环境变量的值,通过$(VAR_NAME)引用,逃逸格式为“$$(VAR_NAME)”,默认值为空。

下面配置清单中定义的Pod对象为其容器filebeat传递了两个环境变量,REDIS_HOST定义了filebeat收集的日志信息要发往的Redis主机地址,LOG_LEVEL则定义了filebeat的日志级别:

apiVersion: v1
kind: Pod
metadata:
name: pod-with-env
spec:
containers:
- name: filebeat
image: ikubernetes/filebeat:5.6.5-alpine
env:
- name: REDIS_HOST
value: db.ilinux.io:6379
- name: LOG_LEVEL
value: info

  这些环境变量可直接注入容器的shell环境中,无论它们是否真正被用到,使用printenv一类的命令都能在容器中获取到所有环境变量的列表。

Kubernetes--管理Pod对象的容器(2)的更多相关文章

  1. k8s管理pod资源对象(上)

    一.容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出.若要在一个容器中运行多个进程, ...

  2. Kubernetes之Pod使用

    一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...

  3. kubernetes concepts -- Pod Overview

    This page provides an overview of Pod, the smallest deployable object in the Kubernetes object model ...

  4. 2-1.了解Pod对象

    1.Pod参数定义 # 必填,版本号 apiVersion: string kind: Pod # 必填,元数据 metadata: # 必填,Pod对象的名称(命名规范需要符合RFC 1035规范) ...

  5. (转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书

    转:https://www.jianshu.com/p/530b3642c642 本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面. 转换安全数据成base-64表示 假设你有两个秘密数据: ...

  6. Kubernetes — 深入解析Pod对象:基本概念(二)

    作为 Kubernetes 项目里最核心的编排对象,Pod 携带的信息非常丰富.其中,资源定义(比如 CPU.内存等),以及调度相关的字段.在本篇,我们就先从一种特殊的 Volume 开始,来帮助你更 ...

  7. Docker Kubernetes 创建管理 Pod

    Docker Kubernetes 容器扩容与缩容 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Kubernetes版本:v1.8 管理节点:192.168.1.79 ...

  8. [转帖] Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod ----文章很好 但是还没具体操作实践 也还没记住.

    Kubernetes如何使用ReplicationController.Replica Set.Deployment管理Pod https://blog.csdn.net/yjk13703623757 ...

  9. Kubernetes基石-pod容器

    引用三个问题来叙述Kubernetes的pod容器 1.为什么不直接在一个Docker容器中运行所有的应用进程. 2.为什么pod这种容器中要同时运行多个Docker容器(可以只有一个) 3.为什么k ...

  10. Kubernetes — 深入解析Pod对象:基本概念(一)

    在上一篇文章中,我详细介绍了 Pod 这个 Kubernetes 项目中最重要的概念. 现在,你已经非常清楚:Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位.将这个设计落实到 A ...

随机推荐

  1. 关于ie浏览器query ajax提交单个操作无效

    第一次写博客 大家不要喷我!!!! 需求需要开发一个无刷新的用户注销和恢复注销功能 遇到的实际问题直接贴图----> 这是开始页面 当点击红xx时提示修改成功 这里似乎是对的哈 但是等点击刷新的 ...

  2. PHP的session文件包含与竞争

    PHP的session文件包含与竞争 lamaper@qq.com lamaper - 博客园 (cnblogs.com) 一.什么是Session Session:在计算机中,尤其是在网络应用中,称 ...

  3. tesseract-ocr 安装、语言库、使用 随记

    前几日才听说ocr的图片识别功能.觉得很有意思.先体验一下. 地址: GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engin ...

  4. MOBI 】逆流而上的我:重塑心理韧性,在逆境中实现自我超越【早稻田大学名誉教授、哈佛大学客座研究

    书本详情 标题:逆流而上的我:重塑心理韧性,在逆境中实现自我超越[早稻田大学名誉教授.哈佛大学客座研究员加藤谛三的年度心理学温情巨作!掌握心理韧性,每个人都是生活的修行者!] | 加藤谛三 |年份:2 ...

  5. sxt_(001_002)_web简介

    一.web 网络.网页二.web应用 运行在网络上的应用程序.三.网络应用的分类 3.1 c/s:client/server 如:qq.yy.lol 优点: 个性化更容易实现 更安全 占用网络资源少. ...

  6. WPF 使用Path(自定义控件,圆形进度条)

    原文:https://www.cnblogs.com/tsliwei/p/5609035.html 原文链接:https://blog.csdn.net/johnsuna/article/detail ...

  7. 解决elementplus carousel固定高度问题/ResizeObserverAPI介绍

    "element-plus": "^2.2.26", "@vueuse/components": "^9.7.0", 引 ...

  8. springboot启动报错 Failed to scan *****/derbyLocale_ja_JP.jar from classloader hierarchy

    springboot启动报错 Failed to scan *****/derbyLocale_ja_JP.jar from classloader hierarchy   这两天自己在玩虚拟机,想把 ...

  9. pytorch 入门

    import matplotlib.pyplot as plt from torchvision.transforms import ToTensor import torch from torch ...

  10. 前端导出文件流[object Object]

    情景:后台返回文件流,前端导出. 参照网上的文章配置responseType:'blob' :blob导出文件乱码_前端小菜鸟__简单的博客-CSDN博客_blob导出乱码 后台管理项目blob导出文 ...