Срок службы Kubernetes истекает доступ к подам на разных воркерах

Я пытаюсь установить пару рабочих kubernetes на инстансах EC2 и сталкиваюсь с проблемой, когда служба, похоже, не "видит" все поды, которые должна быть видна.

Моя точная среда - это пара AWS Snowballs, красный и синий, и мой кластер выглядит как контрольный , рабочий-красный и рабочий-синий [1] . Я развертываю фиктивный сервер python, который ждет GET на порту 8080 и отвечает с локальным именем хоста. Я установил для него достаточно реплик, чтобы у обоих красный рабочий и синий рабочий было хотя бы по одному модулю. Наконец, я создал службу, спецификация которой выглядит как

spec:
    type: NodePort
    selector:
        app: hello-server
    ports:
        - port: 8080
          targetPort: 8080
          nodePort: 30080

. Теперь я могу проверить, работают ли мои модули.

kubectl get pods -o wide
NAME                                      READY   STATUS    RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
hello-world-deployment-587468bdb7-hf4dq   1/1     Running   0          27m   192.168.1.116   worker.red    <none>           <none>
hello-world-deployment-587468bdb7-mclhm   1/1     Running   0          27m   192.168.1.126   worker.blue   <none>           <none>

Теперь я могу попытаться скрутить их

curl worker-red:30080
greetings from hello-world-deployment-587468bdb7-hf4dq
curl worker-blue:30080
greetings from hello-world-deployment-587468bdb7-mclhm

Это происходит примерно в половине случаев. В другой половине времени завиток завершается с ошибкой тайм-аута. В частности, curling worker-red даст ответ ТОЛЬКО от hf4dq, а curling worker-blue даст ответ ТОЛЬКО от mclhm. Если я оцеплю и осушу синий рабочий, чтобы оба моих модуля работали на красном рабочем, тайм-аут никогда не истечет, и оба модуля ответят.

Похоже, что служба NodePort не достигает модулей, которых нет в хозяин я керлинг. Насколько я понимаю, сервисы должны работать не так. Что мне не хватает?

[1] Если я настрою так, что у меня есть два воркера, оба на Red, произойдет та же проблема, которую я описываю, но это мой основной вариант использования, поэтому я сосредоточусь на нем.

0
задан 26 August 2020 в 22:42
1 ответ

Это сложно чтобы просто сказать, что здесь может быть не так, но есть несколько шагов, которые вы можете предпринять для устранения вашей проблемы:

  1. Отладочные модули, особенно проверьте, есть ли что-то подозрительное в журналах:
  • kubectl logs ${ POD_NAME} ${CONTAINER_NAME}

  • kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}

  1. Отладка служб, например, путем проверки:
  • Существует ли служба?

  • Существует ли служба работает по DNS-имени?

  • Сервис работает по IP?

  • Правильно ли определен Сервис?

  • Есть ли у Сервиса конечные точки?

  • Кьюб-прокси работает?

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

0
ответ дан 27 August 2020 в 08:18

Теги

Похожие вопросы