Membuat kluster Kubernetes menggunakan Azure CLI

Berlaku untuk: AKS di Azure Local

Artikel ini menjelaskan cara membuat kluster Kubernetes di Azure Local menggunakan Azure CLI. Alur kerja adalah sebagai berikut:

  1. Buat kluster Kubernetes di Azure Local menggunakan Azure CLI. Kluster ini terhubung dengan Azure Arc secara default.
  2. Saat membuat kluster, Anda menyediakan grup Microsoft Entra yang berisi daftar pengguna Microsoft Entra dengan akses administrator kluster Kubernetes.
  3. Akses kluster menggunakan kubectl dan ID Microsoft Entra Anda.
  4. Jalankan contoh aplikasi multi-kontainer dengan antarmuka web dan instans Redis di kluster.

Sebelum Anda mulai

  • Sebelum memulai, pastikan Anda memiliki detail berikut dari administrator infrastruktur lokal Anda:
    • ID langganan Azure - ID langganan Azure tempat Azure Local digunakan untuk pendaftaran dan penyebaran.
    • ID Lokasi Kustom - ID Azure Resource Manager dari lokasi kustom. Lokasi kustom dikonfigurasi selama penyebaran kluster Azure Local. Admin infrastruktur Anda harus memberi Anda ID Resource Manager dari lokasi kustom. Parameter ini diperlukan untuk membuat kluster Kubernetes. Anda juga bisa mendapatkan ID Resource Manager menggunakan az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, jika admin infrastruktur menyediakan nama lokasi kustom dan nama grup sumber daya.
    • ID Jaringan - ID Azure Resource Manager dari jaringan logis Lokal Azure yang dibuat mengikuti langkah-langkah ini. Admin Anda harus memberi Anda ID jaringan logis. Parameter ini diperlukan untuk membuat kluster Kubernetes. Anda juga bisa mendapatkan ID Azure Resource Manager menggunakan az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv jika Anda mengetahui grup sumber daya tempat jaringan logis dibuat.
  • Anda dapat menjalankan langkah-langkah dalam artikel ini di komputer pengembangan lokal untuk membuat kluster Kubernetes pada penyebaran Azure Local jarak jauh Anda. Pastikan Anda memiliki versi terbaru Az CLI di komputer pengembangan Anda. Anda juga dapat memilih untuk meningkatkan versi Az CLI Anda menggunakan az upgrade.
  • Untuk terhubung ke kluster Kubernetes dari mana saja, buat grup Microsoft Entra dan tambahkan anggota ke dalamnya. Semua anggota dalam grup Microsoft Entra memiliki akses administrator kluster ke kluster. Pastikan untuk menambahkan diri Anda sebagai anggota ke grup Microsoft Entra. Jika tidak menambahkan diri, Anda tidak dapat mengakses kluster Kubernetes menggunakan kubectl. Untuk informasi selengkapnya tentang membuat grup Microsoft Entra dan menambahkan pengguna, lihat Mengelola grup Microsoft Entra dan keanggotaan grup.
  • Unduh dan instal kubectl pada komputer pengembangan Anda. Alat baris perintah Kube, kubectl, memungkinkan Anda menjalankan perintah terhadap kluster Kubernetes. Anda dapat menggunakan kubectl untuk menyebarkan aplikasi, memeriksa dan mengelola sumber daya kluster, dan melihat log.

Memasang ekstensi Azure CLI

Jalankan perintah berikut untuk menginstal ekstensi Azure CLI yang diperlukan.

Peringatan

Jangan instal ekstensi berikut secara langsung pada simpul Azure Local. Disarankan agar Anda menginstalnya di komputer klien yang Anda gunakan untuk menyambungkan ke instans Azure Local Anda.

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Buatlah kluster Kubernetes

Gunakan perintah az aksarc create untuk membuat kluster Kubernetes di AKS Arc. Pastikan Anda masuk ke Azure sebelum menjalankan perintah ini. Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai menggunakan perintah az account set . Dengan perintah az aksarc create, kami sarankan Anda menggunakan flag --validate yang memvalidasi parameter input yang ingin Anda gunakan. Setelah parameter input divalidasi, Anda dapat menjalankan az aksarc create perintah tanpa --validate flag untuk membuat kluster Kubernetes.

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys 

Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster.

Pertimbangan

Perhatikan pertimbangan berikut saat Anda membuat kluster:

  • Kunci SSH sangat penting untuk pemecahan masalah dan pengumpulan log. Pastikan untuk menyimpan file kunci privat Anda untuk digunakan di masa mendatang. Untuk mengakses node, lihat Menyambung ke node pekerja Windows atau Linux dengan SSH.
  • Anda dapat menggunakan kunci SSH yang sudah ada sebelumnya atau mengonfigurasi kunci SSH untuk kluster AKS selama pembuatan kluster. Jika tidak ada kunci SSH yang sudah ada sebelumnya di komputer lokal Anda, --generate-ssh-keys parameter diperlukan. Anda juga dapat membatasi akses SSH dengan mengikuti dokumentasi. Untuk instruksi mendetail, lihat Membuat dan menyimpan kunci SSH dengan Azure CLI, atau di portal Microsoft Azure.
  • Jika Anda tidak menyertakan --generate-ssh-keys selama pembuatan kluster dan tidak ada kunci SSH, Anda menerima pesan kesalahan. Jika Anda sudah memiliki kunci SSH di komputer lokal Anda, kluster AKS akan menggunakannya kembali. Dalam hal ini, tidak ada bedanya apakah Anda menentukan --generate-ssh-keys atau tidak.
  • Secara default, kunci SSH disimpan di ~/.ssh/id_rsa.pub. Selama pembuatan kluster, Anda dapat menentukan lokasi alternatif menggunakan --ssh-key-value parameter .

Penting

Untuk menggunakan Azure RBAC atau identitas beban kerja untuk kluster AKS, Anda harus meneruskan parameter yang diperlukan selama pembuatan kluster menggunakan Azure CLI. Saat ini, memperbarui kluster AKS yang ada untuk mengaktifkan identitas beban kerja dan/atau Azure RBAC tidak didukung. Untuk informasi selengkapnya, lihat Menggunakan Azure RBAC untuk otorisasi Kubernetes atau Menyebarkan dan mengonfigurasi Identitas Beban Kerja untuk kluster Anda.

Menyambungkan ke kluster Kubernetes

Sekarang Anda dapat terhubung ke kluster Kubernetes dengan menjalankan az connectedk8s proxy perintah dari komputer pengembangan Anda. Pastikan Anda masuk ke Azure sebelum menjalankan perintah ini. Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai menggunakan perintah az account set .

Perintah ini mengunduh kubeconfig kluster Kubernetes ke komputer pengembangan dan membuka saluran koneksi proksi ke kluster Kubernetes lokal Anda. Saluran terbuka selama perintah dijalankan. Biarkan perintah ini berjalan selama Anda ingin mengakses kluster Anda. Jika waktu habis, tutup jendela CLI, buka yang baru, lalu jalankan perintah lagi.

Anda harus memiliki izin Kontributor pada grup sumber daya yang menghosting kluster Kubernetes agar dapat menjalankan perintah berikut dengan sukses:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Output yang diharapkan:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Tetap jalankan sesi ini dan sambungkan ke kluster Kubernetes Anda dari terminal/perintah yang berbeda. Verifikasi bahwa Anda dapat terhubung ke kluster Kubernetes dengan menjalankan perintah kubectl get. Perintah ini mengembalikan daftar node kluster:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

Contoh output berikut menunjukkan simpul yang dibuat di langkah-langkah sebelumnya. Pastikan status node Siap:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Menyebarkan aplikasi dan penyeimbang beban

File manifes Kubernetes menentukan keadaan kluster yang diinginkan, seperti image kontainer mana yang akan dijalankan.

Anda dapat menggunakan manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi Azure Vote. Manifes ini mencakup dua penyebaran Kubernetes:

  • Sampel aplikasi Azure Vote Python.
  • Instans Redis.

Dua layanan Kubernetes juga dibuat:

  • Layanan internal untuk instans Redis.
  • Layanan eksternal untuk mengakses aplikasi Azure Vote dari internet.

Buat file bernama azure-vote.yaml, dan salin dalam manifes berikut:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

Sebarkan aplikasi menggunakan perintah kubectl apply dan tentukan nama YAML Anda:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

Contoh output berikut menunjukkan penyebaran dan layanan yang berhasil dibuat:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Sebarkan load balancer MetalLB sehingga dapat menetapkan IP eksternal untuk front end aplikasi. Anda dapat mengikuti instruksi ini untuk menyebarkan ekstensi MetalLB dari portal Microsoft Azure, atau menggunakan CLI.

Uji aplikasi

Ketika aplikasi berjalan, layanan Kube memaparkan frontend aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.

Pantau kemajuan menggunakan perintah kubectl get service dengan argumen --watch.

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

Output EXTERNAL-IP untuk layanan azure-vote-front awalnya akan muncul sebagai tertunda.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

Setelah alamat EXTERNAL-IP berubah dari tertunda ke alamat IP publik yang sebenarnya, gunakan CTRL-C untuk menghentikan proses jam tangan kubectl. Output contoh berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Untuk melihat aplikasi Azure Vote yang sedang berjalan, buka browser web ke alamat IP eksternal layanan Anda.

Menghapus kluster

Jalankan az aksarc delete perintah untuk membersihkan kluster yang Anda buat:

az aksarc delete --name $aksclustername --resource-group $resource_group

Langkah berikutnya