Meningkatkan kluster Kubernetes menggunakan mesin AKS di Azure Stack Hub
Mesin AKS memungkinkan Anda untuk meningkatkan kluster Kubernetes yang awalnya disebarkan menggunakan alat di Azure Stack Hub. Anda dapat mempertahankan kluster menggunakan mesin AKS. Tugas pemeliharaan Anda mirip dengan sistem IaaS apa pun. Anda harus mengetahui ketersediaan pembaruan baru dan menggunakan mesin AKS untuk menerapkannya.
Mutakhirkan kluster
Perintah peningkatan memperbarui versi Kubernetes dan gambar OS dasar. Setiap kali Anda menjalankan perintah peningkatan, untuk setiap simpul kluster, mesin AKS membuat VM baru menggunakan gambar dasar AKS yang terkait dengan versi mesin aks yang digunakan.
Untuk AKS Engine versi 0.73.0 ke bawah, Anda dapat menggunakan aks-engine upgrade
perintah untuk mempertahankan mata uang setiap simpul master dan agen di kluster Anda.
Untuk AKS Engine versi 0.75.3 ke atas, Anda dapat menggunakan aks-engine-azurestack upgrade
perintah untuk mempertahankan mata uang setiap simpul master dan agen di kluster Anda.
Microsoft tidak mengelola kluster Anda. Tetapi Microsoft menyediakan alat dan gambar mesin virtual yang dapat Anda gunakan untuk mengelola kluster Anda.
Untuk kluster yang disebarkan, peningkatan mencakup:
- Kubernetes
- Penyedi Kubernetes Azure Stack Hub
- OS Dasar
Saat meningkatkan kluster produksi, pertimbangkan:
- Apakah Anda menggunakan spesifikasi kluster (
apimodel.json
) dan grup sumber daya yang benar untuk kluster target? - Apakah Anda menggunakan mesin yang dapat diandalkan untuk mesin klien untuk menjalankan mesin AKS dan dari mana Anda melakukan operasi peningkatan?
- Pastikan Anda memiliki kluster cadangan dan itu beroperasi.
- Jika memungkinkan, jalankan perintah dari VM dalam lingkungan Azure Stack Hub untuk mengurangi hop jaringan dan potensi kegagalan konektivitas.
- Pastikan langganan Anda memiliki cukup ruang untuk seluruh proses. Proses ini mengalokasikan VM baru selama proses berlangsung.
- Tidak ada pembaruan sistem atau tugas terjadwal yang direncanakan.
- Siapkan pemutakhiran bertahap pada kluster yang dikonfigurasi persis sebagai kluster produksi dan uji pemutakhiran di sana sebelum melakukannya di kluster produksi Anda
Langkah-langkah untuk meningkatkan ke versi Kubernetes yang lebih baru
Catatan
Gambar dasar AKS juga ditingkatkan jika Anda menggunakan versi mesin aks yang lebih baru dan gambar tersedia di marketplace.
Instruksi berikut menggunakan langkah-langkah minimum untuk melakukan peningkatan. Jika Anda ingin lebih detail, lihat artikel Meningkatkan Kluster Kubernetes.
Anda harus terlebih dahulu menentukan versi yang dapat Anda targetkan untuk peningkatan. Versi ini bergantung pada versi yang Anda miliki saat ini dan kemudian menggunakan nilai versi itu untuk melakukan peningkatan. Versi Kubernetes yang didukung oleh AKS Engine anda dapat dicantumkan dengan menjalankan perintah berikut:
Catatan
Untuk AKSe versi 0.75.3 ke atas, perintah untuk mendapatkan versi mesin AKS adalah
aks-engine-azurestack get-versions
.aks-engine get-versions --azure-env AzureStackCloud
Untuk pemetaan lengkap mesin AKS, gambar dasar AKS, dan versi Kubernetes, lihat Versi Mesin AKS yang didukung.
Kumpulkan informasi yang Anda perlukan untuk menjalankan perintah
upgrade
. Perintahupgrade
menggunakan parameter berikut:Parameter Contoh Deskripsi azure-env AzureStackCloud Untuk menunjukkan kepada mesin AKS bahwa platform target Anda adalah penggunaan Azure Stack Hub AzureStackCloud
.lokasi Lokal Nama wilayah untuk Azure Stack Hub Anda. Untuk ASDK, wilayah di-set ke local
.grup sumber daya kube-rg Masukkan nama grup sumber daya baru atau pilih grup sumber daya yang ada. Nama sumber daya harus berupa alfanumerik dan huruf kecil. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Masukkan ID Langganan Anda. Untuk informasi selengkapnya, lihat Berlangganan ke penawaran api-model ./kubernetes-azurestack.json Jalur ke file konfigurasi kluster, atau model API. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Masukkan GUID perwakilan layanan. ID Klien diidentifikasi sebagai ID Aplikasi saat administrator Azure Stack Hub Anda membuat perwakilan layanan. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Masukkan rahasia perwakilan layanan. Ini adalah rahasia klien yang Anda siapkan saat membuat layanan Anda. identity-system adfs Opsional. Tentukan solusi manajemen identitas Anda jika Anda menggunakan Active Directory Federated Services (AD FS). Dengan menerapkan nilai Anda, jalankan perintah berikut:
Catatan
Untuk AKSe versi 0.75.3 ke atas, perintah untuk meningkatkan mesin AKS adalah
aks-engine-azurestack upgrade
.aks-engine upgrade \ --azure-env AzureStackCloud \ --location <for an ASDK is local> \ --resource-group kube-rg \ --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --api-model kube-rg/apimodel.json \ --upgrade-version 1.18.15 \ --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --identity-system adfs # required if using AD FS
Jika karena alasan apa pun operasi peningkatan mengalami kegagalan, Anda dapat menjalankan
upgrade
ulang perintah setelah mengatasi masalah tersebut. Mesin AKS akan melanjutkan operasi di mana gagal pada waktu sebelumnya.
Langkah-langkah untuk hanya meningkatkan gambar OS
- Tinjau tabel versi kubernetes yang didukung dan tentukan apakah Anda memiliki versi aks-engine dan AKS base Image yang Anda rencanakan untuk peningkatan. Jika Anda menggunakan Mesin AKS versi 0.73.0 atau di bawahnya, untuk melihat versi aks-engine run:
aks-engine version
. Jika Anda menggunakan Mesin AKS versi 0.75.3 atau lebih tinggi, untuk melihat versi aks-engine run:aks-engine-azurestack version
. - Tingkatkan mesin AKS Anda sesuai dengan itu, di mesin tempat Anda telah memasang mesin aks:
./get-akse.sh --version vx.xx.x
mengganti x.xx.x dengan versi yang Anda targetkan. - Minta operator Azure Stack Hub Anda untuk menambahkan versi Gambar Dasar AKS yang Anda butuhkan di Azure Stack Hub Marketplace yang ingin Anda gunakan.
- Jalankan perintah
aks-engine upgrade
menggunakan versi Kubernetes yang Anda gunakan, tetapi tambahkan--force
. Anda dapat melihat contoh di Memaksa peningkatan.
Langkah-langkah untuk memperbarui kluster ke versi OS Ubuntu 20.04
Dengan mesin AKS versi 0.75.3 ke atas, Anda dapat meningkatkan VM kluster Anda dari Ubuntu 18.04 ke 20.04. Ikuti langkah-langkah ini:
- Temukan dan edit file
api-model.json
yang dihasilkan selama penyebaran. Ini harus menjadi file yang sama yang digunakan untuk setiap peningkatan atau operasi skala denganaks-engine
. Di Mesin AKS versi 0.75.3 ke atas, gunakanaks-engine-azurestack
. - Temukan bagian untuk
masterProfile
danagentPoolProfiles
, di dalam bagian tersebut mengubah nilaidistro
menjadiaks-ubuntu-20.04
. - Simpan file
api-model.json
dan gunakan fileapi-model.json
dalam perintahaks-engin upgrade
Anda seperti yang Anda lakukan di Langkah-Langkah untuk meningkatkan ke versi Kubernetes yang lebih baru
Langkah-langkah untuk meningkatkan kluster jika Anda menggunakan volume penyimpanan dengan AKS Engine v0.70.0 dan yang lebih baru
Penyedia Cloud untuk proyek Azure (juga dikenal sebagai cloud-controller-manager
penyedia cloud di luar pohon atau penyedia cloud eksternal) mengimplementasikan antarmuka penyedia cloud Kubernetes untuk cloud Azure. Implementasi di luar pohon adalah pengganti implementasi in-tree yang tidak digunakan lagi.
Di Azure Stack Hub, mulai dari Kubernetes v1.21, kluster berbasis Mesin AKS akan secara eksklusif menggunakan cloud-controller-manager
. Oleh karena itu, untuk menyebarkan kluster Kubernetes v1.21+, perlu diatur orchestratorProfile.kubernetesConfig.useCloudControllerManager
ke true
dalam Model API (contoh). Proses peningkatan Mesin AKS akan secara otomatis memperbarui useCloudControllerManager
bendera.
Catatan
Pertimbangan peningkatan: proses peningkatan kluster Kubernetes dari v1.20 (atau versi yang lebih rendah) ke v1.21 (atau versi yang lebih besar) akan menyebabkan waktu henti pada beban kerja yang mengandalkan kubernetes.io/azure-disk
penyedia volume dalam pohon. Sebelum meningkatkan ke Kubernetes v1.21+, sangat disarankan untuk melakukan pencadangan penuh data aplikasi dan memvalidasi di lingkungan pra-produksi bahwa sumber daya penyimpanan kluster (PV dan PVC) dapat dimigrasikan ke penyedia volume baru. Pelajari cara bermigrasi ke driver Azure Disk CSI di sini.
Penyedia volume
Penyedia volume dalam pohon hanya kompatibel dengan penyedia cloud in-tree. Oleh karena itu, kluster v1.21+ harus menyertakan Driver Antarmuka Penyimpanan Kontainer (CSI) jika beban kerja pengguna mengandalkan penyimpanan persisten. Beberapa solusi yang tersedia di Azure Stack Hub tercantum di sini.
Mesin AKS tidak akan mengaktifkan driver CSI apa pun secara default di Azure Stack Hub. Untuk beban kerja yang memerlukan driver CSI, dimungkinkan untuk secara eksplisit mengaktifkan azuredisk-csi-driver
addon (kluster khusus Linux) atau menggunakan Helm
untuk menginstal azuredisk-csi-driver
bagan (kluster Linux dan/atau Windows).
Memigrasikan penyimpanan persisten ke driver Azure Disk CSI
Proses peningkatan kluster berbasis Mesin AKS dari v1.20 (atau versi yang lebih rendah) ke v1.21 (atau versi yang lebih besar) akan menyebabkan waktu henti pada beban kerja yang mengandalkan kubernetes.io/azure-disk
penyedia volume dalam pohon karena penyedia ini bukan bagian dari Penyedia Cloud untuk Azure.
Jika data yang bertahan di disk Azure yang mendasarinya harus dipertahankan, maka langkah-langkah tambahan berikut diperlukan setelah proses peningkatan kluster selesai:
- Menginstal driver Azure Disk CSI
- Menghapus kelas penyimpanan dalam pohon yang tidak digunakan lagi
- Membuat ulang volume dan klaim persisten
1. Instal driver Azure Disk CSI secara manual
Skrip berikut menggunakan Helm
untuk menginstal Driver Azure Disk CSI:
DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
--namespace kube-system \
--set cloud=AzureStackCloud \
--set controller.runOnMaster=true \
--version ${DRIVER_VERSION}
2. Ganti kelas penyimpanan
kube-addon-manager
akan secara otomatis membuat kelas penyimpanan driver Azure Disk CSI (disk.csi.azure.com
) setelah kelas penyimpanan di pohon (kubernetes.io/azure-disk
) dihapus secara manual:
IN_TREE_SC="default managed-premium managed-standard"
# Delete deprecated "kubernetes.io/azure-disk" storage classes
kubectl delete storageclasses ${IN_TREE_SC}
# Wait for addon manager to create the "disk.csi.azure.com" storage class resources
kubectl get --watch storageclasses
3. Buat ulang volume persisten
Setelah Driver Azure Disk CSI diinstal dan kelas penyimpanan diganti, langkah selanjutnya adalah membuat ulang volume persisten (PV) dan klaim volume persisten (PVC) menggunakan driver Azure Disk CSI (atau solusi CSI alternatif).
Ini adalah proses multi-langkah yang dapat berbeda tergantung pada bagaimana sumber daya ini awalnya disebarkan. Langkah-langkah tingkat tinggi adalah:
- Hapus penyebaran atau statefulset yang mereferensikan pasangan PV + PVC untuk dimigrasikan (definisi sumber daya cadangan jika perlu).
- Pastikan properti PV
persistentVolumeReclaimPolicy
diatur ke nilaiRetain
(contoh). - Hapus pasangan PV + PVC untuk bermigrasi (definisi sumber daya cadangan jika perlu).
- Untuk bermigrasi, perbarui definisi sumber daya PV dengan menghapus
azureDisk
objek dan menambahkancsi
objek dengan referensi ke AzureDisk asli (contoh). - Buat ulang, dalam urutan berikut, sumber daya PV, sumber daya PVC (jika perlu), dan akhirnya penyebaran atau statefulset.
Skrip migrasi berikut disediakan sebagai templat.
Setelah menjalankan skrip migrasi, jika pod terjebak dengan kesalahan "Tidak dapat melampirkan atau memasang volume", pastikan Driver Azure Disk CSI diinstal dan kelas penyimpanan dibuat ulang.
Memaksa peningkatan
Mungkin ada kondisi di mana Anda mungkin ingin memaksa peningkatan kluster Anda. Misalnya, pada hari pertama Anda menyebarkan kluster di lingkungan yang terputus menggunakan versi Kubernetes terbaru. Keesokan harinya Ubuntu merilis patch ke kerentanan yang Microsoft menghasilkan Gambar Dasar AKS baru. Anda dapat menerapkan gambar baru dengan memaksa peningkatan menggunakan versi Kubernetes yang sama dengan yang sudah Anda terapkan.
Catatan
Untuk AKSe versi 0.75.3 ke atas, perintah untuk meningkatkan mesin AKS adalah aks-engine-azurestack upgrade
.
aks-engine upgrade \
--azure-env AzureStackCloud
--location <for an ASDK is local> \
--resource-group kube-rg \
--subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--api-model kube-rg/apimodel.json \
--upgrade-version 1.18.15 \
--client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--force
Untuk mengetahui petunjuknya, lihat Memaksa peningkatan.