通过ACK One主控实例,您可以使用和单集群相同的方式创建TensorFlow任务。由主控实例根据TensorFlow任务需要的资源和关联集群的剩余资源,执行动态调度策略,选择适合的关联集群下发TensorFlow任务。本文介绍如何创建TensorFlow任务并查看任务状态。
操作步骤
- 开发者用户使用以下YAML文件,在主控实例上创建任务。
示例的命名空间为
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"
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"
- 执行以下命令,在主控实例上获取任务的调度结果。
如果调度失败,则显示为空。请检查是否正确配置命名空间与配额,请参见
管理命名空间与配额。如果命名空间配置配额或者配额用完,任务将暂停调度。
kubectl get tfjob dist-mnist-for-e2e-test -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
- 查看TensorFlow任务的状态。
- 执行以下命令,在主控实例上获取任务的运行状态。
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
...