Konsep ACK - 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.

Konsep ACK

ACK mengelola AWS sumber daya melalui Kubernetes APIs dengan terus merekonsiliasi status yang diinginkan dalam manifes Anda dengan status aktual di. AWS Saat Anda membuat atau memperbarui sumber daya kustom Kubernetes, ACK membuat panggilan AWS API yang diperlukan untuk membuat atau memodifikasi AWS sumber daya yang sesuai, lalu memantaunya untuk drift dan memperbarui status Kubernetes untuk mencerminkan status saat ini. Pendekatan ini memungkinkan Anda mengelola infrastruktur menggunakan alat dan alur kerja Kubernetes yang sudah dikenal sambil mempertahankan konsistensi antara klaster Anda dan. AWS

Topik ini menjelaskan konsep dasar di balik bagaimana ACK mengelola AWS sumber daya melalui Kubernetes APIs.

Memulai dengan ACK

Setelah membuat kemampuan ACK (lihatBuat kemampuan ACK), Anda dapat mulai mengelola AWS sumber daya menggunakan manifes Kubernetes di klaster Anda.

Sebagai contoh, buat manifes bucket S3 ini dibucket.yaml, pilih nama bucket unik Anda sendiri.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-test-bucket namespace: default spec: name: my-unique-bucket-name-12345

Terapkan manifes:

kubectl apply -f bucket.yaml

Periksa statusnya:

kubectl get bucket my-test-bucket kubectl describe bucket my-test-bucket

Verifikasi bucket telah dibuat di AWS:

aws s3 ls | grep my-unique-bucket-name-12345

Hapus sumber daya Kubernetes:

kubectl delete bucket my-test-bucket

Verifikasi bucket telah dihapus dari AWS:

aws s3 ls | grep my-unique-bucket-name-12345

Bucket seharusnya tidak lagi muncul dalam daftar, menunjukkan bahwa ACK mengelola siklus hidup penuh sumber daya. AWS

Untuk informasi lebih lanjut tentang memulai dengan ACK, lihat Memulai dengan ACK.

Siklus hidup sumber daya dan rekonsiliasi

ACK menggunakan loop rekonsiliasi berkelanjutan untuk memastikan AWS sumber daya Anda cocok dengan status yang diinginkan yang ditentukan dalam manifes Kubernetes Anda.

Bagaimana rekonsiliasi bekerja:

  1. Anda membuat atau memperbarui sumber daya kustom Kubernetes (misalnya, Bucket S3)

  2. ACK mendeteksi perubahan dan membandingkan keadaan yang diinginkan dengan status aktual di AWS

  3. Jika berbeda, ACK membuat panggilan AWS API untuk mendamaikan perbedaannya

  4. ACK memperbarui status sumber daya di Kubernetes untuk mencerminkan status saat ini

  5. Loop berulang terus menerus, biasanya setiap beberapa jam

Rekonsiliasi dipicu ketika Anda membuat sumber daya Kubernetes baru, memperbarui sumber daya yang adaspec, atau ketika ACK mendeteksi penyimpangan dari perubahan manual yang dibuat di luar ACK. AWS Selain itu, ACK melakukan rekonsiliasi berkala dengan periode resync 10 jam. Perubahan pada sumber daya Kubernetes memicu rekonsiliasi segera, sementara deteksi drift pasif terhadap perubahan sumber daya hulu AWS terjadi selama sinkronisasi ulang periodik.

Saat mengerjakan contoh memulai di atas, ACK melakukan langkah-langkah ini:

  1. Memeriksa apakah bucket ada di AWS

  2. Jika tidak, panggilan s3:CreateBucket

  3. Memperbarui status Kubernetes dengan bucket ARN dan state

  4. Melanjutkan pemantauan untuk drift

Untuk mempelajari lebih lanjut tentang cara kerja ACK, lihat Rekonsiliasi ACK.

Kondisi status

Sumber daya ACK menggunakan kondisi status untuk mengkomunikasikan keadaan mereka. Memahami kondisi ini membantu Anda memecahkan masalah dan memahami kesehatan sumber daya.

  • Siap: Menunjukkan sumber daya siap untuk dikonsumsi (kondisi Kubernetes standar).

  • ACK. ResourceSynced: Menunjukkan spesifikasi sumber daya cocok dengan status AWS sumber daya.

  • ACK.terminal: Menunjukkan telah terjadi kesalahan yang tidak dapat dipulihkan.

  • ACK.adopted: Menunjukkan sumber daya diadopsi dari AWS sumber daya yang ada daripada dibuat baru.

  • ACK.Recoverable: Menunjukkan kesalahan yang dapat dipulihkan yang dapat diselesaikan tanpa memperbarui spesifikasi.

  • ACK.advisory: Memberikan informasi nasihat tentang sumber daya.

  • ACK. LateInitialized: Menunjukkan apakah inisialisasi bidang yang terlambat selesai.

  • ACK. ReferencesResolved: Menunjukkan apakah semua AWSResourceReference bidang telah diselesaikan.

  • ACK. IAMRoleDipilih: Menunjukkan apakah IAMRole Pemilih telah dipilih untuk mengelola sumber daya ini.

Periksa status sumber daya:

# Check if resource is ready kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' # Check for terminal errors kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'

Contoh status:

status: conditions: - type: Ready status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.ResourceSynced status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.Terminal status: "True" ackResourceMetadata: arn: arn:aws:s3:::my-unique-bucket-name ownerAccountID: "111122223333" region: us-west-2

Untuk mempelajari lebih lanjut tentang status dan kondisi ACK, lihat Ketentuan ACK.

Kebijakan penghapusan

Kebijakan penghapusan ACK mengontrol apa yang terjadi pada AWS sumber daya ketika Anda menghapus sumber daya Kubernetes.

Hapus (default)

AWS Resource dihapus ketika Anda menghapus sumber daya Kubernetes: Ini adalah perilaku default.

# No annotation needed - this is the default apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: temp-bucket spec: name: temporary-bucket

Menghapus sumber daya ini akan menghapus bucket S3 di. AWS

Pertahankan

Sumber AWS daya disimpan saat Anda menghapus sumber daya Kubernetes:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: important-bucket annotations: services.k8s.aws/deletion-policy: "retain" spec: name: production-data-bucket

Menghapus sumber daya ini menghapusnya dari Kubernetes tetapi membiarkan bucket S3 masuk. AWS

retainKebijakan ini berguna untuk basis data produksi yang harus hidup lebih lama dari sumber daya Kubernetes, sumber daya bersama yang digunakan oleh beberapa aplikasi, sumber daya dengan data penting yang tidak boleh dihapus secara tidak sengaja, atau manajemen ACK sementara di mana Anda mengadopsi sumber daya, mengonfigurasinya, lalu melepaskannya kembali ke manajemen manual.

Untuk mempelajari selengkapnya tentang kebijakan penghapusan ACK, lihat Kebijakan Penghapusan ACK.

Adopsi sumber daya

Adopsi memungkinkan Anda untuk membawa AWS sumber daya yang ada di bawah manajemen ACK tanpa membuatnya kembali.

Kapan menggunakan adopsi:

  • Migrasi infrastruktur yang ada ke manajemen ACK

  • Memulihkan sumber daya yatim piatu jika terjadi penghapusan AWS sumber daya yang tidak disengaja di Kubernetes

  • Mengimpor sumber daya yang dibuat oleh alat lain (CloudFormation, Terraform)

Cara kerja adopsi:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Saat Anda membuat sumber daya ini:

  1. ACK memeriksa apakah ember dengan nama itu ada di AWS

  2. Jika ditemukan, ACK mengadopsinya (tidak ada panggilan API untuk dibuat)

  3. ACK membaca konfigurasi saat ini dari AWS

  4. ACK memperbarui status Kubernetes untuk mencerminkan keadaan sebenarnya

  5. Pembaruan di masa mendatang merekonsiliasi sumber daya secara normal

Setelah diadopsi, sumber daya dikelola seperti sumber daya ACK lainnya, dan menghapus sumber daya Kubernetes akan menghapus sumber daya kecuali Anda menggunakan kebijakan penghapusan. AWS retain

Saat mengadopsi sumber daya, AWS sumber daya harus sudah ada dan ACK membutuhkan izin baca untuk menemukannya. adopt-or-createKebijakan mengadopsi sumber daya jika ada, atau membuatnya jika tidak. Ini berguna ketika Anda menginginkan alur kerja deklaratif yang berfungsi apakah sumber daya ada atau tidak.

Untuk mempelajari lebih lanjut tentang adopsi sumber daya ACK, lihat Adopsi Sumber Daya ACK.

Sumber daya lintas akun dan lintas wilayah

ACK dapat mengelola sumber daya di berbagai AWS akun dan wilayah dari satu cluster.

Anotasi sumber daya lintas wilayah

Anda dapat menentukan wilayah AWS sumber daya menggunakan anotasi:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: eu-bucket annotations: services.k8s.aws/region: eu-west-1 spec: name: my-eu-bucket

Anda juga dapat menentukan wilayah dari semua sumber AWS daya yang dibuat dalam namespace tertentu:

Anotasi namespace

Menetapkan wilayah default untuk semua sumber daya di namespace:

apiVersion: v1 kind: Namespace metadata: name: production annotations: services.k8s.aws/default-region: us-west-2

Sumber daya yang dibuat di namespace ini menggunakan wilayah ini kecuali diganti dengan anotasi tingkat sumber daya.

Lintas akun

Gunakan Penyeleksi Peran IAM untuk memetakan peran IAM tertentu ke ruang nama:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: target-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production

Sumber daya yang dibuat di namespace yang dipetakan secara otomatis menggunakan peran yang ditentukan.

Untuk mempelajari selengkapnya tentang Penyeleksi Peran IAM, lihat Manajemen Sumber Daya Lintas Akun ACK. Untuk detail konfigurasi lintas akun, lihatKonfigurasikan izin ACK.

Penanganan kesalahan dan perilaku coba lagi

ACK secara otomatis menangani kesalahan sementara dan mencoba ulang operasi yang gagal.

Coba lagi strategi:

  • Kesalahan sementara (pembatasan tarif, masalah layanan sementara, izin tidak mencukupi) memicu percobaan ulang otomatis

  • Backoff eksponensial mencegah kewalahan AWS APIs

  • Upaya coba ulang maksimum bervariasi menurut jenis kesalahan

  • Kesalahan permanen (parameter tidak valid, konflik nama sumber daya) jangan coba lagi

Periksa status sumber daya untuk detail kesalahan menggunakankubectl describe:

kubectl describe bucket my-bucket

Cari kondisi status dengan pesan kesalahan, peristiwa yang menunjukkan upaya rekonsiliasi terbaru, dan message bidang dalam kondisi status yang menjelaskan kegagalan. Kesalahan umum termasuk izin IAM yang tidak mencukupi, konflik nama sumber daya AWS, nilai konfigurasi yang tidak valid dalamspec, dan melebihi kuota layanan. AWS

Untuk mengatasi masalah kesalahan umum, lihat. Memecahkan masalah dengan kemampuan ACK

Komposisi sumber daya dengan kro

Untuk menyusun dan menghubungkan beberapa sumber daya ACK bersama-sama, gunakan Kemampuan EKS untuk kro (Kube Resource Orchestrator). kro menyediakan cara deklaratif untuk mendefinisikan kelompok sumber daya, meneruskan konfigurasi antar sumber daya untuk mengelola pola infrastruktur yang kompleks secara sederhana.

Untuk contoh rinci tentang membuat komposisi sumber daya kustom dengan sumber daya ACK, lihat konsep kro

Langkah selanjutnya