#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. Я не смогу использовать этот подход, поскольку планирую автоматизировать этот процесс