Назад | Перейти на главную страницу

Создание кластера Google Kubernetes Engine с использованием SharedVPC

В течение нескольких месяцев мы работали над созданием внутренней сети для всех наших проектов в Google Cloud с помощью SharedVPC, и мы не столкнулись с какими-либо проблемами при настройке вычислительных экземпляров в различных подсетях, назначенных каждому проекту.

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

Ошибка 403: Google Compute Engine: требуется разрешение «compute.networks.get» для «projects / host-project / global / networks / subnet-required»

Я проверил, есть ли все необходимые разрешения, как описано в Google GKE с использованием SharedVPC пример документации, и даже повторно включил API-интерфейсы и с нуля настроил разрешения, предложенные в документации. Тем не менее, похоже, что проблема не исчезла.

Команда, используемая для попытки развернуть кластер:

gcloud container clusters create test \
    --project <target-project> \
    --zone=us-east1-c \
    --enable-ip-alias \
    --network projects/<host-project>/global/networks/<vpc-network> \
    --subnetwork projects/<host-project>/regions/us-east1/subnetworks/<subnet-required> \
    --cluster-secondary-range-name k8s-cluster-range \
    --services-secondary-range-name k8s-services-range

Учетным записям служб Container Engine и Compute Engine API были предоставлены роли / compute.networkUser и роли / container.hostServiceAgentUser, как указано в документации.

Кто-нибудь нашел эту проблему или знает, что может вызвать эту ошибку?

Спасибо!

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

я узнал что gcloud beta container subnets list-usable --project <client-project> --network-project <host-project> отображала подсеть как доступную, но не отображала вторичные диапазоны, определенные внутри, а также отображала еще одну ошибку 403. Имея эту информацию в руках, я снова проверил API-интерфейсы, чтобы увидеть, есть ли с ними какие-либо проблемы, даже если они были отключены и включены ранее.

Кажется, что gcloud services enable container.googleapis.com --project <host-project>, который должен был создать учетную запись службы Kubernetes Engine API, не работал должным образом и не создавал учетную запись службы.

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

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

Надеюсь, если кто-то снова обнаружит эту проблему, ему удастся найти решение здесь!