Saya mengalami masalah saat menggunakan mojaloop .kubernetes merespons dengan log kesalahan seperti
Saya telah memeriksa versi Kubernetes saya dan 1.16 adalah versinya jadi bagaimana saya bisa memperbaiki masalah semacam itu dengan versi API. Dari penyelidikan, saya menemukan bahwa Kubernetes tidak mendukung apps / v1beta2, apps / v1beta1 jadi bagaimana saya dapat membuat Kubernetes untuk menggunakan versi yang saat ini tidak ditinggalkan atau versi yang didukung Saya baru ke Kubernetes dan siapa pun yang dapat mendukung saya, saya senang
Kesalahan: validasi gagal: [tidak dapat mengenali "": tidak ada kecocokan untuk jenis "Penempatan" dalam versi "apps / v1beta2", tidak dapat mengenali "": tidak ada kecocokan untuk jenis "Penempatan" dalam versi "ekstensi / v1beta1", tidak dapat mengenali "": tidak ada kecocokan untuk jenis "StatefulSet" dalam versi "apps / v1beta2", tidak dapat mengenali "": tidak ada kecocokan untuk jenis "StatefulSet" dalam versi "apps / v1beta1"]
sumber
Jawaban:
Di Kubernetes 1.16 beberapa
api
s telah diubah.Anda dapat memeriksa apis mana yang mendukung objek Kubernetes saat ini
Ini berarti bahwa hanya apiVersion dengan
apps
benar untuk Penyebaran (extensions
tidak mendukungDeployment
). Situasi yang sama dengan StatefulSet.Anda hanya perlu mengubah Deployment dan StatefuSet apiVersion menjadi
apiVersion: apps/v1
.Jika ini tidak membantu, silakan tambahkan YAML Anda ke pertanyaan.
EDIT Karena masalah disebabkan oleh templat HELM termasuk apiVersions lama di Deployment yang tidak didukung di versi 1.16, ada 2 solusi yang mungkin:
1.
git clone
seluruh repo dan mengganti apiVersion untukapps/v1
semua template / deployment.yaml menggunakan script2. Gunakan versi lama dari Kubernetes (1,15) ketika validator menerima
extensions
sebagaiapiVersion
untukDeployent
danStatefulSet
.sumber
extensions/v1beta1
. Sebagai salah satu solusi yang mungkin adalah untukgit clone
repo keseluruhan dan mengganti apiVersion keapps/v1
dalam semua template / deployment.yam skrip usincfind . -name 'deployment.yaml' | xargs -n 1 perl -pi -e 's/(apps\/v1beta2)|(extensions\/v1beta1)/apps\/v1/g'.
Solusi kedua mungkin hanya menggunakan versi Kubernetes lama (1,15) ketika validator menerima ekstensi sebagai apiVersion untuk Deployent dan StatefulSet.Minikube
atauKubeadm
?Anda dapat mengubah secara manual sebagai alternatif. Ambil grafik helm:
Akses folder grafik:
Ubah versi API:
Tambahkan
spec.selector.matchLabels
:Akhirnya instal bagan Anda yang diubah:
Nikmati!
sumber
Ini mengganggu saya karena saya menguji banyak paket helm jadi saya menulis skrip cepat - yang dapat dimodifikasi untuk menyortir alur kerja Anda mungkin lihat di bawah
Alur kerja baru Pertama-tama ambil bagan sebagai tgz ke direktori kerja Anda
kemudian di tempat kerja Anda langsung jalankan script bash di bawah ini - yang saya beri nama helmk
Isi helm - perlu mengedit clustername kubeconfig Anda agar berfungsi
Ini adalah hack yang sedikit berbahaya karena saya secara manual beralih ke konteks namespace baru yang Anda inginkan lalu kembali lagi sehingga hanya untuk digunakan untuk pengguna tunggal atau benar-benar berkomentar.
Anda akan mendapat peringatan tentang menggunakan fasilitas konversi kubectl seperti ini
Jika Anda perlu mengedit YAML untuk menyesuaikan - cukup ganti salah satu / dev / stdin ke file perantara tetapi mungkin lebih baik untuk mendapatkannya menggunakan "buat" dengan save-config seperti yang saya miliki dan kemudian cukup "terapkan" perubahan Anda yang berarti bahwa mereka akan direkam dalam kubernet juga. Semoga berhasil
sumber
untuk membuatnya lebih sederhana, Anda tidak memaksa instalasi saat ini untuk menggunakan versi API yang sudah ketinggalan zaman, tetapi Anda cukup memperbaiki versi dalam file konfigurasi Anda jika Anda ingin memeriksa versi yang didukung oleh kubus saat ini, jalankan:
root @ ubn64: ~ # kubectl api-versi | grep -i aplikasi
apps / v1
root @ ubn64: ~ #
sumber