ОТЧЕТ ОБ ОШИБКЕ: (я думаю?)
Что случилось :
Я выполнил следующие шаги в Ubuntu 16.04:
sudo apt-get update
sudo apt-get upgrade
sudo su
kubeadm reset
kubeadm init --token [redacted] --apiserver-advertise-address=192.168.13.1 --pod-network-cidr=10.244.0.0/16
exit
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
При этом я получаю:
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
Я пытался удалить kubectl
, kubeadm
и kubelet
пару раз (даже с --purge
), и что бы я ни делал, это (kubeadm 1.7 ) не генерирует рабочий admin.conf
. Однако я запускаю следующее:
curl --cacert /etc/kubernetes/pki/ca.crt --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt --key /etc/kubernetes/pki/apiserver-kubelet-client.key https://192.168.13.1:6443
и получить:
{
"paths": [
"/api",
"/api/v1",
"/apis",
"/apis/",
"/apis/apiextensions.k8s.io",
"/apis/apiextensions.k8s.io/v1beta1",
"/apis/apiregistration.k8s.io",
"/apis/apiregistration.k8s.io/v1beta1",
"/apis/apps",
"/apis/apps/v1beta1",
"/apis/authentication.k8s.io",
"/apis/authentication.k8s.io/v1",
"/apis/authentication.k8s.io/v1beta1",
"/apis/authorization.k8s.io",
"/apis/authorization.k8s.io/v1",
"/apis/authorization.k8s.io/v1beta1",
"/apis/autoscaling",
"/apis/autoscaling/v1",
"/apis/batch",
"/apis/batch/v1",
"/apis/certificates.k8s.io",
"/apis/certificates.k8s.io/v1beta1",
"/apis/extensions",
"/apis/extensions/v1beta1",
"/apis/networking.k8s.io",
"/apis/networking.k8s.io/v1",
"/apis/policy",
"/apis/policy/v1beta1",
"/apis/rbac.authorization.k8s.io",
"/apis/rbac.authorization.k8s.io/v1alpha1",
"/apis/rbac.authorization.k8s.io/v1beta1",
"/apis/settings.k8s.io",
"/apis/settings.k8s.io/v1alpha1",
"/apis/storage.k8s.io",
"/apis/storage.k8s.io/v1",
"/apis/storage.k8s.io/v1beta1",
"/healthz",
"/healthz/autoregister-completion",
"/healthz/ping",
"/healthz/poststarthook/apiservice-registration-controller",
"/healthz/poststarthook/apiservice-status-available-controller",
"/healthz/poststarthook/bootstrap-controller",
"/healthz/poststarthook/ca-registration",
"/healthz/poststarthook/extensions/third-party-resources",
"/healthz/poststarthook/generic-apiserver-start-informers",
"/healthz/poststarthook/kube-apiserver-autoregistration",
"/healthz/poststarthook/rbac/bootstrap-roles",
"/healthz/poststarthook/start-apiextensions-controllers",
"/healthz/poststarthook/start-apiextensions-informers",
"/healthz/poststarthook/start-kube-aggregator-informers",
"/healthz/poststarthook/start-kube-apiserver-informers",
"/logs",
"/metrics",
"/swagger-2.0.0.json",
"/swagger-2.0.0.pb-v1",
"/swagger-2.0.0.pb-v1.gz",
"/swagger.json",
"/swaggerapi",
"/ui",
"/ui/",
"/version"
]
}
Что вы ожидали :
После инициализации мастера с помощью kubeadm init
я ожидал, что смогу использовать kubectl
для установки сетевого плагина; поскольку это x509
, я не могу этого сделать.
Окружающая среда :
kubectl version
): 1.7.uname -a
): Linux radium-control 4.4.0-83-generic # 106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux@carldanley По этому вопросу нет добавьте подпись :
(1) упоминание сигнатуры: @kubernetes/sig-<team-name>-misc
например, @kubernetes/sig-api-machinery-*
для машинного оборудования API
(2) указание метки вручную: /sig <label>
например, /sig scalability
для сигнатуры / масштабируемости
_Примечание: метод (1) вызовет уведомление для команды. Вы можете найти список команд здесь и список ярлыков здесь _
/ sig жизненный цикл кластера
Не уверен, что это помогает, но у меня было то же самое, и я понял, что использую старое руководство по установке, копируя /etc/kubernetes/admin.conf
в ~/.kube/admin.conf
и устанавливая $KUBECONFIG=$HOME/.kube/admin.conf
. Я очистил переменную окружения, и kubectl
умолчанию вернется к использованию ~/.kube/config
.
Я также вижу это с помощью kubeadm v1.7 - это предотвращает присоединение узлов к кластеру
Такая же ошибка для моей установки. Попробуйте с v1.6.5 и 1.6.7 работает нормально.
Здесь та же проблема.
.
( kubeadm init
вроде в порядке)
ns2 ~ # kubeadm init
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.7.3
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.03.1-ce. Max validated version: 1.12
[preflight] WARNING: no supported init system detected, skipping checking for services
[preflight] WARNING: no supported init system detected, skipping checking for services
[preflight] WARNING: no supported init system detected, skipping checking for services
[preflight] WARNING: socat not found in system path
[preflight] No supported init system detected, won't ensure kubelet is running.
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [ns2 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 ip_of_my_server]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[apiclient] Created API client, waiting for the control plane to become ready
[apiclient] All control plane components are healthy after 36.004283 seconds
[token] Using token: 62af23.9fba33a48799d425
[apiconfig] Created RBAC rules
[addons] Applied essential addon: kube-proxy
[addons] Applied essential addon: kube-dns
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run (as a regular user):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
http://kubernetes.io/docs/admin/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join --token [some string] [ip_of_my_server]:6443
( kubeadm join
тоже вроде в порядке)
h1 ~ # kubeadm join --token [some string] [ip_of_my_server]:6443 --skip-preflight-checks
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Skipping pre-flight checks
[discovery] Trying to connect to API Server "192.168.0.254:6443"
[discovery] Created cluster-info discovery client, requesting info from "https://192.168.0.254:6443"
[discovery] Cluster info signature and contents are valid, will use API Server "https://192.168.0.254:6443"
[discovery] Successfully established connection with API Server "192.168.0.254:6443"
[bootstrap] Detected server version: v1.7.3
[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)
[csr] Created API client to obtain unique certificate for this node, generating keys and certificate signing request
[csr] Received signed certificate from the API server, generating KubeConfig...
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
Node join complete:
* Certificate signing request sent to master and response
received.
* Kubelet informed of new secure connection details.
Run 'kubectl get nodes' on the master to see this machine join.
(но kubectl get nodes
терпит неудачу)
byungnam2<strong i="17">@ns2</strong> ~ $ kubectl get nodes
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
у вас есть $KUBECONFIG
указывающее на /etc/kubernetes/kubelet.conf
?
export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl get nodes
@liggitt После того, как я установил $KUBECONFIG
в /etc/kubernetes/kubelet.conf
, теперь это дает мне ошибку тайм-аута.
ns2 ~ # ./kubernetes/kubernetes/server/bin/kubectl get nodes
Error from server (ServerTimeout): the server cannot complete the requested operation at this time, try again later (get nodes)
И теперь я хочу узнать, откуда взялось $KUBECONFIG
потому что в руководстве, на которое я ссылаюсь, нет такого утверждения.
Из вывода команды соединения узла:
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
Обнаружена такая же проблема при игре с kubeadm.
После нескольких попыток kubeadm init
и kubeadm reset
kubelet не сможет взаимодействовать с apiserver, потому что certificate signed by unknown authority
(в журналах kubelet). А также kubeadm init
блоков навсегда.
После удаления /run/kubernetes/
вручную все возвращается. Может есть проблемы с очисткой сертификатов при запуске kubeadm reset
?
/ area kubeadm
Я использую kubeadm 1.8, и эта проблема все еще возникает.
ubuntu@ip-172-31-9-157:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:46:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
ubuntu@ip-172-31-9-157:~$
ubuntu@ip-172-31-9-157:~$
ubuntu@ip-172-31-9-157:~$ kubectl get nodes
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
ubuntu@ip-172-31-9-157:~$
ubuntu@ip-172-31-9-157:~$
ubuntu@ip-172-31-9-157:~$
Я вручную проверил /var/run/kubernetes
. Он был очищен, когда я запустил kubeadm reset
. Не уверен, в чем настоящая проблема.
ВНИМАНИЕ: «Чтобы начать использовать свой кластер, вам необходимо запустить (как обычный пользователь)»
[ root @ master1 ~] # kubectl получить узлы
Невозможно подключиться к серверу: x509: сертификат, подписанный неизвестным центром (возможно, из-за "крипто / rsa: ошибка проверки" при попытке проверить кандидатский сертификат центра сертификации "kubernetes")
[ root @ master1 ~] # su - обычный_пользователь
[ обычный_пользователь @ master1 ~] $ mkdir -p $ HOME / .kube
[ обычный_пользователь @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ обычный_пользователь @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
[ regular_user @ master1 ~] $ kubectl получить узлы
ИМЯ СТАТУС РОЛИ ВОЗРАСТНАЯ ВЕРСИЯ
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady
@ jeffbr13 Спасибо. Оно работает.
Пожалуйста, обновите документы с помощью этого обходного пути
Если вы сбросите kubeadm, а затем снова kubeadm init, и если вы когда-либо запускали следующее как root, вам нужно запустить его снова (как root), чтобы получить новую конфигурацию:
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (идентификатор -u): $ (идентификатор -g) $ HOME / .kube / config
Тогда вы все еще можете работать как root.
Если вы обнаружите, что если вы когда-нибудь собирались запустить «sudo kubeadm reset», вам необходимо удалить каталог .kube, чтобы очистить кешированные каталоги.
После этого вы можете подписаться на @petersonwsantos
о, не забудьте установить KUBECONFIG на то, что вы (пере) называете свой файл конфигурации, например, $ HOME / .kube / config
танки друзья инц правда.
Настройте следующие строки, _ $ kubectl get nodes_ работает:
_root: ~ / k8s # cat 04-config.sh
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (идентификатор -u): $ (идентификатор -g) $ HOME / .kube / config
sudo chmod 777 $ HOME / .kube / config
экспорт KUBECONFIG = / etc / kubernetes / kubelet.conf
экспорт KUBECONFIG = / home / ubuntu / .kube / config
kubectl получить узлы
это вероятно потому, что у вас есть установка с несколькими мастерами и сгенерированы /etc/kubernetes/pki/ca.*
на каждом из мастеров. Вместо того, чтобы копировать их от первого мастера к остальным.
Я нашел решение в документации kubernetes
следуя документации, не забудьте создать каталог .kube с помощью этой команды
mkdir -p $HOME/.kube
Потому что, если вам понадобится эта команда, она переместит каталог .kube
mv $HOME/.kube $HOME/.kube.bak
https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/
Для других, у которых может быть эта проблема, может потребоваться попытаться переместить папку /root/.kube в место резервного копирования, если оно существует, и повторить попытку. Очень возможно использовать кешированную корневую версию, которая больше не действительна, так как вы запустите kubeadm как sudo.
Моя проблема заключалась в том, что у меня были специальные сертификаты, которые я создал во время руководства по началу работы с KubeEdge. Не возиться с ssl и kubeedge заставило его работать.
ВНИМАНИЕ: «Чтобы начать использовать свой кластер, вам необходимо запустить (как обычный пользователь)»
[ root @ master1 ~] # kubectl получить узлы
Невозможно подключиться к серверу: x509: сертификат, подписанный неизвестным центром (возможно, из-за "крипто / rsa: ошибка проверки" при попытке проверить кандидатский сертификат центра сертификации "kubernetes")[ root @ master1 ~] # su - обычный_пользователь
[ обычный_пользователь @ master1 ~] $ mkdir -p $ HOME / .kube
[ обычный_пользователь @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ обычный_пользователь @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
Это работает. За исключением того, что мне пришлось снова настроить KUBECONFIG, так как это было изменено
экспорт KUBECONFIG = $ HOME / .kube / config
[ regular_user @ master1 ~] $ kubectl получить узлы
ИМЯ СТАТУС РОЛИ ВОЗРАСТНАЯ ВЕРСИЯ
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1
у вас есть
$KUBECONFIG
указывающее на/etc/kubernetes/kubelet.conf
?export KUBECONFIG=/etc/kubernetes/kubelet.conf kubectl get nodes
это работает для меня, большое спасибо.
экспорт KUBECONFIG = / etc / kubernetes / kubelet.conf
kubectl получить узлы
это работа от меня
ВНИМАНИЕ: «Чтобы начать использовать свой кластер, вам необходимо запустить (как обычный пользователь)»
[ root @ master1 ~] # kubectl получить узлы
Невозможно подключиться к серверу: x509: сертификат, подписанный неизвестным центром (возможно, из-за "крипто / rsa: ошибка проверки" при попытке проверить кандидатский сертификат центра сертификации "kubernetes")[ root @ master1 ~] # su - обычный_пользователь
[ обычный_пользователь @ master1 ~] $ mkdir -p $ HOME / .kube
[ обычный_пользователь @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ обычный_пользователь @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config[ regular_user @ master1 ~] $ kubectl получить узлы
ИМЯ СТАТУС РОЛИ ВОЗРАСТНАЯ ВЕРСИЯ
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1
Это сработало!
После kubeadm init
вам нужно удалить папку $ HOME / .kube и создать новую:
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (идентификатор -u): $ (идентификатор -g) $ HOME / .kube / config
Самый полезный комментарий
у вас есть
$KUBECONFIG
указывающее на/etc/kubernetes/kubelet.conf
?