Menerapkan node Mode Otomatis EKS ke Local Zones - Amazon EKS

Bantu tingkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerapkan node Mode Otomatis EKS ke Local Zones

Mode Otomatis EKS menyediakan manajemen cluster yang disederhanakan dengan penyediaan node otomatis. AWS Local Zones memperluas AWS infrastruktur ke lokasi geografis yang lebih dekat dengan pengguna akhir Anda, mengurangi latensi untuk aplikasi yang sensitif terhadap latensi. Panduan ini memandu Anda melalui proses penerapan node Mode Otomatis EKS ke AWS Local Zones, memungkinkan Anda menjalankan aplikasi kontainer dengan latensi yang lebih rendah untuk pengguna di area geografis tertentu.

Panduan ini juga menunjukkan cara menggunakan taint dan toleransi Kubernetes untuk memastikan bahwa hanya beban kerja tertentu yang berjalan di node Zona Lokal Anda, membantu Anda mengontrol biaya dan mengoptimalkan penggunaan sumber daya.

Prasyarat

Sebelum Anda mulai menerapkan node Mode Otomatis EKS ke Local Zones, pastikan Anda memiliki prasyarat berikut:

Langkah 1: Buat Subnet Zona Lokal

Langkah pertama dalam menerapkan node Mode Otomatis EKS ke Zona Lokal adalah membuat subnet di Zona Lokal itu. Subnet ini menyediakan infrastruktur jaringan untuk node Anda dan memungkinkan mereka untuk berkomunikasi dengan seluruh VPC Anda. Ikuti instruksi subnet Buat Zona Lokal (dalam Panduan Pengguna AWS Local Zones) untuk membuat subnet di Zona Lokal pilihan Anda.

Tip

Catat nama subnet zona lokal Anda.

Langkah 2: Buat NodeClass untuk Subnet Zona Lokal

Setelah membuat subnet Zona Lokal Anda, Anda perlu menentukan NodeClass yang mereferensikan subnet ini. NodeClass Ini adalah sumber daya kustom Kubernetes yang menentukan atribut infrastruktur untuk node Anda, termasuk subnet, grup keamanan, dan konfigurasi penyimpanan mana yang akan digunakan. Dalam contoh di bawah ini, kita membuat NodeClass disebut “local-zone” yang menargetkan subnet zona lokal berdasarkan namanya. Anda juga dapat menggunakan subnet ID. Anda harus menyesuaikan konfigurasi ini untuk menargetkan subnet Zona Lokal Anda.

Untuk informasi selengkapnya, lihat Buat Kelas Node untuk Amazon EKS.

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: local-zone spec: subnetSelectorTerms: - id: <local-subnet-id>

Langkah 3: Buat NodePool dengan NodeClass dan Taint

Dengan NodeClass konfigurasi Anda, Anda sekarang perlu membuat NodePool yang menggunakan ini NodeClass. A NodePool mendefinisikan karakteristik komputasi node Anda, termasuk tipe instance. NodePool Menggunakan NodeClass sebagai referensi untuk menentukan di mana untuk meluncurkan instance.

Dalam contoh di bawah ini, kami membuat referensi NodePool yang merujuk “zona lokal” kami. NodeClass Kami juga menambahkan taint ke node untuk memastikan bahwa hanya pod dengan toleransi yang cocok yang dapat dijadwalkan pada node Local Zone ini. Ini sangat penting untuk node Zona Lokal, yang biasanya memiliki biaya lebih tinggi dan hanya boleh digunakan oleh beban kerja yang secara khusus mendapat manfaat dari pengurangan latensi.

Untuk informasi selengkapnya, lihat Buat Node Pool untuk Mode Otomatis EKS.

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: my-node-pool spec: template: metadata: labels: node-type: local-zone spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: local-zone taints: - key: "aws.amazon.com/local-zone" value: "true" effect: NoSchedule requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m", "r"] - key: "eks.amazonaws.com/instance-cpu" operator: In values: ["4", "8", "16", "32"]

Taint dengan kunci aws.amazon.com/local-zone dan efek NoSchedule memastikan bahwa pod tanpa toleransi yang cocok tidak akan dijadwalkan pada node ini. Ini mencegah beban kerja reguler berjalan secara tidak sengaja di Zona Lokal, yang dapat menyebabkan biaya yang tidak terduga.

Langkah 4: Terapkan Beban Kerja dengan Tolerasi dan Afinitas Node

Untuk kontrol optimal atas penempatan beban kerja pada node Local Zone, gunakan keduanya taints/tolerations dan afinitas node bersama-sama. Pendekatan gabungan ini memberikan manfaat sebagai berikut:

  1. Pengendalian Biaya: Taint memastikan bahwa hanya pod dengan toleransi eksplisit yang dapat menggunakan sumber daya Zona Lokal yang berpotensi mahal.

  2. Penempatan Terjamin: Afinitas node memastikan bahwa aplikasi sensitif latensi Anda berjalan secara eksklusif di Zona Lokal, bukan pada node cluster biasa.

Berikut adalah contoh Deployment yang dikonfigurasi untuk dijalankan secara khusus pada node Local Zone:

apiVersion: apps/v1 kind: Deployment metadata: name: low-latency-app namespace: default spec: replicas: 2 selector: matchLabels: app: low-latency-app template: metadata: labels: app: low-latency-app spec: tolerations: - key: "aws.amazon.com/local-zone" operator: "Equal" value: "true" effect: "NoSchedule" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "node-type" operator: "In" values: ["local-zone"] containers: - name: application image: my-low-latency-app:latest resources: limits: cpu: "1" memory: "1Gi" requests: cpu: "500m" memory: "512Mi"

Deployment ini memiliki dua konfigurasi penjadwalan utama:

  1. Toleransi memungkinkan pod dijadwalkan pada node dengan aws.amazon.com/local-zone taint.

  2. Persyaratan afinitas node memastikan pod ini hanya akan berjalan pada node dengan labelnode-type: local-zone.

Bersama-sama, ini memastikan bahwa aplikasi sensitif latensi Anda hanya berjalan pada node Zona Lokal, dan aplikasi reguler tidak menggunakan sumber daya Zona Lokal kecuali secara eksplisit dikonfigurasi untuk melakukannya.

Langkah 5: Verifikasi dengan AWS Konsol

Setelah menyiapkan NodeClass, NodePool, dan Deployment, Anda harus memverifikasi bahwa node sedang disediakan di Zona Lokal Anda seperti yang diharapkan dan bahwa beban kerja Anda berjalan pada mereka. Anda dapat menggunakan AWS Management Console untuk memverifikasi bahwa EC2 instance sedang diluncurkan di subnet Zona Lokal yang benar.

Selain itu, Anda dapat memeriksa daftar node Kubernetes menggunakan kubectl get nodes -o wide untuk mengonfirmasi bahwa node bergabung dengan cluster Anda dengan label dan taint yang benar:

kubectl get nodes -o wide kubectl describe node <node-name> | grep -A 5 Taints

Anda juga dapat memverifikasi bahwa Pod beban kerja Anda dijadwalkan pada node Zona Lokal:

kubectl get pods -o wide

Pendekatan ini memastikan bahwa hanya beban kerja yang secara khusus mentolerir noda Zona Lokal yang akan dijadwalkan pada node ini, membantu Anda mengontrol biaya dan memanfaatkan sumber daya Zona Lokal Anda dengan seefisien mungkin.