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.
Topik
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.shAWS_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.
Topik
Menambahkan argumen kubelet
tambahan
AWS Batch mendukung penambahan argumen tambahan ke kubelet
perintah. Untuk daftar parameter yang didukung, lihat kubelet
ditambahkan ke baris --node-labels mylabel=helloworld
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 containerd
catatan
Variabel CONTAINER_RUNTIME
lingkungan setara dengan --container-runtime
opsibootstrap.sh
. Untuk informasi lebih lanjut, lihat Options
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
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.