Bagikan melalui


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.

  1. 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.

  2. Kumpulkan informasi yang Anda perlukan untuk menjalankan perintah upgrade. Perintah upgrade 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).
  3. 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
    
  4. 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

  1. 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.
  2. 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.
  3. Minta operator Azure Stack Hub Anda untuk menambahkan versi Gambar Dasar AKS yang Anda butuhkan di Azure Stack Hub Marketplace yang ingin Anda gunakan.
  4. 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:

  1. 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 dengan aks-engine. Di Mesin AKS versi 0.75.3 ke atas, gunakan aks-engine-azurestack.
  2. Temukan bagian untuk masterProfile dan agentPoolProfiles, di dalam bagian tersebut mengubah nilai distro menjadi aks-ubuntu-20.04.
  3. Simpan file api-model.json dan gunakan file api-model.json dalam perintah aks-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-managerpenyedia 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:

  1. Menginstal driver Azure Disk CSI
  2. Menghapus kelas penyimpanan dalam pohon yang tidak digunakan lagi
  3. 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 nilai Retain (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 menambahkan csi 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.

Langkah berikutnya