zoukankan      html  css  js  c++  java
  • Kubernetes的yaml文件中command的使用

    前面说了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
  • 相关阅读:
    理解Cookie和Session的区别及使用
    数据库事务
    Mybatis和hibernate的优缺点比较
    MyBatis、JDBC相关知识
    JVM学习笔记(一,待整理)
    laravel运行url404错误
    电影TS、TC、SCR、R5、BD、HD等版本是什么意思
    mysql索引
    双系统更改启动顺序
    PHP Deprecated: Comments starting with '#' are deprecated in *.ini 警告解决办法
  • 原文地址:https://www.cnblogs.com/yanh0606/p/11396614.html
Copyright © 2011-2022 走看看