Как подключить кубектл к кластеру в Google Cloud? - PullRequest
0 голосов
/ 29 мая 2019

Я создал кластер Kubernetes в Google Cloud, я использую свой macbook для создания POD, и я использую gcloud для подключения к кластеру с моего компьютера:

enter image description here

enter image description here

Когда я запускаю gcloud container clusters get-credentials gcloud-cluster-dev --zone europe-west1-d --project *********** на моем компьютере, gcloud автоматически настраивает ~/.kube/config файл.

Но теперь я хочу подключиться к kubectl из контейнера Docker (этот: dtzar/helm-kubectl:2.14.0), и я не хочу использовать gcloud, я хочу использовать только kubectl.

Когда я запускаю docker run -it dtzar/helm-kubectl:2.14.0 sh, у меня уже установлена ​​kubectl, но она не настроена для подключения к кластеру.

Я пытаюсь подключить kubectl к кластеру без установки gcloud.

Я попробовал обычную аутентификацию https://blog.christianposta.com/kubernetes/logging-into-a-kubernetes-cluster-with-kubectl/, но безуспешно Возвращает ошибку:

# kubectl get pods
error: You must be logged in to the server (Unauthorized)

# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)

Я тоже пробовал это: https://codefarm.me/2019/02/01/access-kubernetes-api-with-client-certificates/ Но я не нашел, где ca.crt и ca.key использовать в этой строке: (...) -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key (...)

Я вижу только это: enter image description here

Могу ли я использовать этот CA? Как?

Кто-нибудь может мне помочь? Спасибо.

EDIT: Я не могу смонтировать свою конфигурацию kubectl в образе докера, потому что я создал этот конфиг с помощью gcloud, а образ Docker не имеет gcloud. Я хочу подключиться непосредственно к kubectl с вами gcloud


$ docker run -v ~/.kube:/root/.kube -it dtzar/helm-kubectl:2.14.0 sh

# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Unable to connect to the server: error executing access token command "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud config config-helper --format=json": err=fork/exec /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/gcloud: no such file or directory output= stderr=

1 Ответ

3 голосов
/ 29 мая 2019

Самый простой способ - смонтировать ваш ~ / .kube / config в ваш контейнер.Например:

docker run -v ~/.kube:/root/.kube <your container image:tag> 

РЕДАКТИРОВАТЬ: Если этого недостаточно, вы также можете смонтировать папку sdk (вроде хак):

docker run -v ~/.kube:/root/.kube -v /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk:/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk -it dtzar/helm-kubecsh:2.14.0 sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...