跨多个平台启动应用程序
Spring Cloud Data Flow 允许您从单个实例协调在不同平台上启动应用程序。平台是可以启动应用程序的位置。对于本文档,平台可以是 Kubernetes 集群和命名空间、Cloud Foundry 组织和空间,或物理服务器。本文档的目的是展示几种利用跨多个平台部署的方法。
跨多个 Kubernetes 命名空间启动任务
下图显示了跨命名空间启动任务的常见场景
配置 Spring Cloud Data Flow 和设置环境
- 下载 SCDF 存储库,如使用 kubectl 部署中所述。但是,在继续执行“
选择消息代理
”部分之前,我们需要创建命名空间并将平台配置添加到 Spring Cloud Data Flow。 - 运行以下命令创建
practice
命名空间(系统已为您创建default
命名空间)
kubectl create namespace practice
- 配置 Spring Cloud Data Flow 使用的平台。使用文本编辑器打开
<{>SCDF Dir>/src/kubernetes/server/server-deployment.yaml
文件,并将SPRING_APPLICATION_JSON
属性替换为以下值
- name: SPRING_APPLICATION_JSON
value: '{ "maven": { "local-repository": null, "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-snapshot"} } },"spring.cloud.dataflow.task":{"platform.kubernetes.accounts":{"default":{"namespace" : "default"},"practice":{"namespace" : "practice"}}} }'
- 继续按照说明操作,从选择消息代理步骤开始,直到完成所有步骤。
- 要让 Spring Cloud Data Flow 在多个命名空间中启动任务,需要更新 Spring Cloud Data Flow 服务的 RBAC 策略。为此,请运行以下命令
kubectl create clusterrolebinding scdftestrole --clusterrole cluster-admin --user=system:serviceaccount:default:scdf-sa
为scdf-sa
用户将集群角色设置为cluster-admin
不建议在生产环境中使用,但在本例中,它仅用于演示目的。
注册预构建任务
本练习使用 Spring Cloud Data Flow 提供的预构建时间戳应用程序。如果您尚未注册预构建的任务应用程序,
- 请在浏览器中打开 Spring Cloud Data Flow UI。
- 单击页面左侧的 **应用程序** 选项卡。
- 单击页面顶部的 **添加应用程序** 按钮。
- 出现 **添加应用程序** 页面时,单击“从 dataflow.spring.io 导入应用程序启动器”选项。
- 单击 **适用于 Docker 的任务应用程序启动器** 单选按钮。
- 点击页面底部的**导入应用程序**按钮。
创建任务定义
在本节中,我们将创建两个任务定义:timestamp-task
和 timestamp-task-2
。我们将在特定平台上启动每个任务定义。
创建 timestamp-task
定义
- 点击界面左侧的**任务**选项卡。
- 点击页面上的**创建任务**按钮。
- 在文本框中输入
timestamp
。 - 点击**创建任务**按钮。
- 当**创建任务**对话框出现时,在**名称**字段中输入
timestamp-task
。 - 点击**创建任务**按钮。
要创建 timestamp-task-2
定义,请按照前面显示的 timestamp-task
说明进行操作,不同之处在于,在出现 创建任务
对话框的步骤中,名称为 timestamp-task-2
。
现在,两个任务定义均可用,如下所示
启动任务
在本节中,我们将先在默认平台中启动 timestamp-task
,然后在练习平台中启动 timestamp-task-2
。为此,请执行以下操作:
- 单击与
timestamp-task
任务定义关联的选项控件,然后选择“**启动**”选项。 - 现在选择要在其上启动
timestamp-task
的平台 - 在本例中为default
命名空间。 - 单击页面底部的“**启动任务**”按钮。
要验证 Pod 是否已执行,您可以在任务执行页面中查看结果,或运行以下 kubectl
命令以查看 default
命名空间中的 Pod:
kubectl get pods --namespace default
NAME READY STATUS RESTARTS AGE
mariadb-b94654bd4-k8vr7 1/1 Running 1 7h38m
rabbitmq-545bb5b7cb-dn5rd 1/1 Running 39 124d
scdf-server-dff599ff-68949 1/1 Running 0 8m27s
skipper-6b4d48ddc4-9p2x7 1/1 Running 0 12m
timestamp-task-v9jrm66p55 0/1 Completed 0 87s
要在 practice
命名空间中启动任务,请执行以下操作:
- 单击与
timestamp-task-2
任务定义关联的选项控件,然后选择“**启动**”选项。 - 选择您希望启动
timestamp-task
的平台 - 在本例中为practice
命名空间。 - 单击页面底部的“**启动任务**”按钮。
要验证 Pod 是否已执行,您可以在任务执行页面中查看结果,或运行以下 kubectl
命令以查看 default
命名空间中的 Pod:
kubectl get pods --namespace practice
NAME READY STATUS RESTARTS AGE
timestamp-task-2-nwvk4r89vy 0/1 Completed 0 59s
调度任务
在本节中,我们将在不同的平台上创建两个计划。通过使用 Spring Cloud Data Flow 的 shell,我们创建一个计划,以便在 default
平台上每分钟启动一次 timestamp-task
。 为此,请执行以下操作
- 通过从 Spring Cloud Data Flow shell 运行以下命令来调度任务
task schedule create --name timestamp-task-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform default
它看起来像这样
dataflow:>task schedule create --name timestamp-task-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform default
Created schedule 'timestamp-task-sched'
- 通过运行
task schedule list --platform default
命令验证是否已创建计划
dataflow:>task schedule list --platform default
╔════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-sched│timestamp-task │spring.cloud.scheduler.cron.expression = */1 * * * *║
╚════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
- 要验证计划的应用程序是否已由 CronJob 正确创建和启动,您可以通过从 SCDF shell 运行以下命令来查看结果:
task execution list
(或者,您可以运行以下kubectl
命令,并查看一分钟后开始出现的timestamp-task-sched
pod。)
kubectl get pods --namespace default
NAME READY STATUS RESTARTS AGE
mariadb-b94654bd4-k8vr7 1/1 Running 1 29h
rabbitmq-545bb5b7cb-dn5rd 1/1 Running 39 125d
scdf-server-845879c9b7-xs8t6 1/1 Running 3 4h45m
skipper-6b4d48ddc4-bkvph 1/1 Running 0 4h48m
timestamp-task-sched-1591904880-p48cx 0/1 Completed 0 33s
- 要删除计划,请运行以下命令
dataflow:>task schedule destroy --name timestamp-task-sched --platform default
Deleted task schedule 'timestamp-task-sched'
使用 Spring Cloud Data Flow 的 shell,我们创建一个计划,以便在 practice
平台上每分钟启动一次 timestamp-task-2
。
- 要调度任务,请从 Spring Cloud Data Flow shell 运行以下命令
task schedule create --name timestamp-task-2-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform practice
它看起来像这样
dataflow:>task schedule create --name timestamp-task-2-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform practice
Created schedule 'timestamp-task-2-sched'
- 通过运行
task schedule list --platform practice
命令验证是否已创建计划,如下所示。
dataflow:>task schedule list --platform practice
╔══════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠══════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-2-sched│timestamp-task-2 │spring.cloud.scheduler.cron.expression = */1 * * * *║
╚══════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
- 您可以通过从 SCDF shell 运行以下命令来验证结果:
task execution list
。或者,您可以使用以下命令启动kubectl
命令并查看结果
glennrenfro ~/scripts: kubectl get pods --namespace practice
NAME READY STATUS RESTARTS AGE
timestamp-task-2-sched-1591905600-rnfks 0/1 Completed 0 17s
- 要删除计划,请运行以下命令
dataflow:>task schedule destroy --name timestamp-task-2-sched --platform practioce
Deleted task schedule 'timestamp-task-2-sched'
从外部 Spring Cloud Data Flow 启动跨多个平台的任务
在此场景中,Spring Cloud Data Flow 及其数据存储在 Kubernetes 集群外部运行,用户希望能够在默认和实践命名空间中启动任务,同时能够从 SCDF 监控任务执行。
配置 Spring Cloud Data Flow
对于本练习,您需要访问 shell。为 Spring Cloud Data Flow 设置以下环境属性并启动它
export spring_datasource_url=<your database url>
export spring_datasource_username=<your username>
export spring_datasource_password=<your password>
export spring_datasource_driverClassName=<your driverClassName>
export spring_profiles_active=cloud
export jbp_config_spring_auto_reconfiguration='{enabled: false}'
export spring_cloud_dataflow_features_schedulesEnabled=true
export spring_cloud_dataflow_features_tasks_enabled=true
export SPRING_APPLICATION_JSON="{\"spring.cloud.dataflow.task\":{\"platform.local.accounts\":{\"default\":{\"timeout\" : \"60\"}},\"platform.kubernetes.accounts\":{\"kzone\":{\"namespace\" : \"default\"},\"practice\":{\"namespace\" : \"practice\"}}}}"
java -jar spring-cloud-dataflow-server/target/spring-cloud-dataflow-server-<version>.jar
配置 Kubernetes 中的数据库服务以连接到外部数据库
在本练习中启动的任务需要访问连接到 SCDF 正在使用的外部数据库的数据库服务。为此,我们创建一个数据库服务以及一个引用外部数据库的端点。在本例中,我们连接到 MariaDB 数据库。
- 设置数据库服务
apiVersion: v1
kind: Service
metadata:
name: mariadb-mac
spec:
ports:
- protocol: TCP
port: 1443
targetPort: 3306
- 设置指向本地 MariaDB 的端点
apiVersion: v1
kind: Endpoints
metadata:
name: mariadb-mac
subsets:
- addresses:
- ip: 192.168.1.72
ports:
- port: 3306
- 现在,获取新创建的
mariadb-mac
服务的集群 IP
,以便您可以使用它来启动和调度任务。为此,请运行以下命令(在本例中,MariaDB 实例在您的本地机器上运行)
kubectl get svc mariadb-mac
此命令的结果类似于
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mariadb-mac ClusterIP <ext db conn> <none> 1443/TCP 44m
注册应用程序
要注册练习所需的应用程序,请按照此部分中的说明进行操作。
启动任务
启动任务时添加以下命令行参数(将 <ext db conn>
替换为 kubectl get svc mariadb-mac
提供的 CLUSTER-IP)
--spring.datasource.url=jdbc:mariadb://<外部数据库连接>:1443/<您的数据库>
它应该类似于下图:
要验证任务是否已启动,请选择页面左侧的**任务执行**选项卡,以查看类似于下图的结果:
此外,您还可以通过查看 default
命名空间的 Pod 列表来验证启动
kubectl get pods --namespace default
NAME READY STATUS RESTARTS AGE
timestamp-task-kzkpqjp936 0/1 Completed 0 38s
启动任务时添加以下命令行参数
--spring.datasource.url=jdbc:mariadb://<外部数据库连接>:1443/<您的数据库>
它应该类似于下图:
要验证任务是否已启动,请选择页面左侧的**任务执行**选项卡,以查看类似于下图的结果:
此外,您可以通过查看 practice
命名空间的 Pod 列表来验证启动,如下例所示
kubectl get pods --namespace practice
NAME READY STATUS RESTARTS AGE
timestamp-task-2-pkwzevl0mp 0/1 Completed 0 48s
调度任务
在本节中,我们将在不同的平台上创建两个计划。通过使用 Spring Cloud Data Flow 的 shell,我们创建一个计划,该计划在 default
平台上每分钟启动一次 timestamp-task
。
- 要调度任务,请从 Spring Cloud Data Flow shell 运行以下命令
task schedule create --name timestamp-task-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform default --properties "app.docker-timestamp.spring.datasource.url=jdbc:mariadb://<ext db conn>:1443/<your db>"
它看起来像这样
dataflow:>task schedule create --name timestamp-task-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform default --properties "app.docker-timestamp.spring.datasource.url=jdbc:mariadb://10.100.231.80:1443/task"
Created schedule 'timestamp-task-sched'
- 要验证是否已创建计划,请运行
task schedule list --platform default
命令并查看结果。
dataflow:>task schedule list --platform default
╔════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-sched│timestamp-task │spring.cloud.scheduler.cron.expression = */1 * * * *║
╚════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
- 要验证计划的应用程序是否已由 CronJob 正确创建和启动,请从 SCDF Shell 运行
task execution list
或运行以下kubectl
命令以查看timestamp-task-sched
pod 是否在一分钟后开始出现。
kubectl get pods --namespace default
NAME READY STATUS RESTARTS AGE
timestamp-task-sched-1592229780-f5w6w 0/1 Completed 0 15s
- 要删除计划,请运行以下命令
dataflow:>task schedule destroy --name timestamp-task-sched --platform default
Deleted task schedule 'timestamp-task-sched'
通过使用 Spring Cloud Data Flow 的 shell,我们创建一个计划,该计划在 practice
平台上每分钟启动一次 timestamp-task-2
。
- 要调度任务,请从 Spring Cloud Data Flow shell 运行以下命令
task schedule create --name timestamp-task-2-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform practice --properties "app.docker-timestamp.spring.datasource.url=jdbc:mariadb://<ext db conn>:1443/<your db>"
它看起来像这样
dataflow:>task schedule create --name timestamp-task-2-sched --definitionName timestamp-task --expression "*/1 * * * *" --platform practice --properties "app.docker-timestamp.spring.datasource.url=jdbc:mariadb://10.100.231.80:1443/task"
Created schedule 'timestamp-task-2-sched'
- 要验证是否已创建计划,请运行
task schedule list --platform practice
命令并查看结果。
dataflow:>task schedule list --platform practice
╔══════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠══════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-2-sched│timestamp-task-2 │spring.cloud.scheduler.cron.expression = */1 * * * *║
╚══════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
dataflow:>task schedule destroy --name timestamp-task-2-sched --platform practice
Deleted task schedule 'timestamp-task-2-sched'
- 要验证计划的应用程序是否已由 CronJob 正确创建和启动,请从 SCDF Shell 运行
task execution list
或运行以下kubectl
命令以查看timestamp-task-sched
pod 是否在一分钟后开始出现。
glennrenfro ~/scripts: kubectl get pods --namespace practice
NAME READY STATUS RESTARTS AGE
timestamp-task-2-sched-1592230980-bngbc 0/1 Completed 0 19s
- 要删除计划,请运行以下命令
dataflow:>task schedule destroy --name timestamp-task-2-sched --platform practice
Deleted task schedule 'timestamp-task-2-sched'
在不同类型的平台上启动任务
配置 Spring Cloud Data Flow
对于本练习,您需要访问 shell。设置 Spring Cloud Data Flow 的以下环境属性并启动它。
export spring_datasource_url=<your database url>
export spring_datasource_username=<your username>
export spring_datasource_password=<your password>
export spring_datasource_driverClassName=<your database driverClassNanme>
export spring_profiles_active=cloud
export jbp_config_spring_auto_reconfiguration='{enabled: false}'
export spring_cloud_dataflow_features_schedulesEnabled=true
export spring_cloud_dataflow_features_tasks_enabled=true
export SPRING_APPLICATION_JSON="{\"spring.cloud.dataflow.task\":{\"platform.kubernetes.accounts\":{\"kzone\":{\"namespace\" : \"default\"}},\"platform.cloudfoundry.accounts\":{\"cfzone\":{\"connection\":{\"url\":\"https://myconnection\",\"domain\":\"mydomain\",\"org\":\"myorg\",\"space\":\"myspace\",\"username\":\"admin\",\"password\":\"password\",\"skipSslValidation\":true},\"deployment\":{\"deleteRoutes\":false,\"services\":\"garsql,atscheduler\",\"enableRandomAppNamePrefix\":false,\"memory\":3072,\"schedulerUrl\":\"<myschedulerurl>\"},}}}}{\"spring.cloud.dataflow.task\":{\"platform.kubernetes.accounts\":{\"kzone\":{\"namespace\" : \"default\"}}}}{\"spring.cloud.dataflow.task\":{\"platform.local.accounts\":{\"local\":{\"timeout\" : \"60\"}}}}"
java -jar spring-cloud-dataflow-server/target/spring-cloud-dataflow-server-2.6.0.BUILD-SNAPSHOT.jar
本练习假设用户拥有一个可从 Cloud Foundry 和 Kubernetes 环境访问的外部数据库。
注册应用程序
在本练习中,SCDF 将启动时间戳应用程序的 Docker 和 Maven 镜像。
注册应用程序
- 按照注册预构建任务中的说明,注册 SCDF 提供的示例 docker 任务应用程序。
- 如下所示注册时间戳的 maven 实例
- 点击页面顶部的**添加应用程序**按钮,如下图所示:
- 当出现**添加应用程序**页面时,点击**注册一个或多个应用程序**单选按钮,如下图所示:
- 输入信息,如下图所示:
- 点击页面底部的**导入应用程序**按钮。
创建任务定义
在本节中,我们将创建两个任务定义:timestamp-task
和 timestamp-task-2
。每个任务定义都在特定的平台上启动。
要创建 k8-timestamp
定义,请执行以下操作:
- 单击界面左侧的**任务**选项卡,如下图所示
- 单击**创建任务**按钮。
- 在文本框中输入
timestamp
。 - 单击**创建任务**按钮,如下图所示:
- 出现**创建任务**对话框时,在**名称**字段中输入
k8-timestamp
。 - 点击 **创建任务 (CREATE THE TASK)** 按钮,如下图所示:
创建 cf-timestamp
定义:
- 单击界面左侧的**任务**选项卡,如下图所示
- 单击**创建任务**按钮。
- 在文本框中输入
maven-timestamp
。 - 点击 **创建任务 (CREATE TASK)** 按钮,如下图所示:
- 当 **创建任务 (Create Task)** 对话框出现时,在 **名称 (Name)** 字段中输入
cf-timestamp
。 - 点击 **CREATE THE TASK(创建任务)** 按钮,如下图所示:
现在,两个任务定义都可用,如下图所示
启动任务
在本部分中,我们将分别在 cfzone
(Cloud Foundry)平台上启动 cf-timestamp
,在 kzone
(Kubernetes)平台上启动 k8-timestamp。
- 点击与
cf-timestamp
任务定义关联的行左侧的选项控件,然后选择 **Launch(启动)** 选项,如下图所示: - 现在,选择您要启动
cf-timestamp
的平台(在本例中为cfzone
命名空间),如下图所示: - 单击页面底部的“**启动任务**”按钮。
要验证应用程序是否已运行,您可以在任务执行页面中查看结果,或启动以下 cf apps
命令以在已配置的组织和空间中查看应用程序。
cf tasks cf-timestamp
Getting tasks for app cf-timestamp in org scheduling / space glenn as admin...
OK
id name state start time command
7 cf-timestamp SUCCEEDED Mon, 15 Jun 2020 18:09:00 UTC JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR -XX:ActiveProcessorCount=$(nproc) -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS" && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE -totMemory=$MEMORY_LIMIT -loadedClasses=14335 -poolType=metaspace -stackThreads=250 -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher
现在,要在 kzone
(kubernetes) 平台上的默认命名空间中启动任务。
- 单击与
k8-timestamp
任务定义关联的行上的选项控件,然后选择“**启动**”选项,如下图所示: - 现在选择您希望启动
k8-timestamp
的平台 - 在本例中为kzone
命名空间,如下图所示: - 单击页面底部的“**启动任务**”按钮。
要验证 Pod 是否已运行,您可以在任务执行页面中查看结果,或通过启动以下 kubectl
命令来查看 default
命名空间中的 Pod
kubectl get pods
NAME READY STATUS RESTARTS AGE
k8-timestamp-rpqw00d175 0/1 Completed 0 39s
调度任务
在本节中,我们将创建两个计划,每个计划都在不同的平台上。通过使用 Spring Cloud Data Flow 的 shell,我们创建一个计划,该计划每分钟在 cfzone
Cloud Foundry 平台上启动一次 cf-timestamp
任务定义,并在 minikube 的 default
命名空间上启动 k8-timestamp
任务定义。
- 为 Cloud Foundry 平台创建计划
task schedule create --name timestamp-task-cf-sched --definitionName cf-timestamp --expression "*/1 * ? * *" --platform cfzone --properties "app.maven-timestamp.spring.datasource.url=<your database url>"
- 要验证计划是否已创建,请运行
task schedule list --platform cfzone
命令并查看结果
task schedule list --platform cfzone
╔═══════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠═══════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-cf-sched│cf-timestamp │spring.cloud.scheduler.cron.expression = */1 * ? * *║
╚═══════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
- 通过对您配置的组织和空间运行
cf apps
命令,验证任务定义定义的应用程序是否已部署到 Cloud Foundry
cf apps
Getting apps in org scheduling / space glenn as admin...
name requested state instances memory disk urls
cf-timestamp stopped 0/1 3G 1G
- 通过对您配置的组织和空间运行
cf job-history timestamp-task-cf-sched
命令,验证计划的timestamp-task-cf-sched
是否实际启动
cf job-history timestamp-task-cf-sched
Getting scheduled job history for timestamp-task-cf-sched in org scheduling / space glenn as admin
1 - 6 of 6 Total Results
Execution GUID Execution State Scheduled Time Execution Start Time Execution End Time Exit Message
4c588ee2-833d-47a6-84cb-ebfcc90857e9 SUCCEEDED Mon, 15 Jun 2020 18:07:00 UTC Mon, 15 Jun 2020 18:07:00 UTC Mon, 15 Jun 2020 18:07:00 UTC 202 - Cloud Controller Accepted Task
- 通过运行 SCDF shell
task schedule destroy
命令删除计划
```shell script
task schedule destroy --name timestamp-task-k8-sched --platform kzone
Deleted task schedule 'timestamp-task-k8-sched'
- 为 Kubernetes 平台创建计划
task schedule create --name timestamp-task-k8-sched --definitionName k8-timestamp --expression "*/1 * * * *" --platform kzone --properties "app.timestamp.spring.datasource.url=<your database url>"
- 通过运行
task schedule list --platform kzone
命令验证计划是否已创建,并查看结果
task schedule list --platform kzone
╔═══════════════════════╤════════════════════╤════════════════════════════════════════════════════╗
║ Schedule Name │Task Definition Name│ Properties ║
╠═══════════════════════╪════════════════════╪════════════════════════════════════════════════════╣
║timestamp-task-k8-sched│k8-timestamp │spring.cloud.scheduler.cron.expression = */1 * * * *║
╚═══════════════════════╧════════════════════╧════════════════════════════════════════════════════╝
- 现在,通过在默认命名空间上运行
kubectl get pods
命令,验证由任务定义定义的应用程序是否已部署到 Kubernetes。
glennrenfro ~/scripts: kubectl get pods
NAME READY STATUS RESTARTS AGE
timestamp-task-k8-sched-1592246880-4fx2p 0/1 Completed 0 14s
- 现在,通过运行 SCDF shell
task schedule destroy
命令删除计划。
task schedule destroy --name timestamp-task-k8-sched --platform kzone
Deleted task schedule 'timestamp-task-k8-sched'