View a markdown version of this page

Konfigurasikan tindakan siklus hidup simpul di AWS PCS - AWS PCS

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

Konfigurasikan tindakan siklus hidup simpul di AWS PCS

Anda menentukan tindakan siklus hidup node dalam konfigurasi grup simpul komputasi Anda. Topik ini menjelaskan cara mendefinisikan skrip, mengontrol apakah skrip berjalan ulang saat reboot, menyimpannya, meneruskan argumen, menangani kegagalan, menyimpan dalam cache, memvalidasi integritasnya, dan membaca lognya.

Persyaratan versi agen

Tindakan siklus hidup node memerlukan agen AWS PCS versi 1.5.0-1 atau yang lebih baru. Jika node komputasi Anda menggunakan AMI kustom dengan versi agen yang lebih lama, perbarui agen sebelum Anda mengonfigurasi tindakan siklus hidup. Untuk informasi selengkapnya, lihat AWS Versi agen PCS.

Cara mendefinisikan skrip

Setiap skrip memilikiname, a scriptSourcearguments, opsional, onError kebijakan, danexecutionPolicy. Bidang lokasi dan integritas dikelompokkan di bawahscriptSource.

{ "name": "My script", "scriptSource": { "scriptLocation": "s3://my-bucket/my-script.sh", "s3VersionId": "optional, S3 only", "checksum": "optional 64-char SHA-256 hex" }, "arguments": ["arg1", "arg2"], "onError": "TERMINATE", "executionPolicy": "FIRST_BOOT_ONLY" }

Menambahkan tindakan siklus hidup ke grup simpul komputasi

Anda dapat menambahkan tindakan siklus hidup saat membuat atau memperbarui grup simpul komputasi. Gunakan Konsol Manajemen AWS atau AWS CLI.

Konsol Manajemen AWS
Untuk menambahkan tindakan siklus hidup menggunakan konsol
  1. Buka konsol AWS PCS.

  2. Buka halaman buat atau perbarui untuk grup simpul komputasi.

  3. Di bagian T indakan siklus hidup Node, pilih Tam bah skrip.

  4. Pilih sumber skrip:

    1. Tambahkan dari pust AWS aka skrip PCS — Referensi skrip AWS yang dikelola. Untuk informasi selengkapnya, lihat Gunakan AWS-skrip yang dipelihara untuk tindakan siklus hidup simpul di AWS PCS.

    2. Tambahkan melalui S3 - Referensikan skrip dengan URI Amazon S3.

    3. Tambahkan melalui HTTPS — Referensikan skrip dengan URL HTTPS-nya.

  5. Pilih tahap simpul.

  6. Untuk skrip yang Anda tambahkan melalui S3 atau HTTPS, tentukan pengaturan ini:

    1. Lokasi skrip — Masukkan URI S3 atau URL HTTPS untuk skrip.

    2. Nama — Masukkan nama untuk skrip.

    3. (Opsional) Checksum — Masukkan SHA-256 checksum untuk memverifikasi integritas skrip. Untuk informasi selengkapnya, lihat Integritas skrip (checksum).

    4. (Opsional) Untuk skrip yang Anda tambahkan melalui S3, masukkan versi untuk mereferensikan versi objek tertentu.

  7. Untuk semua sumber skrip, tentukan pengaturan ini:

    1. Perilaku penanganan kesalahan — Pilih TERMINATESTOP_SEQUENCE,, atauCONTINUE.

    2. Kebijakan eksekusi — Pilih FIRST_BOOT_ONLY atauEVERY_BOOT.

    3. (Opsional) Argum en — Tambahkan argumen untuk diteruskan ke skrip.

  8. Untuk menambahkan lebih banyak skrip, ulangi langkah-langkah ini.

  9. Skrip berjalan dari atas ke bawah dalam tahap. Untuk mengubah urutan eksekusi, pilih Tind akan untuk skrip, lalu pilih Pindah ke atas atau P indahkan ke bawah.

  10. Untuk kebijakan Caching, pilih CACHE_ONCE atauREFRESH_ON_REBOOT. Kebijakan caching berlaku untuk semua skrip. Untuk informasi selengkapnya, lihat Caching skrip dan pembaruan.

AWS CLI

Gunakan --node-lifecycle-actions parameter dengan update-compute-node-group perintah create-compute-node-group atau. Untuk struktur parameter, lihat NodeLifecycleActionsRequest di Referensi API AWS PCS. Misalnya perintah, lihatContoh tindakan siklus hidup simpul untuk AWS PCS.

Mengontrol perilaku reboot

Tetapkan executionPolicy per skrip untuk mengontrol apakah itu berjalan kembali saat reboot.

Nilai

Perilaku

Kapan harus digunakan

FIRST_BOOT_ONLY (default)

Jalankan skrip sekali, pada boot pertama node. Lewati pada setiap reboot berikutnya.

One-time setup, seperti menginstal paket, bergabung dengan domain, atau menginisialisasi penyimpanan. Anda tidak harus membuat skrip ini menjadi idempoten.

EVERY_BOOT

Jalankan skrip pada boot pertama dan pada setiap reboot.

Konfigurasi yang harus diterapkan kembali setelah restart, seperti memasang kembali sistem file sementara atau menegaskan kembali status node.

Skrip diatur untuk FIRST_BOOT_ONLY berjalan sekali dan dilewati saat reboot. Skrip diatur untuk EVERY_BOOT berjalan pada setiap boot dan harus idempotent (aman untuk dijalankan lebih dari sekali dengan hasil yang sama).

Lokasi penyimpanan skrip

Anda dapat menyimpan skrip di Amazon S3 atau menyajikannya melalui HTTPS. Skrip tidak dapat diunggah sebaris melalui API, dan setiap skrip tidak boleh lebih besar dari 2 MiB — agen menolak skrip apa pun yang melebihi ukuran ini.

  • Amazon S3 (s3://bucket/key) — Instans yang harus dimiliki profil IAM s3:GetObject pada objek. Dengan titik akhir VPC gateway S3, node di subnet pribadi dapat mengambil skrip melalui titik akhir VPC. Sematkan versi tertentu dengan scriptSource.s3VersionId (hanya lokasi S3).

  • HTTPS (https://hostname/path) - Host harus dapat dibaca publik (tidak ada otentikasi) dan node memerlukan akses internet keluar (gateway internet, gateway NAT, atau proxy HTTP). Ini berguna untuk skrip yang dihosting di GitHub atau repositori publik lainnya.

Penyimpanan eksternal menyediakan kontrol versi, auditabilitas, dan penggunaan kembali di seluruh tim. Skrip sebaris atau yang diunggah tidak didukung.

Meneruskan argumen ke skrip

Meneruskan argumen sebagai array yang diurutkan. Mereka mencapai skrip Anda sebagai parameter baris perintah posisi.

arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)

Agen mengekspor variabel lingkungan ke setiap skrip. Variabel ini berisi metadata cluster dan node.

Variabel

Deskripsi

PCS_CLUSTER_ID / PCS_CLUSTER_NAME

Pengidentifikasi klaster/nama

PCS_COMPUTE_NODE_GROUP_ID / PCS_COMPUTE_NODE_GROUP_NAME

Hitung pengidentifikasi/nama grup simpul

PCS_NODE_ID

Pengidentifikasi simpul

PCS_IS_FIRST_BOOT

1pada boot pertama node, 0 pada setiap reboot berikutnya. Gunakan untuk perilaku cabang dalam EVERY_BOOT skrip.

#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"

Penanganan kesalahan

Setiap skrip memiliki onError bidang yang mengontrol apa yang terjadi ketika skrip keluar bukan nol atau dimatikan oleh sinyal.

Nilai

Perilaku

Kapan harus digunakan

TERMINATE (default)

Tandai node gagal dan hentikan.

Pengaturan penting (pemasangan penyimpanan, bergabung Active Directory). Mencegah pembayaran untuk node yang rusak.

STOP_SEQUENCE

Hentikan skrip yang tersisa di panggung; biarkan node berjalan.

Debugging — memeriksa instance setelah kegagalan.

CONTINUE

Catat kesalahan dan jalankan skrip berikutnya.

Tugas opsional atau upaya terbaik.

Skrip gagal jika keluar bukan nol atau dimatikan oleh sinyal (misalnya,SIGSEGV). Skrip tidak dicoba lagi. Jika operasi mungkin mengalami kegagalan sementara, tambahkan logika coba lagi di dalam skrip. Namun, pengambilan skrip (unduhan) dicoba ulang — hingga 3 upaya dengan backkoff eksponensial (maksimum sekitar 17 detik) — sebelum perilaku diterapkan. onError

Caching skrip dan pembaruan

Agen mengunduh setiap skrip ke instance pada boot pertama dan menyimpannya secara lokal. Dua bidang mengontrol perilaku saat reboot: scriptCachingPolicy mengontrol pengunduhan ulang dan executionPolicy mengontrol eksekusi ulang.

  • CACHE_ONCE(default) - Unduh sekali pada boot pertama; jangan pernah melakukan refetch. Perilaku identik di seluruh reboot. Memperbarui konten skrip memerlukan penggantian instance.

  • REFRESH_ON_REBOOT— Re-download pada setiap reboot, mengganti cache. Ini memungkinkan Anda mengirimkan perbaikan skrip melalui reboot. Ini membutuhkan akses jaringan pada setiap boot; jika refresh gagal, unduhan diperlakukan sebagai kegagalan pengambilan dan onError perilaku skrip berlaku (tidak ada fallback ke salinan cache). Skrip yang diperbarui hanya benar-benar berjalan kembali saat reboot jika ya. executionPolicy EVERY_BOOT

Konfigurasi siklus hidup (skrip mana yang dijalankan, argumennya, penanganan kesalahan, dan kebijakan eksekusi) selalu tidak dapat diubah per instance. Mengubahnya hanya UpdateComputeNodeGroup memengaruhi instance baru dan memicu DRAIN strategi sehingga menjalankan tugas selesai sebelum node diganti.

Integritas skrip (checksum)

Secara opsional berikan a SHA-256 checksum dalam skripscriptSource, sebagai string heksadesimal 64 karakter. Agen memvalidasinya saat mengunduh; ketidakcocokan diperlakukan sebagai kegagalan unduhan dan pemicu. onError Kami merekomendasikan checksum untuk produksi, terutama untuk skrip dari sumber bersama atau eksternal.

sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value

Logging dan debugging

Setiap skrip menulis ke file lognya sendiri, dan agen menyimpan log operasionalnya sendiri.

# agent: download, caching, checksum, orchestration /var/log/amazon/pcs/lifecycle/actions/executor.log # each script's stdout/stderr /var/log/amazon/pcs/lifecycle/actions/<stage>/<script-name>.log

Nama file log menggunakan nama skrip seperti yang Anda tetapkan. Ruang dipertahankan. Misalnya, skrip bernama Mount EFS home directory write toMount EFS home directory.log. Terhubung dengan SSH atau AWS Systems Manager Session Manager untuk membacanya - keduanya tersedia di pang nodeBootstrapped gung. Karena node yang gagal diganti, TERMINATE teruskan log di luar instans untuk debugging setelah penghentian: tambahkan skrip bootstrap node yang mengonfigurasi CloudWatch agen Amazon untuk mengirimkan direktori log siklus hidup ke Amazon Logs. CloudWatch configure-cloudwatch-logs.shSkrip AWS-melakukan ini. Lihat informasi yang lebih lengkap di Gunakan AWS-skrip yang dipelihara untuk tindakan siklus hidup simpul di AWS PCS.