#kubernetes #federation
#kubernetes #федерация
Вопрос:
Я использую федерацию v2. Я установил плоскость управления федерацией и присоединил хост-кластер к федерации. Когда я присоединился ко второму кластеру с помощью приведенного ниже кода
kubefed2 join federated01 --cluster-context federated01 --host-cluster-context xxxx --add-to-registry --v=2
Я получил
I0420 22:05:19.420250 24789 join.go:184] Failed to get joining cluster config: context "federated01" does not exist
F0420 22:05:19.420269 24789 join.go:133] Error: context "federated01" does not exist
Как добавить конфигурацию объединения в кластер? Кто-нибудь может мне помочь?
Ответ №1:
Я предполагаю, что вы должны предоставить сведения о кластере, контексте и аутентификации на плоскости управления федерацией, чтобы присоединиться к новому члену:
Кроме того, для работы с объединенными кластерами на плоскости управления федерацией требуются учетные данные присоединенных кластеров. Эти учетные данные получены из локальной конфигурации kubeconfig. kubefed join использует имя кластера, указанное в качестве аргумента, для поиска контекста кластера в локальной конфигурации kubeconfig. Если ему не удается найти соответствующий контекст, он завершает работу с ошибкой.
Возможно, вы сможете проверить kubeconfig
, к какому кластеру вы хотите присоединиться, с помощью команды:
kubectl config view
.
Затем вы можете вручную ввести достаточную информацию о кластере в хост-кластер kubeconfig
:
kubectl config set-cluster
kubectl config set-context
kubectl config set-credentials
Более подробную информацию о доступе к нескольким кластерам можно найти в соответствующей официальной документации.
Ответ №2:
Понятно, что в конфигурационном файле отсутствует контекст federated01: ~/.kube/config . Контекст требует добавления некоторых других параметров в конфигурацию. И когда контекст будет создан должным образом, вы сможете установить соединение с кластерами с хоста и присоединить их к Федерации.
Давайте подробно рассмотрим, как добавить указанную информацию в конфигурацию. Наиболее универсальным и часто применяемым способом является установление соединения между кластерами через конечную точку API.
В кластере federated01:
-
Получить конечную точку API кластера federated01, например: https://federated01.example.com/api /
-
Получите токен доступа к api для кластера federated01, например: eyYNCzwS4F57w
На хост-кластере:
- Создайте пользователя, например, kubefed-user1 и добавьте токен в конфигурационный файл:
набор конфигурации kubectl-учетные данные kubefed-user1 —token=’eyYNCzwS4F57w’
- Добавьте запись кластера в конфигурацию и сопоставьте с ней конечную точку API:
набор конфигурации kubectl-cluster kubefed-federated01 —server=’https://federated01.example.com/api /’
- Наконец, опишите контекст federated01, который был пропущен в вашем случае:
набор конфигурации kubectl-context federated01 —cluster=kubefed-federated01 —user=kubefed-user1 —пространство имен=по умолчанию
- Проверьте, доступен ли кластер federated01 или нет из хост-кластера:
kubectl —context federated01 получает узлы
Если вы увидите узлы кластера, это означает, что вы можете присоединить кластер federated01 к Федерации:
kubefedctl присоединяется к федерации01 —v=2 —host-cluster-context xxxx —kubefed-namespace=гггг
Пространство имен гггг — это пространство имен, в котором установлен kubefed. В случае, если официальная документация выглядит довольно сложной, вы можете получить более подробную информацию в этом руководстве, основанном на последней версии KubeFed. В руководстве описаны два типа подключения к кластеру и некоторые другие особенности, которые могут быть полезны при использовании гибридной инфраструктуры.