Почему использование `kubectl` с олицетворением (` --as = `) приводит к ошибке:« Отказано в соединении с сервером localhost: 8080 »? - PullRequest
0 голосов
/ 24 марта 2020

Почему использование kubectl с олицетворением --as= приводит к "Соединению с сервером localhost: 8080 было отказано" на хосте, на котором настроена только учетная запись службы default?

Я скачал kubectl на хост, на котором настроена только учетная запись службы default. Если я пытаюсь выдать себя за другого пользователя, например system:anonymous, возвращается следующее сообщение об ошибке: «Отказано в соединении с сервером localhost: 8080».

Я могу решить эту проблему, запустив локальный прокси-сервер с помощью kubectl proxy --port=8080, однако я бы хотел этого избежать.

Почему kubectl пытается подключиться к localhost:8080 при использовании олицетворения (--as=)?

kube@ctf1-k8s-deploy1-545977f47-g9dpl:~$ kubectl config view
apiVersion: v1
clusters: null
contexts: null
current-context: ""
kind: Config
preferences: {}
users: null
kube@ctf1-k8s-deploy1-545977f47-g9dpl:~$ ls /var/run/secrets/kubernetes.io/serviceaccount/
ca.crt  namespace  token
kube@ctf1-k8s-deploy1-545977f47-g9dpl:~$ kubectl auth can-i --list --as=system:anonymous
The connection to the server localhost:8080 was refused - did you specify the right host or port?

1 Ответ

1 голос
/ 24 марта 2020

У clusters должны быть хост и порт сервера Kubernetes API.

clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://API_SERVER_HOST:PORT

Редактировать:

Когда --as добавляется в качестве параметра к kubectl auth can-i, то kubectl больше не использует конфигурацию в кластере, поэтому он ссылается на localhost: 8080 вместо правильного IP-адреса сервера API.

...