View a markdown version of this page

Konsep ACK - Amazon EKS

Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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 API Kubernetes dengan terus mendamaikan 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 penyimpangan 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 menjaga konsistensi antara cluster Anda dan. AWS

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

Memulai dengan ACK

Setelah membuat kemampuan ACK (lihatBuat kemampuan ACK), Anda dapat mulai mengelola AWS sumber daya menggunakan manifes Kubernetes di cluster 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 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 AWS daya.

Untuk informasi selengkapnya tentang memulai dengan ACK, lihat Memulai dengan ACK di situs web 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, S3 Bucket)

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

  3. Jika berbeda, ACK membuat panggilan AWS API untuk merekonsiliasi perbedaan

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

  5. Loop berulang terus menerus, biasanya setiap beberapa jam

Rekonsiliasi dipicu saat Anda membuat sumber daya Kubernetes baru, memperbarui sumber daya yang adaspec, atau ketika ACK mendeteksi penyimpangan AWS dari perubahan manual yang dilakukan di luar ACK. Selain itu, ACK melakukan rekonsiliasi berkala dengan periode sinkronisasi ulang 10 jam. Perubahan pada sumber daya Kubernetes memicu rekonsiliasi segera, sementara deteksi penyimpangan pasif dari perubahan AWS sumber daya hulu 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 penyimpangan

Untuk informasi lebih lanjut tentang cara kerja ACK, lihat Rekonsiliasi ACK di situs web 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.

  • Si ap: Menunjukkan sumber daya siap dikonsumsi (kondisi Kubernetes standar).

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

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

  • 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 penasihat tentang sumber daya.

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

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

  • ACK.IAMRoleSelected: Menunjukkan apakah IAMRoleSelector a 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 informasi lebih lanjut tentang status dan kondisi ACK, lihat Kondisi ACK di situs web ACK.

Kebijakan penghapusan

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

Hapus (default)

Sumber AWS daya dihapus saat 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 akan menghapusnya dari Kubernetes tetapi meninggalkan bucket S3. AWS

retainKebijakan ini berguna untuk database produksi yang seharusnya 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 tempat Anda mengadopsi sumber daya, mengonfigurasinya, lalu melepaskannya kembali ke manajemen manual.

Untuk informasi selengkapnya tentang kebijakan penghapusan ACK, lihat Kebijakan Penghapusan ACK di situs web 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 AWS sumber daya yatim piatu jika terjadi penghapusan sumber daya yang tidak disengaja di Kubernetes

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

Bagaimana adopsi bekerja:

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 bucket 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 AWS daya kecuali Anda menggunakan kebijakan penghapusan. retain

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

Untuk informasi selengkapnya tentang adopsi sumber daya ACK, lihat Adopsi Sumber Daya ACK di situs web ACK.

Cross-account dan sumber daya lintas wilayah

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

Cross-region anotasi sumber daya

Anda dapat menentukan wilayah sumber AWS 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 semua sumber AWS daya yang dibuat dalam namespace tertentu:

Anotasi namespace

Tetapkan wilayah default untuk semua sumber daya dalam 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.

Cross-account

Gunakan Pemilih 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 Pemilih Peran IAM, lihat Manajemen Sumber Cross-Account Daya ACK. Untuk detail konfigurasi lintas akun, lihatKonfigurasikan izin ACK.

Penanganan kesalahan dan perilaku coba lagi

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

Strategi coba lagi:

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

  • Backoff eksponensial mencegah API yang berlebihan AWS

  • 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 baru-baru ini, dan message bidang dalam kondisi status yang menjelaskan kegagalan. Kesalahan umum termasuk izin IAM yang tidak mencukupi, konflik nama sumber daya AWS, nilai konfigurasi tidak valid dispec, dan kuota AWS layanan terlampaui.

Untuk mengatasi kesalahan umum, lihatMemecahkan 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 menentukan kelompok sumber daya, meneruskan konfigurasi antar sumber daya untuk mengelola pola infrastruktur yang kompleks secara sederhana.

Untuk contoh terperinci tentang membuat komposisi sumber daya khusus dengan sumber daya ACK, lihatkonsep kro.

Langkah selanjutnya