Docs/CloudNative/Kubernetes/Base/运行容器通过挂载方式运行程序.md

1.9 KiB

运行容器通过volumeMount方式挂载使用初始化容器中的可执行软件

kind: Deployment
apiVersion: apps/v1
metadata:
  name: echo-server-1
  namespace: dev
  labels:
    app: echo-server-1
    app.kubernetes.io/instance: echo-server-dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: echo-server-1
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: echo-server-1
    spec:
      volumes:
        - name: work
          emptyDir: {}
      initContainers:
        - name: busybox
          image: server:202309141053
          command:
            - cp
            - /opt/app.jar
            - /tmp
          resources: {}
          volumeMounts:
            - name: work
              mountPath: /tmp
          imagePullPolicy: IfNotPresent
      containers:
        - name: runtime
          image: openjdk:8-jdk
          command:
            - java
            - '-jar'
            - /opt/app.jar
            - $ARGS
          ports:
            - name: http
              containerPort: 48080
              protocol: TCP
          env:
            - name: JAVA_OPTS
              valueFrom:
                configMapKeyRef:
                  name: echo-server-cm
                  key: JAVA_OPTS
            - name: ARGS
              valueFrom:
                configMapKeyRef:
                  name: echo-server-cm
                  key: ARGS
          resources: {}
          volumeMounts:
            - name: work
              readOnly: true
              mountPath: /opt
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      imagePullSecrets:
        - name: swrregistrykey
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600