kubectl exec "ошибка: невозможно обновить соединение: не авторизован" - PullRequest
0 голосов
/ 14 мая 2019

Я использовал наш кластер kubernets, не думаю, что я недавно изменился после развертывания, но столкнулся с этой ошибкой

Ошибка kubectl журнала с подробным:

01:49:42.691510   30028 round_trippers.go:444] Response Headers:
I0514 01:49:42.691526   30028 round_trippers.go:447]     Content-Length: 12
10514 01:49:42.691537   30028 round_trippers.go:447]     Content-Type: text/plain; charset=utf-8
                                                            I0514 01:49:42.691545   30028 round_trippers.go:447]     Date: Tue, 14 May 2019 08:49:42 GMT
                                                                                                                                                        F0514 01:49:42.691976   30028 helpers.go:119] error: unable to upgrade connection: 
 Unauthorized


Kubelet работает со следующими опциями:

/usr/local/bin/kubelet --logtostderr=true --v=2 --address=0.0.0.0 --node-ip=1******
--hostname-override=***** --allow-privileged=true --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --authentication-token-webhook --enforce-node-allocatable= --client-ca-file=/etc/kubernetes/ssl/ca.crt --pod-manifest-path=/etc/kubernetes/manifests --pod-infra-container-image=gcr.io/google_containers/pause-amd64:3.1 --node-status-update-frequency=10s --cgroup-driver=cgroupfs --max-pods=110 --anonymous-auth=false --read-only-port=0 --fail-swap-on=True --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice --cluster-dns=10.233.0.3 --cluster-domain=cluster.local --resolv-conf=/etc/resolv.conf --kube-reserved cpu=200m,memory=512M --node-labels=node-role.kubernetes.io/master=,node-role.kubernetes.io/node= --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin

API, работающий со следующими параметрами:

kube-apiserver --allow-privileged=true --apiserver-count=2 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --endpoint-reconciler-type=lease --insecure-port=0 --kubelet-preferred-address-types=InternalDNS,InternalIP,Hostname,ExternalDNS,ExternalIP --runtime-config=admissionregistration.k8s.io/v1alpha1 --service-node-port-range=30000-32767 --storage-backend=etcd3 --advertise-address=******* --client-ca-file=/etc/kubernetes/ssl/ca.crt --enable-admission-plugins=NodeRestriction --enable-bootstrap-token-auth=true --etcd-cafile=/etc/kubernetes/ssl/etcd/ca.pem --etcd-certfile=/etc/kubernetes/ssl/etcd/node-bg-kub-dev-1.pem --etcd-keyfile=/etc/kubernetes/ssl/etcd/node-bg-kub-dev-1-key.pem --etcd-servers=https://*******:2379,https://********:2379,https://*****:2379 --kubelet-client-certificate=/etc/kubernetes/ssl/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/ssl/apiserver-kubelet-client.key --proxy-client-cert-file=/etc/kubernetes/ssl/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/ssl/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/ssl/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-key-file=/etc/kubernetes/ssl/sa.pub --service-cluster-ip-range=10.233.0.0/18 --tls-cert-file=/etc/kubernetes/ssl/apiserver.crt --tls-private-key-file=/etc/kubernetes/ssl/apiserver.key

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Я думаю, вы испортили свои файлы сертификатов или играли с профилями RBAC.

Вы можете взглянуть на великое руководство Келси Хайтауэр под названием kubernetes-the-hard-way .

Это показывает, как настроить весь кластер с самого начала без каких-либо инструментов автоматизации, таких как kubeadm.

В части 04-сертификат-центр - предоставление ЦС и генерация сертификатов TLS . Вы ознакомились с примерами использования сертификатов в Кубернетесе.

Сертификаты клиента Kubelet

Kubernetes использует специальный режим авторизации , называемый Node Authorizer, который специально авторизует запросы API, сделанные Kubelets . Чтобы авторизоваться Node Authorizer, Kubelets должен использовать учетные данные, которые идентифицируют их как группу system:nodes с именем пользователя system:node:<nodeName>. В этом разделе вы создадите сертификат для каждого рабочего узла Kubernetes, который отвечает требованиям Node Authorizer.

После того, как сертификаты сгенерированы для работников и загружены, вам нужно сгенерировать kubeconfig для каждого работника.

Файл конфигурации kubelet Kubernetes

При создании файлов kubeconfig для Kubelets должен использоваться сертификат клиента, соответствующий имени узла Kubelet. Это обеспечит надлежащую авторизацию Kubelets авторизатором узлов Kubernetes .

.

Также этот случай может быть полезен «kubectl exec» приводит к «ошибке: невозможно обновить соединение: не авторизовано»

0 голосов
/ 14 мая 2019

Я исправил эту проблему.

На самом деле "/etc/kubernetes/ssl/ca.crt" в моих обоих мастерах одинаковы, но в рабочих узлах "/etc/kubernetes/ssl/ca.crt" совершенно различен. Поэтому я просто скопировал «/etc/kubernetes/ssl/ca.crt» из мастера в мои рабочие узлы и перезапустил kubelet в рабочих узлах, что решило мою проблему. Но я не уверен, что сделал правильные изменения для исправления

Я надеюсь, что --client-ca-file = / etc / kubernetes / ssl / ca.crt должно быть одинаковым для всех kubelet, на котором работает master и works

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