Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan AWS Batch di Amazon EKS menggunakan ConfigMap otentikasi
AWS Batch di Amazon EKS adalah layanan terkelola untuk menjadwalkan dan menskalakan beban kerja batch ke cluster Amazon EKS yang ada. AWS Batch tidak membuat, mengelola, atau melakukan operasi siklus hidup cluster Amazon EKS Anda atas nama Anda. AWS Batch orkestrasi menskalakan node ke atas dan ke bawah yang dikelola oleh AWS Batch dan jalankan pod pada node tersebut.
ConfigMap-based otentikasi tidak digunakan lagi
Yang aws-auth ConfigMap modus otentikasi (CONFIG_MAP) tidak digunakan lagi dan telah digantikan oleh API entri akses Amazon EKS dengan cluster Amazon EKS authenticationMode setel ke API atau API_AND_CONFIG_MAP.
Jika cluster Anda mendukung entri akses (authenticationMode adalah API atau API_AND_CONFIG_MAP), kami sangat menyarankan menggunakan metode entri akses sebagai gantinya. Lihat Memulai dengan AWS Batch di Amazon EKS untuk pendekatan yang direkomendasikan.
Gunakan ini ConfigMap-based tutorial hanya jika cluster Anda authenticationMode adalah CONFIG_MAP.
AWS Batch tidak menyentuh node, grup node penskalaan otomatis, atau siklus hidup pod yang tidak terkait dengan AWS Batch komputasi lingkungan dalam cluster Amazon EKS Anda. Untuk AWS Batch Untuk beroperasi secara efektif, peran terkait layanan keperluan Kubernetes izin kontrol akses berbasis peran (RBAC) di cluster Amazon EKS Anda yang ada. Untuk informasi lebih lanjut, lihat Menggunakan Otorisasi RBAC
AWS Batch membutuhkan Kubernetes namespace di mana ia dapat mencakup pod sebagai AWS Batch pekerjaan ke dalam. Kami merekomendasikan namespace khusus untuk mengisolasi AWS Batch pod dari beban kerja cluster Anda yang lain.
Setelah AWS Batch telah diberikan akses RBAC dan namespace telah dibuat, Anda dapat mengaitkan cluster Amazon EKS tersebut ke AWS Batch lingkungan komputasi menggunakan CreateComputeEnvironment Operasi API. Antrian pekerjaan dapat dikaitkan dengan lingkungan komputasi Amazon EKS baru ini. AWS Batch pekerjaan dikirimkan ke antrian pekerjaan berdasarkan definisi pekerjaan Amazon EKS menggunakan SubmitJob Operasi API. AWS Batch kemudian meluncurkan AWS Batch node yang dikelola dan tempatkan pekerjaan dari antrian pekerjaan sebagai Kubernetes pod ke dalam cluster EKS yang terkait dengan AWS Batch lingkungan komputasi.
Bagian berikut membahas cara menyiapkan AWS Batch di Amazon EKS.
Gambaran umum
Tutorial ini menunjukkan cara mengatur AWS Batch dengan Amazon EKS menggunakan AWS CLI, kubectl dan eksctl.
- Audiens yang Dituju
-
Tutorial ini dirancang untuk administrator sistem dan pengembang yang bertanggung jawab untuk menyiapkan, menguji, dan menerapkan AWS Batch.
- Fitur yang Digunakan
-
Tutorial ini menunjukkan cara menggunakan AWS CLI, untuk:
-
Membuat dan mengonfigurasi lingkungan komputasi Amazon EKS
-
Buat antrian pekerjaan.
-
Buat definisi pekerjaan
-
Membuat dan mengirimkan pekerjaan untuk dijalankan
-
Kirim pekerjaan dengan penggantian
-
- Waktu yang dibutuhkan
-
Diperlukan waktu sekitar 30-40 menit untuk menyelesaikan tutorial ini.
- Pembatasan Regional
-
Tidak ada batasan negara atau regional yang terkait dengan penggunaan solusi ini.
- Biaya Penggunaan Sumber Daya
-
Tidak ada biaya untuk membuat AWS akun. Namun, dengan menerapkan solusi ini, Anda mungkin mengeluarkan sebagian atau semua biaya yang tercantum dalam tabel berikut.
Deskripsi Biaya (dolar AS) Anda dibebankan berdasarkan jam cluster Bervariasi tergantung pada Instance, lihat Harga Amazon EKS
Prasyarat
Sebelum memulai tutorial ini, Anda harus menginstal dan mengkonfigurasi alat dan sumber daya berikut yang Anda butuhkan untuk membuat dan mengelola keduanya AWS Batch dan sumber daya Amazon EKS.
-
AWS CLI — Alat baris perintah untuk bekerja dengan layanan AWS , termasuk Amazon EKS. Panduan ini mengharuskan Anda menggunakan versi 2.8.6 atau yang lebih baru atau 1.26.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menginstal, memperbarui, dan mencopot instalasi AWS CLI di Panduan Pengguna AWS Command Line Interface . Setelah menginstal AWS CLI, kami sarankan Anda juga mengkonfigurasinya. Untuk informasi lebih lanjut, lihat Konfigurasi cepat dengan
aws configuredi AWS Command Line Interface Panduan Pengguna. -
kubectl— Alat baris perintah untuk bekerja dengan Kubernetes kelompok. Panduan ini mengharuskan Anda menggunakan versi1.23atau nanti. Untuk informasi selengkapnya, silakan lihat Menginstal atau memperbaruikubectldi Panduan Pengguna Amazon EKS. -
— Alat baris perintah untuk bekerja dengan cluster Amazon EKS yang mengotomatiskan banyak tugas individu. Panduan ini mengharuskan Anda menggunakan versieksctl0.115.0atau nanti. Untuk informasi selengkapnya, silakan lihat Menginstal atau memperbaruidi Panduan Pengguna Amazon EKS.eksctl -
Izin IAM yang diperlukan — Prinsip keamanan IAM yang Anda gunakan harus memiliki izin untuk bekerja dengan peran IAM Amazon EKS dan peran terkait layanan, CloudFormation, dan VPC dan sumber daya terkait. Untuk informasi lebih lanjut, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon Elastic Kubernetes Service dan Menggunakan peran terkait layanan di Panduan Pengguna IAM. Anda harus menyelesaikan semua langkah dalam panduan ini sebagai pengguna yang sama.
-
Izin — Pengguna memanggil CreateComputeEnvironment Operasi API untuk membuat lingkungan komputasi yang menggunakan sumber daya Amazon EKS memerlukan izin ke
eks:DescribeClusterOperasi API. -
Akun AWS nomor — Anda perlu tahu milikmu Akun AWS ID. Ikuti petunjuk di Melihat Anda Akun AWS ID.
(Opsional) CloudWatch — Untuk memeriksa rincian (Opsional) Kirim pekerjaan dengan penggantian, logging harus dikonfigurasi. Untuk informasi selengkapnya, lihat Gunakan CloudWatch Log untuk memantau pekerjaan AWS Batch Amazon EKS.
Langkah 1: Buat cluster Amazon EKS Anda untuk AWS Batch
penting
Untuk memulai sesederhana dan secepat mungkin, tutorial ini mencakup langkah-langkah dengan pengaturan default. Sebelum membuat untuk penggunaan produksi, kami sarankan Anda membiasakan diri dengan semua pengaturan dan menerapkan dengan pengaturan yang memenuhi kebutuhan Anda.
Setelah Anda menginstal prasyarat, Anda perlu membuat cluster Anda menggunakan eksctl. Membuat cluster dapat memakan waktu antara 10-15 menit.
$eksctl create cluster --namemy-cluster-name--regionregion-code
Dalam perintah sebelumnya ganti:
-
Ganti
my-cluster-namedengan nama yang ingin Anda gunakan untuk cluster Anda. -
Ganti
region-codedengan Wilayah AWS untuk membuat cluster di, misalnyaus-west-2.
Nama cluster dan wilayah diperlukan untuk nanti dalam tutorial ini.
Langkah 2: Siapkan cluster Amazon EKS Anda untuk AWS Batch
Semua langkah diperlukan.
-
Buat namespace khusus untuk AWS Batch pekerjaan
Gunakan
kubectluntuk membuat namespace baru.$namespace=my-aws-batch-namespace$cat - <<EOF | kubectl create -f - { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "${namespace}", "labels": { "name": "${namespace}" } } } EOFOutput:
namespace/my-aws-batch-namespace created -
Aktifkan akses melalui kontrol akses berbasis peran (RBAC)
Gunakan
kubectluntuk membuat Kubernetes peran cluster untuk mengizinkan AWS Batch untuk menonton node dan pod, dan untuk mengikat peran. Anda harus melakukan ini sekali untuk setiap cluster EKS.$cat - <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name:aws-batch-cluster-rolerules: - apiGroups: [""] resources: ["namespaces"] verbs: ["get"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["list"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list", "watch"] - apiGroups: ["apps"] resources: ["daemonsets", "deployments", "statefulsets", "replicasets"] verbs: ["get", "list", "watch"] - apiGroups: ["rbac.authorization.k8s.io"] resources: ["clusterroles", "clusterrolebindings"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name:aws-batch-cluster-role-bindingsubjects: - kind: User name:aws-batchapiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name:aws-batch-cluster-roleapiGroup: rbac.authorization.k8s.io EOFOutput:
clusterrole.rbac.authorization.k8s.io/aws-batch-cluster-role created clusterrolebinding.rbac.authorization.k8s.io/aws-batch-cluster-role-binding created -
Buat ruang nama bercakupan Kubernetes peran untuk AWS Batch untuk mengelola dan siklus hidup pod dan mengikatnya. Anda harus melakukan ini sekali untuk setiap namespace unik.
$namespace=my-aws-batch-namespace$cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name:aws-batch-compute-environment-rolenamespace: ${namespace} rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get", "list", "watch", "delete", "patch"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["get", "list"] - apiGroups: ["rbac.authorization.k8s.io"] resources: ["roles", "rolebindings"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name:aws-batch-compute-environment-role-bindingnamespace: ${namespace} subjects: - kind: User name:aws-batchapiGroup: rbac.authorization.k8s.io roleRef: kind: Role name:aws-batch-compute-environment-roleapiGroup: rbac.authorization.k8s.io EOFOutput:
role.rbac.authorization.k8s.io/aws-batch-compute-environment-role created rolebinding.rbac.authorization.k8s.io/aws-batch-compute-environment-role-binding created -
Perbarui Kubernetes
aws-authpeta konfigurasi untuk memetakan izin RBAC sebelumnya ke AWS Batch peran terkait layanan.Dalam perintah berikut ganti:
-
Ganti
<your-account-number>dengan milikmu Akun AWS nomor.
$eksctl create iamidentitymapping \ --clustermy-cluster-name\ --arn "arn:aws:iam::<your-account-number>:role/AWSServiceRoleForBatch" \ --usernameaws-batchOutput:
2022-10-25 20:19:57 [ℹ] adding identity "arn:aws:iam::<your-account-number>:role/AWSServiceRoleForBatch" to auth ConfigMapcatatan
Jalannya
aws-service-role/batch.amazonaws.com/telah dihapus dari ARN dari peran terkait layanan. Ini karena masalah denganaws-authpeta konfigurasi. Untuk informasi lebih lanjut, lihat Peran dengan jalur tidak berfungsi ketika jalur disertakan dalam ARN mereka di aws-authconfigmap. -
Langkah 3: Buat lingkungan komputasi Amazon EKS
AWS Batch lingkungan komputasi menentukan parameter sumber daya komputasi untuk memenuhi kebutuhan beban kerja batch Anda. Dalam lingkungan komputasi terkelola, AWS Batch membantu Anda mengelola kapasitas dan jenis instance sumber daya komputasi (Kubernetes node) dalam cluster Amazon EKS Anda. Ini didasarkan pada spesifikasi sumber daya komputasi yang Anda tentukan ketika membuat lingkungan komputasi. Anda dapat menggunakan EC2 On-Demand Instans atau Instans Spot EC2.
Sekarang itu AWSServiceRoleForBatch peran terkait layanan memiliki akses ke cluster Amazon EKS Anda, Anda dapat membuat AWS Batch sumber daya. Pertama, buat lingkungan komputasi yang mengarah ke cluster Amazon EKS Anda.
-
Untuk
subnetsmenjalankaneksctl get clusteruntuk mendapatkan subnet yang digunakan oleh cluster.my-cluster-name -
Untuk
securityGroupIdsparameter Anda dapat menggunakan grup keamanan yang sama dengan cluster Amazon EKS. Perintah ini mengambil ID grup keamanan untuk cluster.$aws eks describe-cluster \ --namemy-cluster-name\ --query cluster.resourcesVpcConfig.clusterSecurityGroupId -
Yang
instanceRoledibuat saat Anda membuat cluster. Untuk menemukaninstanceRoledaftar semua entitas yang menggunakanAmazonEKSWorkerNodePolicykebijakan:$aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicyNama peran kebijakan berisi nama cluster yang Anda buat
eksctl-.my-cluster-name-nodegroup-exampleUntuk menemukan
instanceRolearn jalankan perintah berikut:$aws iam list-instance-profiles-for-role --role-name eksctl-my-cluster-name-nodegroup-exampleOutput:
INSTANCEPROFILES arn:aws:iam::<your-account-number>:instance-profile/eks-04cb2200-94b9-c297-8dbe-87f12exampleUntuk informasi lebih lanjut, lihat Membuat peran IAM simpul Amazon EKS dan Mengaktifkan akses utama IAM ke cluster Anda di Panduan Pengguna Amazon EKS. Jika Anda menggunakan jaringan pod, lihat Mengkonfigurasi plugin Amazon VPC CNI untuk Kubernetes untuk menggunakan peran IAM untuk akun layanan di Panduan Pengguna Amazon EKS.
$cat <<EOF > ./batch-eks-compute-environment.json { "computeEnvironmentName": "My-Eks-CE1", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:region-code:your-account-number:cluster/my-cluster-name", "kubernetesNamespace": "my-aws-batch-namespace" }, "computeResources": { "type": "EC2", "allocationStrategy": "BEST_FIT_PROGRESSIVE", "minvCpus": 0, "maxvCpus": 128, "instanceTypes": [ "m5" ], "subnets": [ "<eks-cluster-subnets-with-access-to-internet-for-image-pull>" ], "securityGroupIds": [ "<eks-cluster-sg>" ], "instanceRole": "<eks-instance-profile>" } } EOF
$aws batch create-compute-environment --cli-input-json file://./batch-eks-compute-environment.json
Catatan
-
Pemeliharaan lingkungan komputasi Amazon EKS adalah tanggung jawab bersama. Untuk informasi selengkapnya, lihat Tanggung jawab bersama dari Kubernetes simpul.
Langkah 4: Buat antrian pekerjaan dan lampirkan lingkungan komputasi
penting
Penting untuk memastikan bahwa lingkungan komputasi sehat sebelum melanjutkan. Yang DescribeComputeEnvironments Operasi API dapat digunakan untuk melakukan ini.
$aws batch describe-compute-environments --compute-environmentsMy-Eks-CE1
Konfirmasikan bahwa status Parameternya tidak INVALID. Jika ya, lihatlah statusReason parameter untuk penyebabnya. Untuk informasi selengkapnya, lihat Pemecahan Masalah AWS Batch.
Pekerjaan yang dikirimkan ke antrian pekerjaan baru ini dijalankan sebagai pod pada AWS Batch node terkelola yang bergabung dengan cluster Amazon EKS yang terkait dengan lingkungan komputasi Anda.
$cat <<EOF > ./batch-eks-job-queue.json { "jobQueueName": "My-Eks-JQ1", "priority": 10, "computeEnvironmentOrder": [ { "order": 1, "computeEnvironment": "My-Eks-CE1" } ] } EOF
$aws batch create-job-queue --cli-input-json file://./batch-eks-job-queue.json
Langkah 5: Buat definisi pekerjaan
Definisi Job berikut menginstruksikan pod untuk tidur selama 60 detik.
$cat <<EOF > ./batch-eks-job-definition.json { "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "hostNetwork": true, "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": [ "sleep", "60" ], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ], "metadata": { "labels": { "environment": "test" } } } } } EOF
$aws batch register-job-definition --cli-input-json file://./batch-eks-job-definition.json
Catatan
-
Ada pertimbangan untuk
cpudanmemoryparameter. Untuk informasi selengkapnya, lihat Pertimbangan memori dan vCPU untuk AWS Batch di Amazon EKS.
Langkah 6: Kirim pekerjaan
Jalankan yang berikut AWS CLI perintah untuk mengirimkan pekerjaan baru.
$aws batch submit-job --job-queueMy-Eks-JQ1\ --job-definitionMyJobOnEks_Sleep--job-nameMy-Eks-Job1
Untuk memeriksa status Pekerjaan:
$aws batch describe-jobs --job<jobId-from-submit-response>
Catatan
-
Untuk informasi selengkapnya tentang menjalankan pekerjaan di sumber daya Amazon EKS, lihat Lowongan kerja Amazon EKS.
Langkah 7: Melihat keluaran Pekerjaan
Untuk melihat output Pekerjaan, lakukan hal berikut:
-
Buka AWS Batch konsol di https://console.aws.amazon.com/batch/
. -
Di panel navigasi pilih Lowongan Kerja.
-
Di Antrian pekerjaan drop down pilih antrian pekerjaan yang Anda buat untuk tutorial.
-
Yang Lowongan Kerja tabel mencantumkan semua Pekerjaan Anda dan apa statusnya saat ini. Setelah pekerjaan Status adalah Berhasil pilih Nama dari pekerjaan,
My-Eks-Job1, untuk melihat detail Pekerjaan. -
Di Rincian panel Dimulai pada dan Berhenti di waktu harus terpisah satu menit.
Langkah 8: (Opsional) Kirim pekerjaan dengan penggantian
Pekerjaan ini mengesampingkan perintah yang diteruskan ke container. AWS Batch secara agresif membersihkan pod setelah pekerjaan selesai untuk mengurangi beban menjadi Kubernetes. Untuk memeriksa detail pekerjaan, logging harus dikonfigurasi. Untuk informasi selengkapnya, lihat Gunakan CloudWatch Log untuk memantau pekerjaan AWS Batch Amazon EKS.
$cat <<EOF > ./submit-job-override.json { "jobName": "EksWithOverrides", "jobQueue": "My-Eks-JQ1", "jobDefinition": "MyJobOnEks_Sleep", "eksPropertiesOverride": { "podProperties": { "containers": [ { "command": [ "/bin/sh" ], "args": [ "-c", "echo hello world" ] } ] } } } EOF
$aws batch submit-job --cli-input-json file://./submit-job-override.json
Catatan
-
Untuk meningkatkan visibilitas ke detail operasi, aktifkan pencatatan pesawat kontrol Amazon EKS. Untuk informasi lebih lanjut, lihat Amazon EKS mengontrol pencatatan pesawat di Panduan Pengguna Amazon EKS.
-
Daemonsets dan kubelets overhead mempengaruhi sumber daya vCPU dan memori yang tersedia, khususnya penskalaan dan penempatan pekerjaan. Untuk informasi selengkapnya, lihat Pertimbangan memori dan vCPU untuk AWS Batch di Amazon EKS.
Untuk melihat output Pekerjaan, lakukan hal berikut:
-
Buka AWS Batch konsol di https://console.aws.amazon.com/batch/
. -
Di panel navigasi pilih Lowongan Kerja.
-
Di Antrian pekerjaan drop down pilih antrian pekerjaan yang Anda buat untuk tutorial.
-
Yang Lowongan Kerja tabel mencantumkan semua Pekerjaan Anda dan apa statusnya saat ini. Setelah pekerjaan Status adalah Berhasil pilih Nama dari Pekerjaan untuk melihat detail Pekerjaan.
-
Di Rincian pilih panel Nama aliran log. The CloudWatch konsol untuk Pekerjaan akan terbuka dan harus ada satu acara dengan Pesan dari
hello worldatau pesan khusus Anda.
Langkah 9: Bersihkan sumber daya tutorial Anda
Anda akan dikenakan biaya untuk instans Amazon EC2 saat diaktifkan. Anda dapat menghapus instans untuk menghentikan tagihan.
Untuk menghapus sumber daya yang Anda buat, lakukan hal berikut:
-
Buka AWS Batch konsol di https://console.aws.amazon.com/batch/
. -
Di panel navigasi pilih Antrian pekerjaan.
-
Di Antrian pekerjaan tabel pilih antrian pekerjaan yang Anda buat untuk tutorial.
-
Pilih Disable (Nonaktifkan). Setelah antrian pekerjaan negara bagian Dinonaktifkan Anda dapat memilih Hapus.
-
Setelah antrian pekerjaan dihapus, di panel navigasi pilih Lingkungan komputasi.
-
Pilih lingkungan komputasi yang Anda buat untuk tutorial ini dan kemudian pilih Nonaktifkan. Mungkin diperlukan 1-2 menit agar lingkungan komputasi selesai dinonaktifkan.
-
Setelah lingkungan komputasi negara bagian Dinonaktifkan, pilih Hapus. Mungkin diperlukan 1-2 menit agar lingkungan komputasi dihapus.
Sumber daya tambahan
Setelah Anda menyelesaikan tutorial, Anda mungkin ingin menjelajahi topik berikut::
-
Pelajari lebih lanjut tentang Praktik terbaik.
-
Jelajahi AWS Batch komponen inti. Untuk informasi selengkapnya, lihat Komponen AWS Batch.
-
Pelajari lebih lanjut tentang yang berbeda Lingkungan Komputasi tersedia di AWS Batch.
-
Pelajari lebih lanjut tentang Antrian pekerjaan dan opsi penjadwalan mereka yang berbeda.
-
Pelajari lebih lanjut tentang Definisi pekerjaan dan opsi konfigurasi yang berbeda.
-
Pelajari lebih lanjut tentang berbagai jenis Lowongan Kerja.