PERMINTAAN FITUR
kubeadm versi v1.12.5
Lingkungan :
uname -a
): Linux node1 4.4.0-141-generic # 167-Ubuntu SMP Rab 5 Des 10:40:15 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux3 cluster saya sekarang berusia 1 tahun. Karena beberapa sertifikat dikeluarkan dengan validitas 1 tahun, cluster berhenti berfungsi dengan benar. Saya telah meningkatkan kluster dari 1.10.12 menjadi 1.11.6 dan 1.12.5 sebelum sertifikat mencapai tanggal kedaluwarsa.
Saya mengalami beberapa masalah:
/var/lib/kubelet/pki/kubelet-client-current.pem
diputar dengan benar, tetapiclient-certificate
dan client-key
di /etc/kubernetes/kubelet.conf
masih menunjuk ke /var/lib/kubelet/pki/kubelet-client.*
client-certificate-data
dan client-key-data
dalam /etc/kubernetes/kubelet.conf
masih berisi sertifikat yang akan segera kedaluwarsa.client-certificate-data
dan client-key-data
secara manual pada semua node dan semua clustersudo kubeadm alpha phase kubeconfig kubelet
untuk membuat ulang file ini di Master dan semua Node!kubeadm alpha phase certs renew all
tidak memperbarui file KubeConfigsudo kubeadm alpha phase certs renew all
pada master yang memperbaharui semua sertifikat yang kadaluwarsa menjadi /etc/kubernetes/pki
yang baik-baik saja, TAPI/etc/kubernetes/admin.conf
/etc/kubernetes/controller-manager.conf
/etc/kubernetes/scheduler.conf
sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address=x.x.x.x
kubectl -n kube-system delete pod kube-apiserver-mater
yang tampaknya berfungsi, tetapi pada kenyataannya pod tidak pernah direstart - Saya harus berhenti dan memulai container dengan docker stop / start.kubeadm alpha phase kubeconfig
harus merestart pod statis setelah config ditulis atau memberitahu pengguna untuk melakukannya.salam Hormat
Andreas
@Tokopedia
tentu saja, tetapi harap dicatat bahwa fase bergabung adalah prioritas tinggi.
kedengarannya bagus! Terima kasih banyak.
Hai,
ada satu hal lagi tentang topik ini.
kubeadm alpha phase kubeconfig all
menampilkan pesan ini jika file conf ada saat menjalankan perintah:
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/admin.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Using existing up-to-date KubeConfig file: "/etc/kubernetes/scheduler.conf"
Itu tidak memeriksa apakah sertifikat kedaluwarsa, jadi menurut saya up-to-date
salah.
Untuk mendapatkan sertifikat yang diperbarui ke dalam file, file HARUS dihapus terlebih dahulu, daripada log yang terlihat seperti:
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
Dalam kasus saya, saya pikir saya baik-baik saja, tetapi beberapa hari kemudian pod statis tidak dapat berkomunikasi karena sertifikat yang sudah ketinggalan zaman.
Salam Hormat
Andreas
Ditugaskan ke @MalloZup
@MalloZup : GitHub tidak mengizinkan saya untuk menetapkan pengguna berikut: MalloZup.
Perhatikan bahwa hanya anggota kubernetes dan repo kolaborator yang dapat ditugaskan dan masalah / PR hanya dapat memiliki 10 penerima pada waktu yang sama.
Untuk informasi lebih lanjut, silakan lihat panduan kontributor
Menanggapi ini :
/menetapkan
Instruksi untuk berinteraksi dengan saya menggunakan komentar PR tersedia di sini . Jika Anda memiliki pertanyaan atau saran terkait dengan perilaku saya, harap ajukan masalah ke kubernetes / test-infra repository.
hai @adoerler thx untuk masalah. Mengenai info menyesatkan, saya telah mengirimkan PR https://github.com/kubernetes/kubernetes/pull/73798.
Saya akan melihat masalah lainnya setelah saya punya waktu. Terima kasih atas waktu dan ketepatan masalah ini
@adoerler saya telah mengirim pr DOC untuk saran Anda. Jangan ragu untuk melihat-lihat tia: rocket:
(https://github.com/kubernetes/website/pull/12579)
Hai @ooupt ,
terima kasih untuk PR!
Saya kehilangan satu kalimat tentang file kubeconfig, karena certs renew
hanya salah satu bagian dari permainan.
Sesuatu seperti:
Setelah sertifikat diperbarui, jangan lupa untuk membuat ulang file KubeConfig menggunakan
kubeadm alpha phase kubeconfig ...
Terima kasih. Saya tidak menambahkan dokumen karena saya berpikir bahwa sebenarnya kami juga dapat memperbarui file kubeconfig. Pod lain yang direstart dapat kami delegasikan ke pengguna dan menulis dokumen minimal. @fabriziopandini @lubomir @ereslibre Saya melewatkan sesuatu dalam implementasi ini? Tia
@MalloZup Saya tidak memiliki pengetahuan yang mendalam tentang cara kerja pembaruan sertifikat.
Secara pribadi, saya ingin menjelaskan sedikit tentang keseluruhan sejarah sebelum mengambil tindakan - termasuk apa yang diusulkan di atas -:
kubeadm alpha phase certs renew
kubeadm upgrade
tetapi saya menyerahkan kata terakhir kepada orang-orang yang lebih terampil daripada saya di bidang ini
saya pikir kita harus menyediakan waktu pada pertemuan untuk membahas seperti apa kebijakan perpanjangan sertifikat yang kami rekomendasikan. halaman tentang manajemen sertifikat mungkin memerlukan beberapa detail tambahan:
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs
dan kita perlu menulis panduan kecil, untuk cluster bidang kontrol tunggal sebagai permulaan setidaknya.
apa yang telah dilakukan pengguna adalah mencari tahu sendiri:
https://github.com/kubernetes/kubeadm/issues/581#issuecomment -421477139
^ komentar ini dan di atas berisi panduan buatan pengguna.
ini tandanya kita perlu menambahkan panduan resmi.
cc @timothysc @liztio
/ tetapkan @ereslibre
Cluster kami dengan beberapa ratus pengguna terhenti saat ini. Bisakah saya mendapatkan panduan cepat tentang apa yang harus dilakukan dengan sertifikat kadaluarsa?
@ dim
apa yang telah dilakukan pengguna adalah mencari tahu sendiri:
# 581 (komentar)
^ komentar ini dan di atas berisi panduan buatan pengguna.
ini adalah satu-satunya panduan yang kami miliki ATM.
[root<strong i="5">@controller0</strong> ~]# kubeadm alpha phase certs apiserver --apiserver-advertise-address 1.2.3.4
Error: unknown flag: --apiserver-advertise-address
Usage:
Flags:
-h, --help help for phase
Global Flags:
--log-file string If non-empty, use this log file
--rootfs string [EXPERIMENTAL] The path to the 'real' host root filesystem.
--skip-headers If true, avoid header prefixes in the log messages
-v, --v Level log level for V logs
error: unknown flag: --apiserver-advertise-address
[root<strong i="6">@controller0</strong> ~]# kubeadm alpha phase certs apiserver
This command is not meant to be run on its own. See list of available subcommands.
dalam 1.13 fase init telah lulus ke perintah init induk:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd -phase-certs
di 1,12 bendera harus ada di sana:
https://v1-12.docs.kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd -phase-certs
1.11 akan segera keluar dari dukungan.
menghapus siklus hidup / label aktif.
pindah ke 1,15.
kemungkinan ide pembaruan dokumen di sini:
https://github.com/kubernetes/kubeadm/issues/1361#issuecomment -463192631
@bayu_joo
Pertanyaan: di 1.14 dengan master HA, apakah cukup mengikuti https://github.com/kubernetes/kubeadm/issues/581#issuecomment -421477139 pada satu master, atau kita harus bergabung kembali dengan master sekunder lagi untuk ambil kembali sertifikatnya?
bergabung kembali dengan node bidang kontrol sekunder, sepertinya merupakan pilihan yang cepat dan dapat dijalankan di 1,14.
kami belum memiliki dokumen apa pun dalam hal rotasi sertifikasi HA.
(belum lagi kami belum menambahkan langkah-langkah yang tepat seperti yang dilakukan https://github.com/kubernetes/kubeadm/issues/581#issuecomment-421477139).
Bukankah --experimental-upload-certs memberikan dasar untuk solusi yang lebih mudah untuk rotasi sertifikat di HA?
salah satu cara untuk melakukan rotasi sertifikat HA adalah:
kubeadm init phase upload-certs --experimental-upload-certs
simpan kunci sertifikat.
kubeadm token create --print-join-command
simpan perintah join dengan token.
bergabung kembali dengan node bidang kontrol lainnya menggunakan token dan kunci sertifikat, satu per satu menggunakan --certs-key .... --experimental-control-plane-join
untuk para pekerja: tiriskan, gabung kembali menggunakan token baru, uncordon, satu per satu.
secara opsional menghapus token yang dihasilkan.
@bayu_joo
Dalam 3 kelompok master, saat kita mengubah sertifikat pada master "utama", etcd akan berhenti bekerja, karena sertifikat diubah (dan kuorum harus minimal 51%)? Jika demikian, mungkin kita harus menjaga 2 master sekunder dan baru kemudian mengubah sertifikat? Apakah "cordon master" mungkin?
Saya bukan ahli di sini, tetapi menurut saya salinan sertifikat otomatis tidak harus masuk ke dalam gambar ini
Sertifikat penyalinan otomatis menangani CA, front-proxy-CA, etcd-CA (dengan 10 tahun TTL) dan kunci SA (tanpa TTL)
Perintah perpanjang sertifikat menyentuh semua sertifikat lainnya (dengan 1 tahun TTL), yang berbeda antar master.
AFAIK, saat ini tidak ada yang menangani pembaruan sertifikat untuk file kubeconfig
ok, saya tidak mempertimbangkan apa yang sebenarnya dilakukan "salinan sertifikat" di sini.
kita perlu menulis dokumen bersertifikat yang tepat, dengan cara apa pun.
/menetapkan
/ siklus hidup aktif
Saya mulai menangani masalah ini.
Ada poin berbeda untuk dibahas (_diupdate 14 Mei 2019_)
Dan saya akan menangani semuanya dalam PR terpisah
@ neol123 @ neol123
langkah-langkah yang Anda sebutkan juga untuk merotasi sertifikat CA? Bisakah ini didokumentasikan juga? Bagaimana dengan merotasi kunci privat termasuk yang untuk CA?
Rotasi @ tushar00jain sertifikat CA terlacak di masalah lain https://github.com/kubernetes/kubeadm/issues/1350
Masalah ini fokus hanya pada sertifikat yang ditandatangani
@fabriziopandini saya melihat penutupan tiket hari ini karena Anda dapat mengirim PR untuk bagian pembaruan. haruskah tiket ditutup?
Bahkan dengan Rotasi Sertifikat diaktifkan, kubelet.conf menunjuk ke sertifikat yang kedaluwarsa (sudah dilacak oleh # 1317)
ya, ini dilacak dalam masalah terpisah, mungkin memerlukan diskusi / dokumen tentang solusi apa yang harus kami sediakan.
Rotasi Sertifikat tidak memperbarui sertifikat apiserver / etcd / front-proxy-client (diperbaiki oleh kubernetes / kubernetes # 76862)
Perintah kubeadm alpha phase certs memperbaharui semua tidak memperbarui file KubeConfig (diperbaiki oleh kubernetes / kubernetes # 77180)
Dokumentasi tentang pembaruan sertifikat (dengan lebih detail tentang di mana perintah harus dijalankan, kapan, kubeconfig, HA)
3 di atas harus dilakukan.
/Menutup
Sesuai komentar di atas, sebagian besar pekerjaan sudah selesai; bit yang hilang dilacak dalam masalah terpisah / khusus
@fabriziopandini : Menutup masalah ini.
Menanggapi ini :
/Menutup
Sesuai komentar di atas, sebagian besar pekerjaan sudah selesai; bit yang hilang dilacak dalam masalah terpisah / khusus
Instruksi untuk berinteraksi dengan saya menggunakan komentar PR tersedia di sini . Jika Anda memiliki pertanyaan atau saran terkait dengan perilaku saya, harap ajukan masalah ke kubernetes / test-infra repository.
Bisakah seseorang menjelaskan kepada saya bagaimana bagian "Bahkan dengan Rotasi Sertifikat diaktifkan, kubelet.conf menunjuk ke sertifikat yang kedaluwarsa" ditangani? Satu-satunya masalah terkait yang menyebutkan ini secara eksplisit ditutup untuk masalah lain yang ditutup dengan "Saya tidak yakin apakah ini masalah jadi buka tiket baru jika ada".
Saya di 1.16 tidak melihat ada pembaruan yang terjadi pada kubelet.conf
dengan sudo kubeadm alpha certs renew all
. Apa yang hilang? @bayu_joo
ringkasan singkat dari diskusi yang sangat panjang.
Poin kedua ini sudah mulai hari ini berfungsi untuk semua node kecuali node tempat Anda menjalankan kubeadm init; https://github.com/kubernetes/kubernetes/pull/84118 akan memperbaikinya
@fabriziopandini Terima kasih untuk ini, masuk akal.
Bagi orang lain yang menghadapi masalah sertifikat di kubelte.conf sudah kedaluwarsa antara sekarang dan ketika hal di atas diperbaiki, saya menemukan artikel ini berguna:
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#check -certificate-expiration
Pada node yang dibuat dengan kubeadm init, sebelum kubeadm versi 1.17, terdapat bug di mana Anda harus memodifikasi konten kubelet.conf secara manual. Setelah kubeadm init selesai, Anda harus memperbarui kubelet.conf agar mengarah ke sertifikat klien kubelet yang telah dirotasi, dengan mengganti client-certificate-data dan client-key-data dengan:
client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
client-key: /var/lib/kubelet/pki/kubelet-client-current.pem
@AndrewSav Terima kasih untuk ini. Saya telah menggunakan operator promethes untuk memantau cluster. Saya baru-baru ini menerima peringatan "Sertifikat API Kubernetes akan kedaluwarsa dalam waktu kurang dari 7 hari", yang menurut saya terkait dengan masalah ini. Saya telah memperbarui konten kubelet.conf di node master. Tapi saya masih waspada. Apakah Anda punya saran? Tks.
@tannh jika Anda menginstal cluster dengan kubeadm, gunakan kubeadm untuk memeriksa percobaan sertifikat. Jika tidak, masalah Anda mungkin tidak terkait.
Pada node yang dibuat dengan kubeadm init, sebelum kubeadm versi 1.17, terdapat bug di mana Anda harus memodifikasi konten kubelet.conf secara manual. Setelah kubeadm init selesai, Anda harus memperbarui kubelet.conf agar mengarah ke sertifikat klien kubelet yang telah dirotasi, dengan mengganti client-certificate-data dan client-key-data dengan:
ini juga akan ada dalam catatan rilis untuk 1,17.
@adoerler Saya masih menjalankan versi lama kubeadm, bagaimana cara memperbarui kubelet.conf, admin.con, ... dll, setelah perpanjangan sertifikat?
Saya menjalankan "kubeadm alpha certs renew all", yang menghasilkan sertifikat baru, lalu saya perlu mengedit semua .conf di / etc / kubernetes, bagaimana caranya? di mana tepatnya mereka harus menunjuk?
dan dalam kasus multi master node, haruskah saya menjalankan perintah di semua master?
Halo @SuleimanWA ,
Saya tidak dapat memberi tahu Anda apa yang harus dilakukan pada multi master env, saya hanya memiliki satu master dalam pengaturan saya.
Inilah yang telah saya lakukan:
Pertama-tama pastikan untuk memindahkan file conf yang ada, karena file yang sudah ada tidak akan ditimpa!
mv /etc/kubernetes/admin.conf /backup
mv /etc/kubernetes/kubelet.conf /backup
mv /etc/kubernetes/controller-manager.conf /backup
mv /etc/kubernetes/scheduler.conf /backup
lalu perbarui file ini:
user<strong i="13">@master</strong>:~$ sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address=<INSERT-YOUR-APISERVER-IP-HERE>
I0124 21:56:14.253641 15040 version.go:236] remote version is much newer: v1.13.2; falling back to: stable-1.12
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
Untuk menerapkan sertifikat baru di pod sistem statis, cara termudah bagi saya adalah dengan mem-boot ulang server master.
Jangan lupa salin client-certificate-data
dan client-key-data
dari /etc/kubernetes/admin.conf
ke .kube/config
.
Semoga ini membantu
Andreas
Ada ide bagaimana menjalankan perintah ini di 1.14.10? Yang saya dapatkan hanyalah:
kubeadm alpha phase kubeconfig all --apiserver-advertise-address=192.168.102.170
Error: unknown flag: --apiserver-advertise-address
Kemudian dokumen mengatakan:
kubeadm alpha phase kubeconfig all
dan saya mendapatkan:
This command is not meant to be run on its own. See list of available subcommands.
Terima kasih
Hai @provggoryabdo ,
apa keluaran kubeadm version
?
BR Andreas
@provgregoryabdo perintah phase
dipindahkan dari alfa dan ke init di versi yang lebih baru sehingga Anda dapat menggunakan sesuatu seperti
kubeadm init phase kubeconfig all --apiserver-advertise-address=<your_address>
@adoerler terima kasih atas bantuannya!
Komentar yang paling membantu
/menetapkan
/ siklus hidup aktif
Saya mulai menangani masalah ini.
Ada poin berbeda untuk dibahas (_diupdate 14 Mei 2019_)
Dan saya akan menangani semuanya dalam PR terpisah