Lingkungan EKS komputasi Amazon - AWS Batch

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

Lingkungan EKS komputasi Amazon

Memulai dengan AWS Batch di Amazon EKSmenyediakan panduan singkat untuk membuat lingkungan EKS komputasi. Bagian ini memberikan detail lebih lanjut tentang lingkungan EKS komputasi Amazon.

AMIPilihan default

Saat membuat lingkungan EKS komputasi Amazon, Anda tidak perlu menentukan Amazon Machine Image (AMI). AWS Batch memilih Amazon yang EKS dioptimalkan AMI berdasarkan Kubernetes versi dan jenis instans yang ditentukan dalam CreateComputeEnvironmentpermintaan Anda. Secara umum, kami menyarankan Anda menggunakan AMI pilihan default. Untuk informasi selengkapnya tentang Amazon yang EKS dioptimalkanAMIs, lihat Amazon yang EKS dioptimalkan Amazon Linux AMIs di Panduan EKS Pengguna Amazon.

Jalankan perintah berikut untuk melihat AMI jenis mana AWS Batch yang dipilih untuk lingkungan EKS komputasi Amazon Anda. Contoh berikut ini adalah tipe GPU non-instance.

# compute CE example: indicates Batch has chosen the AL2 x86 or ARM EKS 1.29 AMI, depending on instance types $ aws batch describe-compute-environments --compute-environments My-Eks-CE1 \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2", "imageKubernetesVersion": "1.29" } ]

Contoh berikut ini adalah tipe GPU instance.

# GPU CE example: indicates Batch has choosen the AL2 x86 EKS Accelerated 1.29 AMI $ aws batch describe-compute-environments --compute-environments My-Eks-GPU-CE \ | jq '.computeEnvironments[].computeResources.ec2Configuration' [ { "imageType": "EKS_AL2_NVIDIA", "imageKubernetesVersion": "1.29" } ]

Versi Kubernetes yang didukung

AWS Batch di Amazon EKS saat ini mendukung Kubernetes versi berikut:

  • 1.30

  • 1.29

  • 1.28

  • 1.27

  • 1.26

  • 1.25

  • 1.24

  • 1.23

Anda mungkin melihat pesan galat yang menyerupai berikut ini ketika Anda menggunakan CreateComputeEnvironment API operasi atau UpdateComputeEnvironment API operasi untuk membuat atau memperbarui lingkungan komputasi. Masalah ini terjadi jika Anda menentukan Kubernetes versi yang tidak didukung diEC2Configuration.

At least one imageKubernetesVersion in EC2Configuration is not supported.

Untuk mengatasi masalah ini, hapus lingkungan komputasi lalu buat ulang dengan versi yang didukungKubernetes.

Anda dapat melakukan upgrade versi minor di EKS klaster Amazon Anda. Misalnya, Anda dapat memutakhirkan cluster dari 1.xx ke 1.yy bahkan jika versi minor tidak didukung.

Namun, status lingkungan komputasi mungkin berubah menjadi INVALID setelah pembaruan versi utama. Misalnya, jika Anda melakukan upgrade versi utama dari 1.xx ke2.yy. Jika versi mayor tidak didukung oleh AWS Batch, Anda akan melihat pesan galat yang menyerupai berikut ini.

reason=CLIENT_ERROR - ... EKS Cluster version [2.yy] is unsupported

Memperbarui Kubernetes versi lingkungan komputasi

Dengan AWS Batch, Anda dapat memperbarui Kubernetes versi lingkungan komputasi untuk mendukung peningkatan EKS klaster Amazon. KubernetesVersi lingkungan komputasi adalah EKS AMI versi Amazon untuk Kubernetes node yang AWS Batch diluncurkan untuk menjalankan pekerjaan. Anda dapat melakukan pemutakhiran Kubernetes versi pada EKS node Amazon mereka sebelum atau setelah memperbarui versi bidang kontrol EKS klaster Amazon. Kami menyarankan Anda memperbarui node setelah memutakhirkan bidang kontrol. Untuk informasi selengkapnya, lihat Memperbarui Kubernetes versi EKS klaster Amazon di Panduan EKS Pengguna Amazon.

Untuk memutakhirkan Kubernetes versi lingkungan komputasi, gunakan UpdateComputeEnvironmentAPIoperasi.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources \ 'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.23}]'

Tanggung jawab bersama dari Kubernetes node

Pemeliharaan lingkungan komputasi adalah tanggung jawab bersama.

  • Jangan mengubah atau menghapus AWS Batch node, label, taint, ruang nama, templat peluncuran, atau grup penskalaan otomatis. Jangan menambahkan taints ke node AWS Batch terkelola. Jika Anda membuat salah satu dari perubahan ini, lingkungan komputasi Anda tidak dapat didukung dan kegagalan termasuk instans idle terjadi.

  • Jangan menargetkan pod Anda ke node AWS Batch terkelola. Jika Anda menargetkan pod Anda ke node terkelola, penskalaan yang rusak dan antrian pekerjaan macet akan terjadi. Jalankan beban kerja yang tidak digunakan AWS Batch pada node yang dikelola sendiri atau grup node terkelola. Untuk informasi selengkapnya, lihat Grup node terkelola di Panduan EKS Pengguna Amazon.

  • Anda dapat menargetkan DaemonSet untuk dijalankan pada node AWS Batch terkelola. Untuk informasi selengkapnya, lihat Menjalankan DaemonSet pada node AWS Batch terkelola.

AWS Batch tidak secara otomatis memperbarui lingkungan AMIs komputasi. Anda bertanggung jawab untuk memperbaruinya. Jalankan perintah berikut untuk memperbarui versi Anda AMIs ke AMI versi terbaru.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources 'updateToLatestImageVersion=true'

AWS Batch tidak secara otomatis memutakhirkan Kubernetes versi. Jalankan perintah berikut untuk memperbarui Kubernetes versi lingkungan komputer Anda 1.23.

$ aws batch update-compute-environment \ --compute-environment <compute-environment-name> \ --compute-resources \ 'ec2Configuration=[{imageType=EKS_AL2,imageKubernetesVersion=1.23}]'

Saat memperbarui ke versi yang lebih baru AMI atau Kubernetes versi, Anda dapat menentukan apakah akan menghentikan pekerjaan saat diperbarui (terminateJobsOnUpdate) dan berapa lama menunggu sebelum instance diganti jika pekerjaan yang sedang berjalan tidak selesai (jobExecutionTimeoutMinutes.) Untuk informasi selengkapnya, lihat Memperbarui lingkungan komputasi dan kebijakan pembaruan infrastruktur (UpdatePolicy) disetel dalam UpdateComputeEnvironmentAPIoperasi.

Menjalankan DaemonSet pada node AWS Batch terkelola

AWS Batch menetapkan taints pada Kubernetes node AWS Batch terkelola. Anda dapat menargetkan DaemonSet untuk dijalankan pada node AWS Batch terkelola dengan yang berikut initolerations.

tolerations: - key: "batch.amazonaws.com/batch-node" operator: "Exists"

Cara lain untuk melakukan ini adalah dengan yang berikut initolerations.

tolerations: - key: "batch.amazonaws.com/batch-node" operator: "Exists" effect: "NoSchedule" - key: "batch.amazonaws.com/batch-node" operator: "Exists" effect: "NoExecute"

Menyesuaikan dengan template peluncuran

AWS Batch di Amazon EKS mendukung template peluncuran. Ada kendala pada apa yang dapat dilakukan template peluncuran Anda.

penting

AWS Batch berjalan/etc/eks/bootstrap.sh. Jangan berjalan /etc/eks/bootstrap.sh di template peluncuran atau cloud-init user-data skrip Anda. Anda dapat menambahkan parameter tambahan selain --kubelet-extra-args parameter ke bootstrap.sh. Untuk melakukan ini, atur AWS_BATCH_KUBELET_EXTRA_ARGS variabel dalam /etc/aws-batch/batch.config file. Lihat contoh berikut untuk detailnya.

catatan

Jika template peluncuran diubah setelah CreateComputeEnvironmentdipanggil, UpdateComputeEnvironmentharus dipanggil untuk mengevaluasi versi template peluncuran untuk penggantian.

Menambahkan argumen kubelet tambahan

AWS Batch mendukung penambahan argumen tambahan ke kubelet perintah. Untuk daftar parameter yang didukung, lihat kubeletdi Kubernetesdokumentasi. Dalam contoh berikut, --node-labels mylabel=helloworld ditambahkan ke baris kubelet perintah.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash mkdir -p /etc/aws-batch echo AWS_BATCH_KUBELET_EXTRA_ARGS=\"--node-labels mylabel=helloworld\" >> /etc/aws-batch/batch.config --==MYBOUNDARY==--

Mengkonfigurasi runtime kontainer

Anda dapat menggunakan variabel AWS Batch CONTAINER_RUNTIME lingkungan untuk mengonfigurasi runtime kontainer pada node terkelola. Contoh berikut menetapkan runtime kontainer ke containerd saat bootstrap.sh berjalan. Untuk informasi lebih lanjut, lihat containerddi Kubernetesdokumentasi.

catatan

Variabel CONTAINER_RUNTIME lingkungan setara dengan --container-runtime opsibootstrap.sh. Untuk informasi lebih lanjut, lihat Optionsdi Kubernetesdokumentasi.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash mkdir -p /etc/aws-batch echo CONTAINER_RUNTIME=containerd >> /etc/aws-batch/batch.config --==MYBOUNDARY==--

Memasang EFS volume Amazon

Anda dapat menggunakan template peluncuran untuk me-mount volume ke node. Dalam contoh berikut, runcmd pengaturan cloud-config packages dan digunakan. Untuk informasi selengkapnya, lihat contoh konfigurasi Cloud dalam cloud-initdokumentasi.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-efs-utils runcmd: - file_system_id_01=fs-abcdef123 - efs_directory=/mnt/efs - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs _netdev,noresvport,tls,iam 0 0" >> /etc/fstab - mount -t efs -o tls ${file_system_id_01}:/ ${efs_directory} --==MYBOUNDARY==--

Untuk menggunakan volume ini dalam pekerjaan, itu harus ditambahkan dalam eksPropertiesparameter ke RegisterJobDefinition. Contoh berikut adalah sebagian besar definisi pekerjaan.

{ "jobDefinitionName": "MyJobOnEks_EFS", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["ls", "-la", "/efs"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } }, "volumeMounts": [ { "name": "efs-volume", "mountPath": "/efs" } ] } ], "volumes": [ { "name": "efs-volume", "hostPath": { "path": "/mnt/efs" } } ] } } }

Di node, EFS volume Amazon dipasang di /mnt/efs direktori. Dalam wadah untuk EKS pekerjaan Amazon, volume dipasang di /efs direktori.

IPv6dukungan

AWS Batch mendukung EKS cluster Amazon yang memiliki IPv6 alamat. Tidak ada penyesuaian yang diperlukan untuk AWS Batch dukungan. Namun, sebelum memulai, sebaiknya Anda meninjau pertimbangan dan ketentuan yang diuraikan dalam Menetapkan IPv6 alamat ke pod dan layanan di Panduan Pengguna Amazon EKS.