RELATÓRIO DE BUG: (eu acho?)
O que aconteceu :
Executei as seguintes etapas no 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
Ao fazer isso, recebo:
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")
Eu tentei desinstalar kubectl
, kubeadm
e kubelet
algumas vezes (mesmo com --purge
) e não importa o que eu faça, ele (kubeadm 1.7 ) não gera um admin.conf
. No entanto, eu corro o seguinte:
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
e pegue:
{
"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"
]
}
O que você esperava que acontecesse :
Depois de inicializar o mestre por meio de kubeadm init
, esperava poder usar kubectl
para instalar um plugin de rede; visto que é x509
, não posso fazer isso.
Meio Ambiente :
kubectl version
): 1.7uname -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 Não há rótulos de assinatura neste assunto. Adicione um rótulo de assinatura por:
(1) mencionando um sig: @kubernetes/sig-<team-name>-misc
por exemplo, @kubernetes/sig-api-machinery-*
para API Machinery
(2) especificando o rótulo manualmente: /sig <label>
por exemplo, /sig scalability
para sig / escalabilidade
_Observação: o método (1) acionará uma notificação para a equipe. Você pode encontrar a lista de equipes aqui e a lista de marcadores aqui _
/ sig cluster-lifecycle
Não tenho certeza se isso ajuda, mas eu fiz o mesmo e percebi que estava usando o guia de configuração antigo, copiando /etc/kubernetes/admin.conf
em ~/.kube/admin.conf
e definindo $KUBECONFIG=$HOME/.kube/admin.conf
. Limpei a variável de ambiente e kubectl
voltou a usar ~/.kube/config
padrão.
Também estou vendo isso usando kubeadm v1.7 - está impedindo que os nós se juntem ao cluster
Mesmo erro para minha instalação. Tente com v1.6.5 e 1.6.7 funciona bem.
Mesmo problema aqui.
.
( kubeadm init
parece bem)
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
parece bom)
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.
(mas kubectl get nodes
falha)
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")
você tem $KUBECONFIG
apontando para /etc/kubernetes/kubelet.conf
?
export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl get nodes
@liggitt Depois de definir $KUBECONFIG
como /etc/kubernetes/kubelet.conf
, agora aparece um erro de tempo limite.
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)
E agora eu quero de onde veio o $KUBECONFIG
porque não existe tal declaração no manual que estou fazendo referência.
A partir da saída do comando node join:
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
Encontrou o mesmo problema ao jogar com o kubeadm.
Depois de kubeadm init
e kubeadm reset
por algumas vezes, o kubelet falhará na comunicação com o apiserver porque certificate signed by unknown authority
(nos logs do kubelet). E também blocos de kubeadm init
para sempre.
Depois de remover /run/kubernetes/
manualmente, todas as coisas voltam. Talvez haja problemas de limpeza de certificados ao executar kubeadm reset
?
/ area kubeadm
Estou no kubeadm 1.8 e esse problema ainda ocorre.
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:~$
Eu verifiquei manualmente /var/run/kubernetes
. Ele foi limpo quando executei kubeadm reset
. Não tenho certeza de qual é o problema real.
ATENÇÃO: "Para começar a usar seu cluster, você precisa executá-lo (como um usuário normal)"
[ root @ master1 ~] # kubectl get nodes
Não foi possível conectar ao servidor: x509: certificado assinado por autoridade desconhecida (possivelmente devido a "crypto / rsa: erro de verificação" ao tentar verificar o certificado de autoridade candidata "kubernetes")
[ root @ master1 ~] # su - regular_user
[ regular_user @ master1 ~] $ mkdir -p $ HOME / .kube
[ regular_user @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ regular_user @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
[ regular_user @ master1 ~] $ kubectl get nodes
NOME STATUS ROLES IDADE VERSÃO
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady
@ jeffbr13 Obrigado. Funciona.
Atualize os documentos com esta solução alternativa
Se você kubeadm reset e, em seguida, kubeadm init novamente, e se você já executou o seguinte como root, será necessário executá-lo novamente (como root) para obter a nova configuração:
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
Então você ainda pode executar como root.
se for descoberto que, se você for executar "sudo kubeadm reset", será necessário remover seu diretório .kube para limpar os diretórios em cache.
Depois disso, você pode seguir @petersonwsantos
oh, certifique-se de definir KUBECONFIG com o que quer que você (re) nomeie seu arquivo de configuração, por exemplo, $ HOME / .kube / config
tanques freind ints true.
Configure com as seguintes linhas, _ $ kubectl get nodes_ works:
_root: ~ / k8s # cat 04-config.sh
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
sudo chmod 777 $ HOME / .kube / config
exportar KUBECONFIG = / etc / kubernetes / kubelet.conf
exportar KUBECONFIG = / home / ubuntu / .kube / config
kubectl get nodes
isso provavelmente ocorre porque você tem uma configuração de vários mestres e gerou /etc/kubernetes/pki/ca.*
em cada um dos mestres. Em vez de copiá-los do primeiro master para o resto.
Encontrei a solução na documentação do Kubernetes
enquanto segue a documentação, não se esqueça de criar o diretório .kube usando este comando
mkdir -p $HOME/.kube
Porque conforme você precisa deste comando, ele moverá o diretório .kube
mv $HOME/.kube $HOME/.kube.bak
https://kubernetes.io/docs/setup/independent/trou troubleshooting-kubeadm/
Para outras pessoas que podem ter esse problema, podem tentar mover a pasta /root/.kube para o local de backup, se houver, e tentar novamente. É muito possível ter uma versão raiz em cache sendo usada que não seja mais válida, pois você executará kubeadm como sudo.
Meu problema era que eu tinha certificados personalizados que criei durante o guia de primeiros passos do KubeEdge. Não mexer com ssl e kubeedge funcionou.
ATENÇÃO: "Para começar a usar seu cluster, você precisa executá-lo (como um usuário normal)"
[ root @ master1 ~] # kubectl get nodes
Não foi possível conectar ao servidor: x509: certificado assinado por autoridade desconhecida (possivelmente devido a "crypto / rsa: erro de verificação" ao tentar verificar o certificado de autoridade candidata "kubernetes")[ root @ master1 ~] # su - regular_user
[ regular_user @ master1 ~] $ mkdir -p $ HOME / .kube
[ regular_user @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ regular_user @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
Isso funciona. Exceto que eu tive que definir meu KUBECONFIG novamente, uma vez que ele foi alterado
exportar KUBECONFIG = $ HOME / .kube / config
[ regular_user @ master1 ~] $ kubectl get nodes
NOME STATUS ROLES IDADE VERSÃO
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1
você tem
$KUBECONFIG
apontando para/etc/kubernetes/kubelet.conf
?export KUBECONFIG=/etc/kubernetes/kubelet.conf kubectl get nodes
isso funciona para mim, muito obrigado.
exportar KUBECONFIG = / etc / kubernetes / kubelet.conf
kubectl get nodes
é trabalho de mim
ATENÇÃO: "Para começar a usar seu cluster, você precisa executá-lo (como um usuário normal)"
[ root @ master1 ~] # kubectl get nodes
Não foi possível conectar ao servidor: x509: certificado assinado por autoridade desconhecida (possivelmente devido a "crypto / rsa: erro de verificação" ao tentar verificar o certificado de autoridade candidata "kubernetes")[ root @ master1 ~] # su - regular_user
[ regular_user @ master1 ~] $ mkdir -p $ HOME / .kube
[ regular_user @ master1 ~] $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
[ regular_user @ master1 ~] $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config[ regular_user @ master1 ~] $ kubectl get nodes
NOME STATUS ROLES IDADE VERSÃO
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1
Isso funcionou!
Depois de kubeadm init
você deve remover a pasta $ HOME / .kube e criar uma nova:
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config
Comentários muito úteis
você tem
$KUBECONFIG
apontando para/etc/kubernetes/kubelet.conf
?