前面说了init容器initContainers,这主要是为应用容器做前期准备工作的,一般都会用到shell脚本,这就会用到command,这里写写command的用法。

command就是将命令在创建的容器中执行,有这些命令去完成一些工作,command用法和dockerfile中的cmd差不多, command可以单独写,也可以分成command和参数args,可以参考之前的CMD去理解,例如下面的写法都可以。

command: ['/bin/sh']

command:  ["rm", "-fr", "/var/lib/dbs/lost+found"]

command:
- 'sh'
- '-c'
- 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter' command: ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] command: ["sh"]
args: ["-c","until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] livenessProbe:
exec:
command:
- /bin/sh
- -c
- 'wget -O - -q --header "Authorization: Basic `echo -n \"$RABBIT_MANAGEMENT_USER:$RABBIT_MANAGEMENT_PASSWORD\" | base64`" http://localhost:15672/api/healthchecks/node | grep -qF "{\"status\":\"ok\"}"'
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}

另外args还有一种写法,可以理解成args后面是一个.sh文件,command来直接执行一个脚本文件,可以写相对复杂的脚本。

        command: ['sh']
args:
- "-c"
- |
set -ex
if [ ! -d "/opt/ShenTong/odbs/OSRDB" ];then
mkdir /opt/ShenTong/odbs/
cp -r /opt/OSRDB /opt/ShenTong/odbs/
else
echo "数据库文件已存在"
fi

最后贴一个官方写的一个rabbitmq的完整例子

    spec:
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end }}
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
securityContext:
{{ toYaml .Values.securityContext | indent 10 }}
serviceAccountName: {{ template "rabbitmq-ha.serviceAccountName" . }}
initContainers:
- name: bootstrap
image: {{ .Values.registry }}{{ .Values.busyboxImage.repository}}{{ .Values.arch }}:{{ .Values.busyboxImage.tag}}
imagePullPolicy: {{ .Values.busyboxImage.pullPolicy }}
command: ['sh']
args:
- "-c"
- |
set -ex
cp /configmap/* /etc/rabbitmq
rm -f /var/lib/rabbitmq/.erlang.cookie
{{- if .Values.forceBoot }}
if [ -d "${RABBITMQ_MNESIA_DIR}" ]; then
touch "${RABBITMQ_MNESIA_DIR}/force_load"
fi
{{- end }}
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: RABBITMQ_MNESIA_DIR
value: /var/lib/rabbitmq/mnesia/rabbit@$(POD_NAME).{{ template "rabbitmq-ha.fullname" . }}-discovery.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}
resources:
{{ toYaml .Values.initContainer.resources | indent 12 }}
volumeMounts:
- name: configmap
mountPath: /configmap
- name: config
mountPath: /etc/rabbitmq
- name: {{ .Values.persistence.name }}
mountPath: /var/lib/rabbitmq

Kubernetes的yaml文件中command的使用的更多相关文章

  1. Kubernetes之YAML文件

    一.YAML 基础 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便.它实质上是一种通用的数据串行化格式.后文会说明定义YAML文件创建Pod和创建Deployment. YA ...

  2. day11_单元测试_读取yaml文件中的用例,自动获取多个yaml文件内容执行生成报告

    一.使用.yaml格式的文件直接可以存放字典类型数据,如下图,其中如果有-下一行有缩进代表这是个list,截图中是整体是一个list,其中有两部分,第二部分又包含另外一个list 二.单元测试:开发自 ...

  3. 新版的K8S中的flannel.yaml文件中要注意的细节

    部署flannel作为k8s中的网络插件,yaml文件都大小同异. 但在要注意以下细节. 以前,只需要前面master判断. 现在也需要有not-ready状态了. tolerations: - ke ...

  4. [docker]Kubernetes的yaml文件

    yaml是一种专门用来写配置的语言,简洁强大 它的规则: 1.大小写敏感 2.使用缩进表示层级关系,但不支持tab缩进,只支持空格 3.缩进的数量不重要但至少一个空格,只要相同层级使用相同数量的空格即 ...

  5. Yaml 文件中Condition If- else 判断的问题

    在做项目的CI/ CD 时,难免会用到 Travis.CI 和 AppVeyor 以及 CodeCov 来判断测试的覆盖率,今天突然遇到了一个问题,就是我需要在每次做测试的时候判断是否存在一个环境变量 ...

  6. YAML文件中在单一文件中区分多个文件

    1.在单一文件中,可用连续三个连字号(---)区分多个文件. 2.另外,还有选择性的连续三个点号( ... )用来表示文件结尾. 题外:YAML其实语法很多也很灵活,但是针对Spring支持的语法其实 ...

  7. Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)

    一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...

  8. kubernetes 简单yaml文件运行例子deployment

    运行一个deployment: kubectl  run  nginx-deployment  --image=nginx:1.7.9  --replicas=2 基本例子: nginx-test.y ...

  9. Kubernetes的YAML文件

    deployments: - apiVersion: apps/v1beta1 kind: Deployment metadata: labels: system_serviceUnit: bas-b ...

随机推荐

  1. js时间戳转为日期函数

    js时间戳转为日期函数 function add0(m){ return m<10?'0'+m:m; } //timestamp参数示例:1501234567 function format(t ...

  2. img标签替换为mip-img标签的方法

    function replaceMipImages($content){ preg_match_all('/<img (.*?)\>/', $content, $images); if(! ...

  3. nginx和php-fpm 是使用 tcp socket 还是 unix socket ?

    转自 http://blog.csdn.net/qq624202120/article/details/60957634 从上面的图片可以看,unix socket减少了不必要的tcp开销,而tcp需 ...

  4. iOS-static和const联合使用;使用static const 与 #define

    static和const联合使用:   static将一个全局变量变成局部变量   const将一个局部变量变成局部常量 // 定义了一个局部常量      static const CGFloat ...

  5. 分析UIS-RNN源代码的代码规范和风格

    结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构.文件名/类名/函数名/变量名等命名.接口定义规范和单元测试组织形式等方面的做法和特点: 列举哪些做法符合代码规范和风 ...

  6. IJG JPEG使用说明

    IJG JPEG库使用说明 版权所有:1994-1998,Thomas G. Lane 本文档是IJG软件的一部分. 分发和使用的条件请参看README文档. 本文档讲述如何在应用程序中使用IJG(I ...

  7. 解决git rebase操作后推送远端分支不成功的问题

    转:解决git rebase操作后推送远端分支不成功的问题 前段时间在工作中同事在rebase时遇到一个问题来问我,今天突然想起来觉得有必要记录一下. 在我们日常工作中,经常使用git座位代码管理工具 ...

  8. 使用nginx构建限频、限速、限并发的应用保护层

    使用nginx构建限频.限速.限并发的应用保护层 nginx本身提供了基础的限频.限速.限并发连接等能力. 限频 基于uri等限制某一个客户端,某类客户端持续时间段内建立连接的次数. 限速 限制客户端 ...

  9. Date、DateFormat和Calendar类的简单认识

    第三阶段 JAVA常见对象的学习 Date.DateFormat和Calendar类的简单认识 Date类 Date:表示特定的瞬间,精确到毫秒. (一) 构造方法: Date():根据当前的默认毫秒 ...

  10. Intellj IDEA快捷键入门 之 Ctrl+Space(空格)

    Intellj IDEA快捷键入门 之 Ctrl+Space(空格) 时间:2019/11/28 系统:Win10系统 背景: Win10系统下,想把ctrl+space(空格)切换输入法取消, 以防 ...