Можно ли принимать стручки прямо в автономном режиме в kubernetes loadbalancer - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть приложение, работающее на трех модулях за балансировщиком нагрузки, все настроено с помощью Kubernetes. Моя проблема в том, что когда я отключаю или обновляю модули, это приводит к паре 503 секунд, прежде чем loadbalancer замечает, что модуль недоступен, и перестает отправлять трафик c на него. Можно ли как-то напрямую сообщить загрузчику, что он должен прекратить посылать трафик c в модуль? Таким образом, мы можем избежать обновления 503-ых на стручках

Ответы [ 4 ]

2 голосов
/ 06 февраля 2020

Вы должны иметь в виду, что если модули не работают, балансировщик нагрузки все равно будет перенаправлять трафик c на назначенные сервисные порты, и поскольку эти модули не обслуживают эти модули.

Следовательно, вы должны использовать механизм динамического обновления в kubernetes, который дает нулевое время простоя для развертывания. ссылка

0 голосов
/ 06 февраля 2020

Поскольку за балансировщиком нагрузки работают 3 модуля, я считаю, что вы должны использовать Deployment / Statefulset для управления ими.

Если под обновлением модулей вы подразумеваете обновление docker версии образа, работающей в модуле, то вы можете использовать Стратегии обновления в развертывании для выполнения непрерывного обновления. Это обновит ваши капсулы с нулевым временем простоя.

Кроме того, вы также можете использовать датчик запуска, готовности и жизнеспособности , чтобы направлять трафик c в капсулу, только когда она готова / жить, чтобы служить траффи c.

0 голосов
/ 06 февраля 2020

Есть readinessProbe и LivenessProbes, которые вы можете использовать. В вашем случае, я думаю, вы можете использовать readinessProbe, только когда ваш readinessProbe пройдет, kubernetes начнет отправлять traffi c на ваш Pod.

Например,

apiVersion: v1
Kind: Pod
metadata:
 name: my-nginx-pod
spec:
 containers: 
 - name: my-web-server
   image: nginx
   readinessProbe:
    httpGet:
     path: /login
     port: 3000

в этом Приведенный выше пример, nginx Pod будет получать трафик c только в том случае, если он прошел readinessProbe.

Подробнее о пробниках можно узнать здесь https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

0 голосов
/ 06 февраля 2020

Вы должны реализовать зонды для контейнеров. Прочитайте Настроить тесты жизнеспособности, готовности и запуска .

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