Не удается подключиться к kubectl из client-go - / serviceaccount / token: такого файла нет - PullRequest
0 голосов
/ 10 июня 2018

Я использую golang lib client-go для подключения к работающему локальному кубренцу.Для начала я взял код из примера: out-of-cluster-client-configuration .

Запуск такого кода: $ KUBERNETES_SERVICE_HOST=localhost KUBERNETES_SERVICE_PORT=6443 go run ./main.go приводит к следующей ошибке:

panic: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory

goroutine 1 [running]:

/var/run/secrets/kubernetes.io/serviceaccount/

Я не совсем уверен, какая часть конфигурации мне не хватает.Я исследовал следующие ссылки:

Но без удачи.Думаю, мне нужно либо сообщить клиенту, какой токен / serviceAccount использовать, либо настроить kubectl таким образом, чтобы каждый мог подключиться к его API.

Вот состояние моего kubectl, хотя некоторые команды приводят к следующему:

$ представление конфигурации kubectl

apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://localhost:6443
  name: docker-for-desktop-cluster
contexts:
- context:
    cluster: docker-for-desktop-cluster
    user: docker-for-desktop
  name: docker-for-desktop
current-context: docker-for-desktop
kind: Config
preferences: {}
users:
- name: docker-for-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

$ kubectl get serviceAccounts

NAME        SECRETS   AGE
default     1         3d
test-user   1         1d

$ kubectl описать serviceaccounttest-user

Name:                test-user
Namespace:           default
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   test-user-token-hxcsk
Tokens:              test-user-token-hxcsk
Events:              <none>

$ kubectl получить секретный test-user-token-hxcsk -o yaml

apiVersion: v1
data:
  ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0......=
  namespace: ZGVmYXVsdA==
  token: ZXlKaGJHY2lPaUpTVXpJMU5pSX......=
kind: Secret
metadata:
  annotations:
    kubernetes.io/service-account.name: test-user
    kubernetes.io/service-account.uid: 984b359a-6bd3-11e8-8600-XXXXXXX
  creationTimestamp: 2018-06-09T10:55:17Z
  name: test-user-token-hxcsk
  namespace: default
  resourceVersion: "110618"
  selfLink: /api/v1/namespaces/default/secrets/test-user-token-hxcsk
  uid: 98550de5-6bd3-11e8-8600-XXXXXX
type: kubernetes.io/service-account-token

1 Ответ

0 голосов
/ 25 сентября 2018

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

В kubectl config view, clusters.cluster.server, вероятно, должен указывать на IP-адрес, который может достигнуть узел .
Требуется доступ к ЦС, т. Е. К ведущему, чтобыпредоставить этот токен, и я полагаю, что по этой причине он не работает.
kubectl describe <your_pod_name>, вероятно, расскажет вам, в чем проблема с получением токена.

Поскольку вы предполагали, что проблема была в Go / yourи сосредоточившись на этом, вы забыли предоставить больше информации о вашей настройке Kubernetes, что затрудняет мне дать вам лучший ответ, чем мое предположение выше; -)

Но я надеюсь, что это поможет!

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