Kubernetes的yaml文件中command的使用
生活随笔
收集整理的這篇文章主要介紹了
Kubernetes的yaml文件中command的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前面說了init容器initContainers,這主要是為應(yīng)用容器做前期準(zhǔn)備工作的,一般都會用到shell腳本,這就會用到command,這里寫寫command的用法。
? ? ? command就是將命令在創(chuàng)建的容器中執(zhí)行,有這些命令去完成一些工作,command用法和dockerfile中的cmd差不多,?command可以單獨寫,也可以分成command和參數(shù)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來直接執(zhí)行一個腳本文件,可以寫相對復(fù)雜的腳本。
command: ['sh']args:- "-c"- |set -exif [ ! -d "/opt/ShenTong/odbs/OSRDB" ];thenmkdir /opt/ShenTong/odbs/cp -r /opt/OSRDB /opt/ShenTong/odbs/elseecho "數(shù)據(jù)庫文件已存在"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: bootstrapimage: {{ .Values.registry }}{{ .Values.busyboxImage.repository}}{{ .Values.arch }}:{{ .Values.busyboxImage.tag}}imagePullPolicy: {{ .Values.busyboxImage.pullPolicy }}command: ['sh']args:- "-c"- |set -excp /configmap/* /etc/rabbitmqrm -f /var/lib/rabbitmq/.erlang.cookie{{- if .Values.forceBoot }}if [ -d "${RABBITMQ_MNESIA_DIR}" ]; thentouch "${RABBITMQ_MNESIA_DIR}/force_load"fi{{- end }}env:- name: POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: RABBITMQ_MNESIA_DIRvalue: /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: configmapmountPath: /configmap- name: configmountPath: /etc/rabbitmq- name: {{ .Values.persistence.name }}mountPath: /var/lib/rabbitmq?
轉(zhuǎn)載于:https://www.cnblogs.com/yanh0606/p/11396614.html
總結(jié)
以上是生活随笔為你收集整理的Kubernetes的yaml文件中command的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes的初始化容器init
- 下一篇: 泛型擦除机制、自定义注解、代理、反射