下图描述了 AWS Batch 如何与 EKS 集成:
master endpoint
进行通信我们将配置 AWS Batch 以与 EKS 集群一起使用。
创建描述 Batch 计算环境的 JSON 文件:
cat <<EOF > ./batch-eks-compute-environment.json
{
"computeEnvironmentName": "${BATCH_EKS_CE_NAME}",
"type": "MANAGED",
"state": "ENABLED",
"eksConfiguration": {
"eksClusterArn": "${EKS_CLUSTER_ARN}",
"kubernetesNamespace": "${BATCH_EKS_NAMESPACE}"
},
"computeResources": {
"type": "EC2",
"allocationStrategy": "BEST_FIT_PROGRESSIVE",
"minvCpus": 0,
"maxvCpus": 32,
"instanceTypes": [
"m5",
"c5",
"m6i",
"c6i"
],
"subnets": [
"${SUBNET_IDS[0]}",
"${SUBNET_IDS[1]}",
"${SUBNET_IDS[2]}"
],
"securityGroupIds": [
"${SECURITY_GROUP_ID}"
],
"instanceRole": "${EKS_NODE_IAM_PROFILE_ARN}"
}
}
EOF
使用 AWS CLI 创建计算环境:
aws batch create-compute-environment --cli-input-json file://./batch-eks-compute-environment.json
应该看到一条返回计算环境 ARN 的消息。
{
"computeEnvironmentName": "batch4eks-cluster-abc12345-CE1",
"computeEnvironmentArn": "arn:aws:batch:us-east-1:111111111111:compute-environment/batch4eks-cluster-abc12345-CE1"
}
可以使用以下命令查看所有计算环境详细信息。
aws batch describe-compute-environments --compute-environments $BATCH_EKS_CE_NAME
在控制台中也能查看计算环境(Compute environments
):
最后,创建一个作业队列以将工作提交到Batch
cat <<EOF > ./batch-eks-job-queue.json
{
"jobQueueName": "${BATCH_EKS_JQ_NAME}",
"priority": 10,
"computeEnvironmentOrder": [
{
"order": 1,
"computeEnvironment": "${BATCH_EKS_CE_NAME}"
}
]
}
EOF
使用 AWS CLI 创建作业队列
aws batch create-job-queue --cli-input-json file://./batch-eks-job-queue.json
应该看到类似以下内容
{
"jobQueueName": "",
"jobQueueArn": "arn:aws:batch:us-east-1:111111111111:job-queue/batch4eks-cluster-abc12345-JQ1"
}
在控制台中也能查看Job queues
:
现在,已完成所有准备工作,我们为AWS Batch 创建了计算环境
和作业队列
,并让它后续提交到EKS 集群来运行作业。