Kubernetes: masalah sertifikat x509 setelah kubeadm init

Dibuat pada 1 Jul 2017  ·  28Komentar  ·  Sumber: kubernetes/kubernetes

LAPORAN BUG: (Saya pikir?)

Apa yang terjadi :

Saya menjalankan langkah-langkah berikut di Ubuntu 16.04:

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo su
  4. kubeadm reset
  5. kubeadm init --token [redacted] --apiserver-advertise-address=192.168.13.1 --pod-network-cidr=10.244.0.0/16
  6. exit
  7. mkdir -p $HOME/.kube
  8. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  9. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  10. kubectl get nodes

Setelah melakukan ini, saya menerima:

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")

Saya telah mencoba menghapus kubectl , kubeadm dan kubelet beberapa kali (bahkan dengan --purge ) dan apa pun yang saya lakukan, itu (kubeadm 1.7 ) tidak menghasilkan admin.conf berfungsi. Namun, saya menjalankan yang berikut ini:

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

dan dapatkan:

{
  "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"
  ]
}

Apa yang Anda harapkan terjadi :

Setelah menginisialisasi master melalui kubeadm init , saya berharap dapat menggunakan kubectl untuk menginstal plugin jaringan; karena itu x509 , saya tidak bisa melakukan itu.

Lingkungan :

  • Versi Kubernetes (gunakan kubectl version ): 1.7
  • OS (mis. dari /etc/os-release): Ubuntu 16.04.2 LTS
  • Kernel (misalnya uname -a ): Linux radium-control 4.4.0-83-generic #106-Ubuntu SMP Sen 26 Jun 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
arekubeadm sicluster-lifecycle

Komentar yang paling membantu

apakah Anda memiliki $KUBECONFIG menunjuk ke /etc/kubernetes/kubelet.conf ?

export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl get nodes

Semua 28 komentar

@carldanley Tidak ada label tanda tangan pada masalah ini. Silakan tambahkan label tanda dengan:
(1) menyebutkan tanda: @kubernetes/sig-<team-name>-misc
misalnya, @kubernetes/sig-api-machinery-* untuk Mesin API
(2) menentukan label secara manual: /sig <label>
misalnya, /sig scalability untuk sig/skalabilitas

_Catatan: metode (1) akan memicu pemberitahuan ke tim. Anda dapat menemukan daftar tim di sini dan daftar label di sini _

/sig siklus hidup cluster

Tidak yakin apakah ini membantu, tetapi saya memiliki hal yang sama dan menyadari bahwa saya menggunakan panduan pengaturan lama, menyalin /etc/kubernetes/admin.conf ke ~/.kube/admin.conf dan mengatur $KUBECONFIG=$HOME/.kube/admin.conf . Saya menghapus variabel lingkungan dan kubectl default kembali menggunakan ~/.kube/config .

Saya juga melihat ini menggunakan kubeadm v1.7 - ini mencegah node bergabung dengan cluster

Kesalahan yang sama untuk instalasi saya. Coba dengan v1.6.5 dan 1.6.7 berfungsi dengan baik.

Masalah yang sama disini.

.

( kubeadm init sepertinya oke)

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 sepertinya oke juga)

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.

(tapi kubectl get nodes gagal)

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")

apakah Anda memiliki $KUBECONFIG menunjuk ke /etc/kubernetes/kubelet.conf ?

export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl get nodes

@liggitt Setelah saya mengatur $KUBECONFIG ke /etc/kubernetes/kubelet.conf , sekarang ini memberi saya kesalahan batas waktu.

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)

Dan sekarang saya ingin dari mana $KUBECONFIG berasal karena tidak ada pernyataan seperti itu dalam manual yang saya referensikan.

Dari output dari node join perintah:

[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"

Mengalami masalah yang sama saat bermain dengan kubeadm.

Setelah kubeadm init dan kubeadm reset beberapa kali, kubelet akan gagal berkomunikasi dengan apiserver karena certificate signed by unknown authority (di log kubelet). Dan juga blok kubeadm init selamanya.

Setelah menghapus /run/kubernetes/ secara manual, semuanya kembali. Mungkin ada masalah sertifikat pembersihan saat menjalankan kubeadm reset ?

/area kubeadm

Saya menggunakan kubeadm 1.8 dan masalah ini masih terjadi.

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:~$

Saya secara manual memeriksa /var/run/kubernetes . Itu dibersihkan ketika saya menjalankan kubeadm reset . Tidak yakin apa masalah sebenarnya.

PERHATIAN: "Untuk mulai menggunakan cluster Anda, Anda harus menjalankan (sebagai pengguna biasa)"

[ root@master1 ~]# kubectl dapatkan node
Tidak dapat terhubung ke server: x509: sertifikat ditandatangani oleh otoritas yang tidak dikenal (mungkin karena "crypto/rsa: kesalahan verifikasi" saat mencoba memverifikasi sertifikat otoritas kandidat "kubernetes")

[ root@master1 ~]# su - pengguna_reguler

[ 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 dapatkan node
NAMA STATUS PERAN VERSI USIA
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp Tidak Siap4m v1.8.1

@jeffbr13 Terima kasih. Berhasil.

Harap perbarui dokumen dengan solusi ini

Jika Anda mereset kubeadm dan kemudian kubeadm init lagi, dan jika Anda pernah menjalankan yang berikut ini sebagai root, Anda perlu menjalankannya lagi (sebagai root) untuk mendapatkan konfigurasi baru:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Kemudian Anda masih dapat menjalankan sebagai root.

jika ditemukan bahwa jika Anda akan menjalankan "sudo kubeadm reset", Anda harus menghapus direktori .kube Anda untuk menghapus direktori yang di-cache.
Setelah itu bisa follow @petersonwsantos
oh, pastikan untuk mengatur KUBECONFIG ke apa pun yang Anda (kembali) beri nama file konfigurasi Anda misalnya $HOME/.kube/config

tank freind ints benar.

Konfigurasi sebagai baris berikut, _$kubectl get nodes_ berfungsi:

_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
export KUBECONFIG=/etc/kubernetes/kubelet.conf
ekspor KUBECONFIG=/home/ubuntu/.kube/config
kubectl dapatkan node

ini kemungkinan karena Anda memiliki pengaturan multi master dan telah menghasilkan /etc/kubernetes/pki/ca.* pada masing-masing master. Daripada menyalinnya dari master pertama ke yang lain.

Saya menemukan solusinya di dokumentasi kubernetes
saat mengikuti dokumentasi jangan lupa untuk membuat direktori .kube menggunakan perintah ini
mkdir -p $HOME/.kube

Karena saat Anda membutuhkan perintah ini, itu akan memindahkan direktori .kube
mv $HOME/.kube $HOME/.kube.bak

https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/

Untuk orang lain yang mungkin mengalami masalah ini, mungkin ingin mencoba dan memindahkan folder /root/.kube ke lokasi cadangan jika ada dan coba lagi. Sangat mungkin untuk menggunakan versi root yang di-cache yang tidak lagi valid, karena Anda akan menjalankan kubeadm sebagai sudo.

Masalah saya adalah saya memiliki sertifikat khusus yang saya buat selama panduan Memulai KubeEdge. Tidak main-main dengan ssl dan kubeedge membuatnya bekerja.

PERHATIAN: "Untuk mulai menggunakan cluster Anda, Anda harus menjalankan (sebagai pengguna biasa)"

[ root@master1 ~]# kubectl dapatkan node
Tidak dapat terhubung ke server: x509: sertifikat ditandatangani oleh otoritas yang tidak dikenal (mungkin karena "crypto/rsa: kesalahan verifikasi" saat mencoba memverifikasi sertifikat otoritas kandidat "kubernetes")

[ root@master1 ~]# su - pengguna_reguler

[ 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

Ini bekerja. Kecuali bahwa saya harus mengatur KUBECONFIG saya lagi karena itu diubah

ekspor KUBECONFIG=$HOME/.kube/config

[ regular_user@master1 ~]$ kubectl dapatkan node
NAMA STATUS PERAN VERSI USIA
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1

apakah Anda memiliki $KUBECONFIG menunjuk ke /etc/kubernetes/kubelet.conf ?

export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl get nodes

yang bekerja untuk saya, terima kasih banyak.

export KUBECONFIG=/etc/kubernetes/kubelet.conf
kubectl dapatkan node

adalah pekerjaan dari saya

PERHATIAN: "Untuk mulai menggunakan cluster Anda, Anda harus menjalankan (sebagai pengguna biasa)"

[ root@master1 ~]# kubectl dapatkan node
Tidak dapat terhubung ke server: x509: sertifikat ditandatangani oleh otoritas yang tidak dikenal (mungkin karena "crypto/rsa: kesalahan verifikasi" saat mencoba memverifikasi sertifikat otoritas kandidat "kubernetes")

[ root@master1 ~]# su - pengguna_reguler

[ 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 dapatkan node
NAMA STATUS PERAN VERSI USIA
master1.virti.corp NotReady master 6m v1.8.1
master2.virti.corp NotReady 4m v1.8.1

Ini berhasil!

Setelah kubeadm init Anda harus menghapus folder $HOME/.kube dan membuat yang baru:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Apakah halaman ini membantu?
0 / 5 - 0 peringkat