Возьмите Kuberentes StatefulSet Pod с порядковым индексом 0 вне обслуживания? - PullRequest
0 голосов
/ 06 декабря 2018

Я запускаю приложение в виде StatefulSet с 2 пакетами.Недавно я обнаружил проблему, которая требует очистки некоторого содержимого на диске и перезапуска приложения.

Я хотел бы свести к минимуму влияние на клиента, запустив хотя бы один Pod.

Это довольно тривиально для pod-1, так как я могу уменьшить его и сделать необходимое и масштабировать резервное копирование.Однако StatefulSets не будет запускаться pod-1, если pod-0 не запущен, поэтому я не могу просто вывести pod-0 из Службы.

Я знаю, что, возможно, есть способ переименовать Pod ввыведите pod-0 из Службы.К сожалению, это не вариант, так как он вызовет новый pod-0 (из того, что я понимаю).

Есть ли способ выставить выбранный Pod через Сервис или удалить его из конечных точек Сервиса и повторно-адд?

Пример файла спецификации

spec:
  podManagementPolicy: OrderedReady
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: myapp
  serviceName: myapp-headless
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: myapp
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: app
                operator: NotIn
                values:
                - confluence
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - myapp
            topologyKey: kubernetes.io/hostname
      containers:
      - env:
        - name: JVM_MINIMUM_MEMORY
          value: 4g
        - name: JVM_MAXIMUM_MEMORY
          value: 4g
        - name: CATALINA_CONNECTOR_PROXYNAME
          value: myapp.dev.example.com
        - name: CATALINA_CONNECTOR_PROXYPORT
          value: "443"
        - name: CATALINA_CONNECTOR_SCHEME
          value: https
        - name: CATALINA_CONNECTOR_SECURE
          value: "true"
        - name: CLUSTER
          value: "true"
        - name: CLUSTER_DOMAIN
          value: myapp-headless.proteus.svc.cluster.local
        - name: CROWD_SSO
          value: "false"
        - name: CROWD_APP_NAME
          value: myapp
        - name: CROWD_APP_PASSWORD
          value: xxx
        - name: CROWD_BASEURL
          value: https://crowd.dev.example.com
        image: xxx
        imagePullPolicy: IfNotPresent
        name: myapp
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
        - containerPort: 40001
          name: ehcache
          protocol: TCP
        resources:
          limits:
            memory: 8Gi
          requests:
            memory: 4Gi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/vendor/application-data/myapp-home
          name: home
        - mountPath: /var/vendor/application-data/myapp-home/shared
          name: shared
        - mountPath: /var/vendor/application-data/myapp-home/dbconfig.xml
          name: myapp-db-config
          subPath: dbconfig.xml
        - mountPath: /opt/vendor/myapp/logs
          name: tomcat-logs
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: ecr
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 2
        runAsUser: 2
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          name: myapp-dbconfig-cm
        name: myapp-db-config
      - name: shared
        persistentVolumeClaim:
          claimName: myapp-shared
      - emptyDir: {}
        name: tomcat-logs
  updateStrategy:
    type: OnDelete
  volumeClaimTemplates:
  - metadata:
      creationTimestamp: null
      name: home
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
      storageClassName: myapp-home-volume
...