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 | grepmy-unique-bucket-name-12345
Hapus sumber daya Kubernetes:
kubectl delete bucket my-test-bucket
Verifikasi bucket telah dihapus dari AWS:
aws s3 ls | grepmy-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
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:
-
Anda membuat atau memperbarui sumber daya kustom Kubernetes (misalnya, S3 Bucket)
-
ACK mendeteksi perubahan dan membandingkan keadaan yang diinginkan dengan keadaan sebenarnya di AWS
-
Jika berbeda, ACK membuat panggilan AWS API untuk merekonsiliasi perbedaan
-
ACK memperbarui status sumber daya di Kubernetes untuk mencerminkan status saat ini
-
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:
-
Memeriksa apakah bucket ada di AWS
-
Jika tidak, panggilan
s3:CreateBucket -
Memperbarui status Kubernetes dengan bucket ARN dan state
-
Melanjutkan pemantauan untuk penyimpangan
Untuk informasi 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.
-
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
AWSResourceReferencebidang 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
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
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:
-
ACK memeriksa apakah bucket dengan nama itu ada di AWS
-
Jika ditemukan, ACK mengadopsinya (tidak ada panggilan API untuk dibuat)
-
ACK membaca konfigurasi saat ini dari AWS
-
ACK memperbarui status Kubernetes untuk mencerminkan keadaan sebenarnya
-
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
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.
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
-
Pertimbangan ACK untuk EKS- EKS-specific pola dan strategi integrasi