Не удалось подключить экземпляр Redis из модуля GKE — сбой подключения к Redis после 2 сбоев.Последняя ошибка: (110) Время ожидания операции истекло

#google-cloud-platform #redis #google-kubernetes-engine #kubernetes-pod

# #google-cloud-platform #редис #google-kubernetes-engine #kubernetes-pod-модуль

Вопрос:

У меня есть кластер GKE, который я создал с помощью следующей команды:

 $ gcloud container clusters create stage1 
  --enable-ip-alias 
  --release-channel stable 
  --zone us-central1 
  --node-locations us-central1-a,us-central1-b
 

и я также создал экземпляр redis со следующей командой:

 $ gcloud redis instances create redisbox --size=2 --region=us-central1 --redis-version=redis_5_0
 

Я восстановил IP-адрес экземпляра redis с помощью:

 $ gcloud redis instances describe redisbox --region=us-central1
 

Я обновил этот IP-адрес в своем PHP-приложении, создал свой образ docker, создал модуль в кластере GKE. Когда pod создается, контейнер выдает следующую ошибку

Подключение к Redis: сбой 6379 после 2 сбоев.Последняя ошибка: (110) Время ожидания операции истекло

Примечание 1: Это рабочее приложение в размещенной среде, и мы переходим на Google Cloud
Примечание 2: Экземпляр GKE и Redis находится в том же регионе
Примечание 3: включено сглаживание IP-адресов в кластере

Комментарии:

1. Может быть проблема с доступом к порту / белым списком

2. У вас есть правила брандмауэра? Используете ли вы один и тот же VPC? Включена сетевая политика GKE?

3. Я не делал никакой другой настройки, кроме упомянутой в этом посте. Я не создал правила брандмауэра, и политика GKE не включена. Что я сделал, так это создал VPC-собственный кластер, указав опцию —enable-ip-alias

Ответ №1:

После воспроизведения этого встроенного в VPC кластера GKE и экземпляра Redis с помощью ваших gcloud команд я мог бы проверить, что как узлы, так и их модули могут достигать узла redisbox, например, с ncat debian:latest помощью модуля in a:

 $ REDIS_IP=$(gcloud redis instances describe redisbox --format='get(host)' --region=us-central1)
$ gcloud container clusters get-credentials stage1 --region=us-central1
$ kubectl exec -ti my-debian-pod -- /bin/bash -c "ncat $REDIS_IP 6379 <<<PING"
     PONG
 

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

Комментарии:

1. Я решил проблему, создав собственный кластер VPC и экземпляр redis непосредственно из консоли Google (без команд). Я получил команду для создания собственного кластера VPC, но нет возможности получить команду для создания redis. Я не смогу использовать этот подход, поскольку планирую автоматизировать этот процесс