View a markdown version of this page

Memulai dengan AWS Batch di Amazon EKS menggunakan ConfigMap otentikasi - AWS Batch

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 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 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.

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 --name my-cluster-name --region region-code

Dalam perintah sebelumnya ganti:

  • Ganti my-cluster-name dengan nama yang ingin Anda gunakan untuk cluster Anda.

  • Ganti region-code dengan Wilayah AWS untuk membuat cluster di, misalnya us-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.

  1. Buat namespace khusus untuk AWS Batch pekerjaan

    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 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-role rules: - 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-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
  3. 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-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
  4. Perbarui Kubernetes aws-auth peta 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 \ --cluster my-cluster-name \ --arn "arn:aws:iam::<your-account-number>:role/AWSServiceRoleForBatch" \ --username aws-batch

    Output:

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

    Jalannya aws-service-role/batch.amazonaws.com/ telah dihapus dari ARN dari peran terkait layanan. Ini karena masalah dengan aws-auth peta 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 subnets menjalankan eksctl get cluster my-cluster-name untuk mendapatkan subnet yang digunakan oleh cluster.

  • Untuk securityGroupIds parameter Anda dapat menggunakan grup keamanan yang sama dengan cluster Amazon EKS. Perintah ini mengambil ID grup keamanan untuk cluster.

    $ aws eks describe-cluster \ --name my-cluster-name \ --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  • Yang instanceRole dibuat saat Anda membuat cluster. Untuk menemukan instanceRole daftar semua entitas yang menggunakan AmazonEKSWorkerNodePolicy kebijakan:

    $ aws iam list-entities-for-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy

    Nama peran kebijakan berisi nama cluster yang Anda buat eksctl-my-cluster-name-nodegroup-example.

    Untuk menemukan instanceRole arn jalankan perintah berikut:

    $ aws iam list-instance-profiles-for-role --role-name eksctl-my-cluster-name-nodegroup-example

    Output:

    INSTANCEPROFILES arn:aws:iam::<your-account-number>:instance-profile/eks-04cb2200-94b9-c297-8dbe-87f12example

    Untuk 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

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-environments My-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

Langkah 6: Kirim pekerjaan

Jalankan yang berikut AWS CLI perintah untuk mengirimkan pekerjaan baru.

$ aws batch submit-job --job-queue My-Eks-JQ1 \ --job-definition MyJobOnEks_Sleep --job-name My-Eks-Job1

Untuk memeriksa status Pekerjaan:

$ aws batch describe-jobs --job <jobId-from-submit-response>
Catatan

Langkah 7: Melihat keluaran Pekerjaan

Untuk melihat output Pekerjaan, lakukan hal berikut:

  1. Buka AWS Batch konsol di https://console.aws.amazon.com/batch/.

  2. Di panel navigasi pilih Lowongan Kerja.

  3. Di Antrian pekerjaan drop down pilih antrian pekerjaan yang Anda buat untuk tutorial.

  4. 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.

  5. 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 melihat output Pekerjaan, lakukan hal berikut:

  1. Buka AWS Batch konsol di https://console.aws.amazon.com/batch/.

  2. Di panel navigasi pilih Lowongan Kerja.

  3. Di Antrian pekerjaan drop down pilih antrian pekerjaan yang Anda buat untuk tutorial.

  4. 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.

  5. Di Rincian pilih panel Nama aliran log. The CloudWatch konsol untuk Pekerjaan akan terbuka dan harus ada satu acara dengan Pesan dari hello world atau 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:

  1. Buka AWS Batch konsol di https://console.aws.amazon.com/batch/.

  2. Di panel navigasi pilih Antrian pekerjaan.

  3. Di Antrian pekerjaan tabel pilih antrian pekerjaan yang Anda buat untuk tutorial.

  4. Pilih Disable (Nonaktifkan). Setelah antrian pekerjaan negara bagian Dinonaktifkan Anda dapat memilih Hapus.

  5. Setelah antrian pekerjaan dihapus, di panel navigasi pilih Lingkungan komputasi.

  6. Pilih lingkungan komputasi yang Anda buat untuk tutorial ini dan kemudian pilih Nonaktifkan. Mungkin diperlukan 1-2 menit agar lingkungan komputasi selesai dinonaktifkan.

  7. 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::