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 | 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 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:
-
Anda membuat atau memperbarui sumber daya kustom Kubernetes (misalnya, Bucket S3)
-
ACK mendeteksi perubahan dan membandingkan keadaan yang diinginkan dengan status aktual di AWS
-
Jika berbeda, ACK membuat panggilan AWS API untuk mendamaikan perbedaannya
-
ACK memperbarui status sumber daya di Kubernetes untuk mencerminkan status saat ini
-
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:
-
Memeriksa apakah bucket ada di AWS
-
Jika tidak, panggilan
s3:CreateBucket -
Memperbarui status Kubernetes dengan bucket ARN dan state
-
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
AWSResourceReferencebidang 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:
-
ACK memeriksa apakah ember 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 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
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
-
Pertimbangan ACK untuk EKS- Pola dan strategi integrasi khusus EKS