Praktik terbaik bagi pengembang aplikasi untuk mengelola sumber daya di Azure Kubernetes Service (AKS)

Ketika Anda mengembangkan dan menjalankan aplikasi di Azure Kubernetes Service (AKS), ada beberapa area utama yang perlu dipertimbangkan. Cara Anda mengelola penyebaran aplikasi dapat berdampak negatif pada pengalaman pengguna akhir layanan yang Anda berikan.

Artikel ini berfokus pada menjalankan kluster dan beban kerja Anda dari perspektif pengembang aplikasi. Untuk informasi tentang praktik terbaik administratif, lihat Praktik terbaik operator klaster untuk isolasi dan manajemen sumber daya di Azure Kubernetes Service (AKS).

Artikel ini membahas topik berikut ini:

  • Permintaan dan batasan Pod.
  • Cara mengembangkan, men-debug, dan menyebarkan aplikasi dengan Bridge ke Kubernetes dan Visual Studio Code.

Tentukan permintaan dan batasan Pod

Panduan praktik terbaik

Atur permintaan dan batasan Pod di semua Pod dalam manifes YAML Anda. Jika kluster AKS menggunakan kuota sumber daya dan Anda tidak menentukan nilai ini, penyebaran mungkin ditolak.

Gunakan permintaan dan batas pod untuk mengelola sumber daya komputasi dalam kluster AKS. Permintaan dan batasan Pod menginformasikan penjadwal Kubernetes tentang sumber daya komputasi untuk ditetapkan ke pod.

Permintaan CPU/Memori Pod

Permintaan pod menentukan jumlah CPU dan memori yang dibutuhkan pod secara teratur.

Dalam spesifikasi pod, penting bagi Anda untuk menentukan permintaan dan batasan ini berdasarkan informasi di atas. Jika Anda tidak menyertakan nilai-nilai ini, penjadwal Kubernetes tidak dapat mempertimbangkan sumber daya yang diperlukan aplikasi Anda untuk membantu menjadwalkan keputusan.

Pantau performa aplikasi Anda untuk menyesuaikan permintaan Pod. Jika Anda meremehkan permintaan Pod, aplikasi Anda mungkin mendapatkan performa yang menurun karena penjadwalan simpul yang berlebihan. Jika permintaan terlalu dinilai, aplikasi Anda mungkin mengalami peningkatan kesulitan penjadwalan.

Batasan CPU/Memori Pod

Batas pod mengatur jumlah maksimum CPU dan memori yang dapat digunakan pod. Batas memori mendefinisikan pod mana yang harus dihapus ketika node tidak stabil karena sumber daya yang tidak memadai. Tanpa batas yang tepat, pod dihapus hingga tekanan sumber daya diangkat. Meskipun pod dapat melebihi batas CPU secara berkala, pod tidak dihapus karena melebihi batas CPU.

Batas pod menentukan kapan sebuah pod kehilangan kontrol atas konsumsi sumber daya. Ketika melebihi batas, pod ditandai untuk dihapus. Perilaku ini menjaga kesehatan simpul dan meminimalkan dampak pada Pod yang berbagi simpul tersebut. Jika Anda tidak menetapkan batas pod, nilai tersebut akan default ke nilai tertinggi yang tersedia pada simpul tertentu.

Hindari mengatur batas Pod yang lebih tinggi dari yang dapat didukung oleh simpul Anda. Setiap simpul AKS mencadangkan jumlah CPU dan memori yang ditetapkan untuk komponen inti Kubernetes. Aplikasi Anda dapat mencoba untuk mengonsumsi terlalu banyak sumber daya pada simpul agar Pod-pod lain berhasil dijalankan.

Pantau performa aplikasi Anda pada waktu yang berbeda, baik harian atau mingguan. Tentukan waktu puncak permintaan dan selaraskan batas Pod dengan sumber daya yang diperlukan untuk memenuhi kebutuhan maksimum.

Penting

Dalam spesifikasi Pod Anda, tentukan permintaan dan batasan ini berdasarkan informasi di atas. Gagal menyertakan nilai-nilai ini mencegah penjadwal Kubernetes memperhitungkan sumber daya yang diperlukan aplikasi Anda untuk membantu menjadwalkan keputusan.

Jika penjadwal menempatkan pod pada simpul dengan sumber daya yang tidak mencukup, performa aplikasi akan terdegradasi. Administrator kluster harus mengatur kuota sumber daya pada namespace layanan yang mengharuskan Anda mengatur permintaan dan batas sumber daya. Untuk informasi selengkapnya, lihat kuota sumber daya pada kluster AKS.

Ketika Anda menentukan permintaan atau batas CPU, nilai diukur dalam unit CPU.

  • CPU 1.0 setara dengan satu inti CPU virtual dasar pada simpul.
    • Pengukuran yang sama digunakan untuk GPU.
  • Anda dapat menentukan pecahan yang diukur dalam millicore. Misalnya, 100 m adalah 0,1 dari inti vCPU yang mendasar.

Dalam contoh dasar berikut untuk satu pod NGINX, pod meminta 100 m waktu CPU dan 128Mi memori. Batas sumber daya untuk pod diatur ke CPU 250 m dan memori 256Mi .

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Untuk informasi selengkapnya tentang pengukuran dan penetapan sumber daya, lihat Mengelola sumber daya komputasi untuk kontainer.

Mengembangkan dan men-debug aplikasi pada kluster AKS

Panduan praktik terbaik

Tim pengembangan harus melakukan sebaran dan debug terhadap kluster AKS menggunakan Bridge to Kubernetes.

Dengan Bridge to Kubernetes, Anda dapat mengembangkan, men-debug, dan menguji aplikasi secara langsung pada kluster AKS. Pengembang dalam tim berkolaborasi untuk membangun dan menguji sepanjang siklus hidup aplikasi. Anda dapat terus menggunakan alat-alat yang ada seperti Visual Studio atau Visual Studio Code dengan ekstensi Bridge to Kubernetes.

Menggunakan proses pengembangan dan pengujian terintegrasi dengan Bridge to Kubernetes mengurangi kebutuhan akan lingkungan pengujian lokal seperti minikube. Sebagai gantinya, Anda mengembangkan dan menguji terhadap kluster AKS, bahkan dalam kluster yang aman dan terisolasi.

Catatan

Bridge to Kubernetes ditujukan untuk digunakan dengan aplikasi yang berjalan pada pod dan node Linux.

Gunakan ekstensi Visual Studio Code (VS Code) untuk Kubernetes

Panduan praktik terbaik

Instal dan gunakan ekstensi VS Code untuk Kubernetes ketika Anda menulis manifest YAML. Anda juga dapat menggunakan ekstensi untuk solusi penyebaran terintegrasi, yang dapat membantu pemilik aplikasi yang jarang berinteraksi dengan kluster AKS.

Ekstensi Visual Studio Code untuk Kubernetes membantu Anda mengembangkan dan menyebarkan aplikasi ke AKS. Ekstensi ini menyediakan fitur-fitur berikut:

  • Intellisense untuk sumber daya Kubernetes, bagan Helm, dan templat.

  • Kemampuan untuk menelusuri, menyebarkan, dan mengedit kemampuan untuk sumber daya Kubernetes dari dalam Visual Studio Code.

  • Intellisense memeriksa permintaan atau batas sumber daya yang ditetapkan dalam spesifikasi pod:

    VS Code extension for Kubernetes warning about missing memory limits

Langkah berikutnya

Artikel ini berfokus pada cara menjalankan kluster dan beban kerja Anda dari perspektif operator kluster. Untuk informasi tentang praktik terbaik administratif, lihat Praktik terbaik operator klaster untuk isolasi dan manajemen sumber daya di Azure Kubernetes Service (AKS).

Untuk menerapkan beberapa praktik terbaik ini, lihat Mengembangkan dengan Bridge ke Kubernetes.