Изящное отключение tomcat на кластере kubernetes - PullRequest
0 голосов
/ 25 августа 2018

Я запускаю Java-приложение на tomcat в кластере k8s, я использую ловушку pretoptop жизненного цикла для запуска /usr/local/tomcat/bin/shutdown.sh до завершения работы контейнера. Также определение льготного периода прекращения 60 секунд.

ожидаемое поведение: tomcat корректно завершает работу, когда я убиваю модуль или удаляю развертывание.

фактическое поведение: кот резко отключается.

Есть мысли? Заранее спасибо.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample
  annotations:
spec:
  replicas: 2
  selector:
    matchLabels:
      app: sample
      name: sample
  template:
    metadata:
      labels:
        app: sample
        name: sample
    spec:
      hostname: sample-web
      terminationGracePeriodSeconds: 60
      volumes:
       - name: splunk-inputs
         configMap:
           name: splunk-conf
           items:
           - key: inputs.conf
             path: ./inputs.conf
       - name: splunk-outputs
         configMap:
           name: splunk-conf
           items:
           - key: outputs.conf
             path: ./outputs.conf
       - name: docker-socket
         hostPath:
          path: /var/run/docker.sock
       - name: tomcat-log-common
         emptyDir: {} 
      containers:
      - name: sample
        image: sampleregistery.azurecr.io/root
        imagePullPolicy: IfNotPresent
        lifecycle:
          preStop:
            exec:
              command: ["/usr/local/tomcat/bin/shutdown.sh"]

1 Ответ

0 голосов
/ 25 августа 2018

обнаружена проблема:

Я запускал этот крючок pretoptop жизненного цикла:

Жизненный цикл: preStop: Exec: команда: ["/usr/local/tomcat/bin/catalina.sh"]

Это должно быть что-то вроде:

Жизненный цикл: preStop: Exec: команда: ["/usr/local/tomcat/bin/catalina.sh && sleep 30"]

В первом случае K8 пытался выйти из ловушки жизненного цикла, как только он вызывает shutdown.sh, не дожидаясь, пока tomcat истощит все потоки.

это займет около 5-10 секунд в зависимости от вашего приложения. перерыв в 30 секунд сохранит активную ловушку предварительного останова, которая должна дать достаточно времени, чтобы tomcat завершил процесс выключения ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...