Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Tutorial: Memulai dengan AWS Batch di Amazon EKS

Mode fokus
Tutorial: Memulai dengan AWS Batch di Amazon EKS - AWS Batch

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

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

AWS Batch di Amazon EKS adalah layanan terkelola untuk penjadwalan dan penskalaan beban kerja batch ke dalam klaster Amazon yang ada. EKS AWS Batch tidak membuat, mengelola, atau menjalankan operasi siklus hidup EKS klaster Amazon Anda atas nama Anda. AWS Batch skala orkestrasi naik dan turun node yang dikelola oleh AWS Batch dan menjalankan pod pada node tersebut.

AWS Batch tidak menyentuh node, grup node penskalaan otomatis, atau siklus hidup pod yang tidak terkait dengan AWS Batch lingkungan komputasi dalam klaster Amazon Anda. EKS AWS Batch Agar dapat beroperasi secara efektif, peran terkait layanannya perlu Kubernetes izin kontrol akses berbasis peran (RBAC) di klaster Amazon Anda yang ada. EKS Untuk informasi selengkapnya, lihat Menggunakan RBAC Otorisasi di Kubernetes dokumentasi.

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 klaster Anda yang lain.

Setelah AWS Batch diberi RBAC akses dan namespace telah dibuat, Anda dapat mengaitkan EKS klaster Amazon tersebut ke lingkungan AWS Batch komputasi menggunakan operasi. CreateComputeEnvironmentAPI Antrian pekerjaan dapat dikaitkan dengan lingkungan EKS komputasi Amazon baru ini. AWS Batch pekerjaan dikirimkan ke antrian pekerjaan berdasarkan definisi EKS pekerjaan Amazon menggunakan SubmitJobAPIoperasi. AWS Batch kemudian meluncurkan node yang AWS Batch dikelola dan menempatkan pekerjaan dari antrian pekerjaan sebagai Kubernetes pod ke dalam EKS cluster yang terkait dengan lingkungan AWS Batch komputasi.

Bagian berikut mencakup cara menyiapkan AWS Batch di AmazonEKS.

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 EKS sumber daya Amazon.

  • AWS CLI— Alat baris perintah untuk bekerja dengan AWS layanan, termasuk AmazonEKS. 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 selengkapnya, lihat Konfigurasi cepat dengan aws configure di Panduan AWS Command Line Interface Pengguna.

  • kubectl— Alat baris perintah untuk bekerja dengan Kubernetes klaster. Panduan ini mengharuskan Anda menggunakan versi 1.23 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menginstal atau memperbarui kubectl di Panduan EKS Pengguna Amazon.

  • eksctl— Alat baris perintah untuk bekerja dengan EKS cluster Amazon yang mengotomatiskan banyak tugas individu. Panduan ini mengharuskan Anda menggunakan versi 0.115.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menginstal atau memperbarui eksctl di Panduan EKS Pengguna Amazon.

  • IAMIzin yang diperlukan — Prinsip IAM keamanan yang Anda gunakan harus memiliki izin untuk bekerja dengan EKS IAM peran Amazon dan peran terkait layanan AWS CloudFormation, serta sumber daya yang VPC terkait. Untuk informasi selengkapnya, lihat Kunci tindakan, sumber daya, dan 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.

  • Membuat EKS klaster Amazon — Untuk informasi selengkapnya, lihat Memulai Amazon EKS — eksctl di Panduan EKS Pengguna Amazon.

    catatan

    AWS Batch hanya mendukung EKS klaster Amazon dengan titik akhir API server yang memiliki akses publik, dapat diakses oleh internet publik. Secara default, titik akhir API server EKS cluster Amazon memiliki akses publik. Untuk informasi selengkapnya, lihat Kontrol akses titik akhir EKS klaster Amazon di Panduan EKS Pengguna Amazon.

    catatan

    AWS Batch tidak menyediakan orkestrasi node terkelola untuk Core DNS atau pod penerapan lainnya. Jika Anda membutuhkan CoreDNS, lihat Menambahkan EKS add-on Core DNS Amazon di Panduan EKS Pengguna Amazon. Atau, gunakan eksctl create cluster create untuk membuat cluster, itu termasuk Core secara DNS default.

  • Izin — Pengguna yang memanggil CreateComputeEnvironmentAPIoperasi untuk membuat lingkungan komputasi yang menggunakan EKS sumber daya Amazon memerlukan izin untuk operasi. eks:DescribeCluster API Menggunakan AWS Management Console untuk membuat sumber daya komputasi menggunakan sumber EKS daya Amazon memerlukan izin untuk keduanya daneks:DescribeCluster. eks:ListClusters

Siapkan EKS cluster Amazon Anda AWS Batch

Semua langkah diperlukan.

  1. Buat namespace khusus untuk pekerjaan AWS Batch

    Gunakan kubectl untuk membuat namespace baru.

    $ namespace=my-aws-batch-namespace $ cat - <<EOF | kubectl create -f - { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "${namespace}", "labels": { "name": "${namespace}" } } } EOF

    Output:

    namespace/my-aws-batch-namespace created
  2. Aktifkan akses melalui kontrol akses berbasis peran () RBAC

    Gunakan kubectl untuk membuat Kubernetes peran untuk cluster untuk memungkinkan AWS Batch untuk menonton node dan pod, dan untuk mengikat peran. Anda harus melakukan ini sekali untuk setiap EKS cluster.

    catatan

    Untuk informasi selengkapnya tentang penggunaan RBAC otorisasi, lihat Menggunakan RBAC Otorisasi di Kubernetes Panduan Pengguna.

    $ cat - <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aws-batch-cluster-role rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["get"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] - 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-binding subjects: - kind: User name: aws-batch apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aws-batch-cluster-role apiGroup: rbac.authorization.k8s.io EOF

    Output:

    clusterrole.rbac.authorization.k8s.io/aws-batch-cluster-role created clusterrolebinding.rbac.authorization.k8s.io/aws-batch-cluster-role-binding created

    Buat cakupan ruang nama Kubernetes berperan AWS Batch untuk mengelola dan mendaur 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-role namespace: ${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-binding namespace: ${namespace} subjects: - kind: User name: aws-batch apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: aws-batch-compute-environment-role apiGroup: rbac.authorization.k8s.io EOF

    Output:

    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 RBAC izin sebelumnya ke peran terkait layanan. AWS Batch

    $ eksctl create iamidentitymapping \ --cluster my-cluster-name \ --arn "arn:aws:iam::<your-account>:role/AWSServiceRoleForBatch" \ --username aws-batch

    Output:

    2022-10-25 20:19:57 [ℹ] adding identity "arn:aws:iam::<your-account>:role/AWSServiceRoleForBatch" to auth ConfigMap
    catatan

    Jalur aws-service-role/batch.amazonaws.com/ telah dihapus ARN dari peran terkait layanan. Ini karena masalah dengan peta aws-auth konfigurasi. Untuk informasi selengkapnya, lihat Peran dengan jalur tidak berfungsi saat jalur disertakan ARN dalam jalur aws-authconfigmap.

Buat lingkungan EKS komputasi Amazon

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 instans sumber daya komputasi (Kubernetes node) dalam EKS cluster Amazon Anda. Ini didasarkan pada spesifikasi sumber daya komputasi yang Anda tentukan ketika membuat lingkungan komputasi. Anda dapat menggunakan Instans EC2 Sesuai Permintaan atau Instans EC2 Spot.

Sekarang itu AWSServiceRoleForBatchperan terkait layanan memiliki akses ke EKS klaster Amazon Anda, Anda dapat membuat AWS Batch sumber daya. Pertama, buat lingkungan komputasi yang mengarah ke EKS cluster Amazon Anda.

$ cat <<EOF > ./batch-eks-compute-environment.json { "computeEnvironmentName": "My-Eks-CE1", "type": "MANAGED", "state": "ENABLED", "eksConfiguration": { "eksClusterArn": "arn:aws:eks:<region>:123456789012:cluster/<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
  • serviceRoleParameter tidak boleh ditentukan, maka peran AWS Batch terkait layanan akan digunakan. AWS Batch di Amazon EKS hanya mendukung peran AWS Batch terkait layanan.

  • HanyaBEST_FIT_PROGRESSIVE,SPOT_CAPACITY_OPTIMIZED, dan strategi SPOT_PRICE_CAPACITY_OPTIMIZED alokasi yang didukung untuk lingkungan EKS komputasi Amazon.

    catatan

    Kami menyarankan Anda menggunakan SPOT_PRICE_CAPACITY_OPTIMIZED daripada SPOT_CAPACITY_OPTIMIZED dalam kebanyakan kasus.

  • Untuk mengetahuiinstanceRole, lihat Membuat IAM peran EKS node Amazon dan Mengaktifkan akses IAM utama ke klaster Anda di Panduan EKS Pengguna Amazon. Jika Anda menggunakan jaringan pod, lihat Mengonfigurasi VPC CNI plugin Amazon untuk Kubernetes untuk menggunakan IAM peran untuk akun layanan di Panduan EKS Pengguna Amazon.

  • Cara untuk mendapatkan subnet yang berfungsi untuk subnets parameter ini adalah dengan menggunakan subnet publik grup node EKS terkelola Amazon yang dibuat oleh eksctl saat membuat klaster AmazonEKS. Jika tidak, gunakan subnet yang memiliki jalur jaringan yang mendukung penarikan gambar.

  • securityGroupIdsParameter dapat menggunakan grup keamanan yang sama dengan EKS cluster Amazon. Perintah ini mengambil ID grup keamanan untuk cluster.

    $ eks describe-cluster \ --name <cluster-name> \ --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  • Pemeliharaan lingkungan EKS komputasi Amazon adalah tanggung jawab bersama. Untuk informasi selengkapnya, lihat Tanggung jawab bersama dari Kubernetes simpul.

penting

Penting untuk memastikan bahwa lingkungan komputasi sehat sebelum melanjutkan. DescribeComputeEnvironmentsAPIOperasi dapat digunakan untuk melakukan ini.

$ aws batch describe-compute-environments --compute-environments My-Eks-CE1

Konfirmasikan bahwa status parameternya tidakINVALID. Jika ya, lihat statusReason parameter penyebabnya. Untuk informasi selengkapnya, lihat Pemecahan masalah AWS Batch.

Buat antrian pekerjaan dan lampirkan lingkungan komputasi

$ aws batch describe-compute-environments --compute-environments My-Eks-CE1

Pekerjaan yang dikirimkan ke antrean pekerjaan baru ini dijalankan sebagai pod pada node AWS Batch terkelola yang bergabung dengan EKS klaster Amazon 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

Buat definisi pekerjaan

$ 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

Mengirim tugas

$ aws batch submit-job --job-queue My-Eks-JQ1 \ --job-definition MyJobOnEks_Sleep --job-name My-Eks-Job1 $ aws batch describe-jobs --job <jobId-from-submit-response>
Catatan

(Opsional) Kirim pekerjaan dengan penggantian

Pekerjaan ini mengesampingkan perintah yang diteruskan ke wadah.

$ 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
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.