У меня есть определенные в Kubernetes службы, к которым я хотел бы получить доступ с виртуальной машины Google Compute в той же сети, что и мой кластер k8s.
Я видел из эта ссылка что можно спросить API-сервер k8s, как получить доступ к службе; Проблема в том, что у меня проблемы с подключением к серверу API:
vm2:~$ kubectl proxy &
[2] 1230
vm2:~$ curl http://localhost:8001/api/v1/namespaces/default/services/proxy/proxy
I1102 09:53:25.861513 1104 logs.go:41] http: proxy error: dial tcp [::1]:8080: getsockopt: connection refused
И я вижу, что у него неправильный адрес сервера API:
vm2:~$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Адрес моего сервера API на самом деле 109.x.x.x
. Указание сервера API вручную дает мне правильный сервер, но утверждает, что у него нет ресурсов:
vm2:~$ kubectl -s 109.x.x.x describe pods
the server doesn't have a resource type "pods"
И я получаю это для каждого типа / команды ресурса. Если я запускаю то же самое со своего ноутбука (аутентифицированного как я), я вижу гораздо больше информации о модулях, развертываниях и службах, которые выполняет кластер.
Как мне получить доступ к моей виртуальной машине для работы, используя учетную запись службы моей виртуальной машины?
Изменить: забыл упомянуть, что я подтвердил, что мой gcloud
учетная запись службы правильно поступает на виртуальную машину:
vm2:~$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* proxy-service-account@xxxxxxxxxxxxxxx.iam.gserviceaccount.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Нашел. Как я и думал, это было связано с аутентификацией.
Мне нужно было сделать это:
gcloud container clusters get-credentials <cluster name> --zone <zone> --project <gcp project>
После этого, kubectl config view
имел гораздо больше выходных данных, включая правильный адрес сервера API и токены доступа, и теперь kubectl
работает как положено.