Menyebarkan kluster Kubernetes dengan mesin AKS di Azure Stack Hub

Anda dapat menyebarkan kluster Kubernetes di Azure Stack Hub dari VM klien yang menjalankan mesin AKS. Dalam artikel ini, kita melihat penulisan spesifikasi kluster, menyebarkan kluster dengan file apimodel.json , dan memeriksa kluster Anda dengan menyebarkan MySQL dengan Helm.

Menentukan spesifikasi kluster

Anda dapat menentukan spesifikasi kluster dalam file dokumen menggunakan format JSON yang disebut model API. Mesin AKS menggunakan spesifikasi kluster dalam model API untuk membuat kluster Anda.

Anda dapat menemukan contoh model API untuk OS dan nomor versi mesin AKS Anda untuk rilis terbaru di mesin AKS dan pemetaan gambar yang sesuai.

  1. Temukan nomor versi mesin AKS Anda, misalnya, v.0.63.0, dalam tabel.
  2. Dalam tabel sampel Model API, pilih dan buka tautan untuk OS Anda.
  3. Pilih Mentah. Anda dapat menggunakan URL dalam petunjuk berikut.

URL ke model API mungkin terlihat seperti:

https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json

Untuk masing-masing sampel berikut, ganti <URL for the API Model> dengan URL.

Memperbarui model API

Bagian ini mempertimbangkan untuk membuat model API untuk kluster Anda.

  1. Mulailah dengan menggunakan file Azure Stack Hub API Model untuk Linux atau Windows. Dari mesin, Anda memasang mesin AKS, jalankan:

    curl -o kubernetes-azurestack.json <URL for the API Model>
    

    Catatan

    Jika Anda terputus, Anda dapat mengunduh file dan menyalinnya secara manual ke mesin yang terputus di mana Anda berencana untuk mengeditnya. Anda dapat menyalin file ke mesin Linux menggunakan alat seperti PuTTY atau WinSCP.

  2. Untuk membuka model API dalam editor, Anda dapat menggunakan nano:

    nano ./kubernetes-azurestack.json
    

    Catatan

    Jika Anda tidak memasang nano, Anda dapat memasang nano di Ubuntu: sudo apt-get install nano.

  3. Dalam file kubernetes-azurestack.json , temukan orchestratorRelease dan orchestratorVersion. Pilih salah satu versi Kubernetes yang didukung; Anda dapat menemukan tabel versi di catatan rilis. Tentukan orchestratorRelease sebagai x.xx dan orchestratorVersion sebagai x.xx.x. Untuk daftar versi saat ini, lihat Versi mesin AKS yang didukung

  4. Temukan customCloudProfile dan berikan URL ke portal penyewa. Contohnya:https://portal.local.azurestack.external

  5. Tambahkan "identitySystem":"adfs" jika Anda menggunakan Active Directory Federation Services. Contohnya,

        "customCloudProfile": {
            "portalURL": "https://portal.local.azurestack.external",
            "identitySystem": "adfs"
        },
    

    Catatan

    Jika Anda menggunakan ID Microsoft Entra untuk sistem identitas, Anda tidak perlu menambahkan bidang identitySystem.

  6. Di masterProfile, set bidang berikut:

    Bidang Deskripsi
    dnsPrefix Masukkan untai unik yang akan berfungsi untuk mengidentifikasi nama host mesin virtual. Misalnya, nama berdasarkan nama grup sumber daya.
    hitung Masukkan jumlah master yang Anda inginkan untuk penyebaran Anda. Minimum untuk penyebaran HA adalah 3, tetapi 1 diizinkan untuk penyebaran non-HA.
    vmSize Masukkan ukuran yang didukung oleh Azure Stack Hub, misalnya Standard_D2_v2.
    distro Masukkan aks-ubuntu-18.04 atau aks-ubuntu-20.04.
  7. Dalam pembaruan agentPoolProfiles:

    Bidang Deskripsi
    hitung Masukkan jumlah agen yang Anda inginkan untuk penyebaran Anda. Jumlah maksimum node yang akan digunakan per langganan adalah 50. Jika Anda meyebarkan lebih dari satu kluster per langganan pastikan jumlah total agen tidak melebihi 50. Pastikan untuk menggunakan item konfigurasi yang ditentukan dalam file JSON model API sampel.
    vmSize Masukkan ukuran yang didukung oleh Azure Stack Hub, misalnya Standard_D2_v2.
    distro Masukkan aks-ubuntu-18.04, aks-ubuntu-20.04 atau Windows.
    Gunakan Windows untuk agen yang akan berjalan pada Windows. Misalnya, lihat kubernetes-windows.json
  8. Dalam linuxProfile pembaruan:

    Bidang Deskripsi
    adminUsername Masukkan nama pengguna admin mesin virtual.
    ssh Masukkan kunci publik yang akan digunakan untuk autentikasi SSH dengan mesin virtual. Gunakan ssh-rsa dan kemudian kuncinya. Untuk petunjuk tentang membuat kunci publik, lihat Membuat kunci SSH untuk Linux.

    Jika Anda menyebarkan ke jaringan virtual khusus, Anda dapat menemukan petunjuk tentang menemukan dan menambahkan kunci dan nilai yang diperlukan ke larik yang sesuai di Model API di Menyebarkan kluster Kubernetes ke jaringan virtual khusus.

    Catatan

    Mesin AKS untuk Azure Stack Hub tidak memungkinkan Anda menyediakan sertifikat Anda sendiri untuk pembuatan kluster.

  9. Jika Anda menggunakan Windows, di windowsProfile perbarui nilai adminUsername: dan adminPassword:

    "windowsProfile": {
    "adminUsername": "azureuser",
    "adminPassword": "",
    "sshEnabled": true
    }
    

Informasi lebih lanjut tentang model API

Menambahkan sertifikat saat menggunakan ASDK

Jika Anda menyebarkan kluster pada Azure Stack Development Kit (ASDK) dan menggunakan Linux, Anda harus menambahkan sertifikat akar ke penyimpanan sertifikat tepercaya dari VM klien yang menjalankan mesin AKS.

  1. Temukan sertifikat root di mesin virtual di direktori ini: /var/lib/waagent/Certificates.pem.
  2. Salin file sertifikat:
    sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt
    sudo update-ca-certificates
    

Menyebarkan kluster Kubernetes

Setelah mengumpulkan semua nilai yang diperlukan dalam model API, Anda dapat membuat kluster. Pada titik ini Anda harus:

Minta operator Azure Stack Hub Anda untuk:

  • Verifikasi kesehatan sistem, sarankan berjalan Test-AzureStack dan alat pemantauan perangkat keras vendor OEM Anda.
  • Verifikasi kapasitas sistem termasuk sumber daya seperti memori, penyimpanan, dan IP publik.
  • Berikan rincian kuota yang terkait dengan langganan Anda sehingga Anda dapat memverifikasi bahwa masih ada cukup ruang untuk jumlah mesin virtual yang Anda rencanakan untuk digunakan.

Lanjutkan untuk menyebarkan kluster:

  1. Tinjau parameter yang tersedia untuk mesin AKS pada bendera Cli Azure Stack Hub.

    Parameter Contoh Deskripsi
    azure-env AzureStackCloud Untuk menunjukkan kepada mesin AKS bahwa platform target Anda adalah Azure Stack Hub, gunakan AzureStackCloud.
    identity-system ADFS Opsional. Tentukan solusi manajemen identitas Anda jika Anda menggunakan Active Directory Federated Services (Active Directory Federation Services).
    lokasi Lokal Nama wilayah untuk Azure Stack Hub Anda. Untuk ASDK, wilayah di-set ke local.
    resource-group kube-rg Masukkan nama grup sumber daya baru atau pilih grup sumber daya yang ada. Nama sumber daya harus alfanumerik dan huruf kecil.
    api-model ./kubernetes-azurestack.json Jalur ke file konfigurasi kluster, atau model API.
    output-directory kube-rg Masukkan nama direktori untuk berisi file output apimodel.json dan file lain yang dihasilkan.
    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. Anda menyiapkan rahasia klien saat membuat layanan Anda.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Masukkan ID Langganan Anda. Anda harus menyediakan langganan untuk penyewa. Penyebaran ke langganan administratif tidak didukung. Untuk informasi selengkapnya, lihat Berlangganan ke penawaran

    Berikut contohnya:

    Catatan

    Untuk AKSe versi 0.75.3 ke atas, perintah untuk menyebarkan kluster mesin AKS adalah aks-engine-azurestack deploy.

    aks-engine deploy \
    --azure-env AzureStackCloud \
    --location <for asdk is local> \
    --resource-group kube-rg \
    --api-model ./kubernetes-azurestack.json \
    --output-directory kube-rg \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  2. Jika karena alasan tertentu eksekusi gagal setelah direktori output dibuat, Anda dapat memperbaiki masalah dan menjalankan kembali perintah. Jika Anda menjalankan ulang penyebaran dan telah menggunakan direktori output yang sama sebelumnya, mesin AKS akan mengembalikan kesalahan yang mengatakan bahwa direktori sudah ada. Anda dapat menimpa direktori yang ada dengan menggunakan bendera: --force-overwrite.

  3. Simpan konfigurasi kluster mesin AKS di lokasi yang aman dan terenkripsi.

    Temukan file apimodel.json. Simpan ke lokasi yang aman. File ini akan digunakan sebagai input di semua operasi mesin AKS Anda yang lain.

    File apimodel.json yang dihasilkan berisi perwakilan layanan, rahasia, dan kunci publik SSH yang Anda gunakan dalam model API input. File ini juga memiliki semua metadata lain yang diperlukan oleh mesin AKS untuk melakukan semua operasi lainnya. Jika Anda kehilangan file, mesin AKS tidak akan dapat mengonfigurasi kluster.

    Rahasianya tidak terenkripsi. Simpan file di tempat yang terenkripsi dan aman.

Memverifikasi kluster Anda

Periksa kluster Anda dengan menyambungkan ke kubectl, mendapatkan info, lalu mendapatkan status simpul Anda.

  1. Dapatkan file kubeconfig untuk tersambung ke sarana kontrol.

    • Jika Anda sudah kubectl menginstal, periksa kubeconfig file untuk kluster yang baru dibuat di jalur /kubeconfig/kubeconfig.jsondirektori ini . Anda dapat menambahkan ke /kubeconfig.json.kube direktori untuk mengakses kluster baru Anda.
      Jika Anda belum memasang kubectl, kunjungi Pasang Alat untuk memasang alat baris perintah Kubernetes. Jika tidak, ikuti petunjuk di bawah ini untuk mengakses kluster dari salah satu node sarana kontrol.
  2. Dapatkan alamat IP publik dari salah satu node sarana kontrol Anda menggunakan portal Azure Stack Hub.

  3. Dari komputer dengan akses ke instans Azure Stack Hub Anda, sambungkan melalui SSH ke simpul sarana kontrol baru menggunakan klien seperti PuTTY atau MobaXterm.

  4. Untuk nama pengguna SSH, gunakan "azureuser" dan file kunci privat dari pasangan kunci yang Anda berikan untuk penyebaran kluster.

  5. Periksa apakah titik akhir kluster sedang berjalan:

    kubectl cluster-info
    

    Output akan terlihat mirip dengan contoh berikut:

    Kubernetes master is running at https://democluster01.location.domain.com
    CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  6. Kemudian, tinjau status node:

    kubectl get nodes
    

    Output harus sama dengan berikut ini.

    k8s-linuxpool-29969128-0   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-1   Ready      agent    9d    v1.15.5
    k8s-linuxpool-29969128-2   Ready      agent    9d    v1.15.5
    k8s-master-29969128-0      Ready      master   9d    v1.15.5
    k8s-master-29969128-1      Ready      master   9d    v1.15.5
    k8s-master-29969128-2      Ready      master   9d    v1.15.5
    

Memecahkan masalah penyebaran kluster

Saat mengalami kesalahan saat menyebarkan kluster Kubernetes menggunakan mesin AKS, Anda dapat memeriksa:

  1. Apakah Anda menggunakan info masuk perwakilan layanan (SPN) yang benar?
  2. Apakah SPN memiliki peran "Kontributor" ke langganan Azure Stack Hub?
  3. Apakah Anda memiliki kuota yang cukup besar dalam paket Azure Stack Hub Anda?
  4. Apakah instans Azure Stack Hub memiliki patch atau peningkatan yang diterapkan?

Untuk informasi selengkapnya, lihat artikel Pemecahan Masalah di repositori GitHub Azure/aks-engine-azurestack .

Putar rahasia perwakilan layanan Anda

Setelah penyebaran kluster Kubernetes dengan mesin AKS, perwakilan layanan (SPN) digunakan untuk mengelola interaksi dengan Azure Resource Manager pada instans Azure Stack Hub Anda. Pada titik tertentu, rahasia untuk ini perwakilan layanan mungkin berakhir. Jika rahasia Anda kedaluwarsa, Anda dapat menyegarkan info masuk dengan:

  • Memperbarui setiap node dengan rahasia perwakilan layanan baru.
  • Atau memperbarui info masuk model API dan menjalankan peningkatan.

Memperbarui setiap node secara manual

  1. Dapatkan rahasia baru untuk kepala layanan Anda dari operator cloud Anda. Untuk petunjuk untuk Azure Stack Hub, lihat Menggunakan identitas aplikasi untuk mengakses sumber daya Azure Stack Hub.
  2. Gunakan kredensial baru yang disediakan oleh operator cloud Anda untuk memperbarui /etc/kubernetes/azure.json pada setiap simpul. Setelah membuat pembaruan, mulai ulang dan kubelekube-controller-manager.

Memperbarui kluster dengan pembaruan mesin-aks

Atau, Anda dapat mengganti kredensial di apimodel.json dan menjalankan peningkatan menggunakan file .json yang diperbarui ke versi Kubernetes yang sama atau lebih baru. Untuk petunjuk tentang peningkatan model lihat Meningkatkan kluster Kubernetes di Azure Stack Hub

Langkah berikutnya