通过ACK One Fleet实例,您可以使用和单集群相同的方式创建TensorFlow任务。由Fleet实例根据TensorFlow任务需要的资源和关联集群的剩余资源,执行动态调度策略,选择适合的关联集群下发TensorFlow任务。本文介绍如何创建TensorFlow任务并查看任务状态。
前提条件
Fleet实例默认已安装Training Operator的TensorFlow CRD,支持的TensorFlow CRD APIVersion为kubeflow.org/v1。
Fleet实例管理员可以通过以下命令查看CRD。
kubectl get crd tfjobs.kubeflow.org
如有定制需求,Fleet实例管理员可以修改kubeflow.org_tfjobs.yaml,通过以下命令修改CRD。
kubectl apply -f manifests/base/crds/kubeflow.org_tfjobs.yaml
Fleet实例管理员已下载Training Operator,并在所有关联集群上完成安装。
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
已安装AMC命令行工具。具体操作,请参见AMC命令行帮助。
操作步骤
开发者用户使用以下YAML文件,在Fleet实例上创建任务。
示例的命名空间为
demo
,示例的任务名称为pi
。apiVersion: "kubeflow.org/v1" kind: "TFJob" metadata: name: "dist-mnist-for-e2e-test" namespace: demo spec: tfReplicaSpecs: PS: replicas: 2 restartPolicy: Never template: spec: containers: - name: tensorflow image: acr-multiple-clusters-registry.cn-hangzhou.cr.aliyuncs.com/ack-multiple-clusters/tf-dist-mnist-test:v1.0 resources: requests: memory: "2Gi" cpu: "2" limits: memory: "2Gi" cpu: "2" Worker: replicas: 2 restartPolicy: Never template: spec: containers: - name: tensorflow image: acr-multiple-clusters-registry.cn-hangzhou.cr.aliyuncs.com/ack-multiple-clusters/tf-dist-mnist-test:v1.0 resources: requests: memory: "2Gi" cpu: "2" limits: memory: "2Gi" cpu: "2"
执行以下命令,在Fleet实例上获取任务的调度结果。
如果调度失败,则显示为空。请检查是否正确配置命名空间与配额。如果命名空间配置配额或者配额用完,任务将暂停调度。
kubectl get tfjob dist-mnist-for-e2e-test -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
查看TensorFlow任务的状态。
执行以下命令,在Fleet实例上获取任务的运行状态。
kubectl get tfjob dist-mnist-for-e2e-test -n demo
预期输出:
NAME STATE AGE dist-mnist-for-e2e-test Running ***
执行以下命令获取任务相关Pod的运行状态。
kubectl amc get pod -j tfjob/dist-mnist-for-e2e-test -n demo
预期输出:
Run on ManagedCluster managedcluster-c1***e5 NAME READY STATUS RESTARTS AGE dist-mnist-for-e2e-test-ps-0 1/1 Running 0 *** dist-mnist-for-e2e-test-ps-1 1/1 Running 0 *** dist-mnist-for-e2e-test-worker-0 1/1 Running 0 *** dist-mnist-for-e2e-test-worker-1 1/1 Running 0 ***
执行以下命令获取Pod的运行日志。
kubectl amc logs dist-mnist-for-e2e-test-worker-0 -j tfjob/dist-mnist-for-e2e-test -n demo
预期输出:
Run on ManagedCluster managedcluster-c1***e5 ... Training ends @ *** Training elapsed time: *** s ...