gpt4 book ai didi

python - 如何使用 Prefect 在 AKS 上部署 Kubernetes 作业

转载 作者:行者123 更新时间:2023-12-03 04:54:59 24 4
gpt4 key购买 nike

我是 Prefect 的新手,希望使用 Prefect 在 Azure Kubernetes 服务上部署 Kubernetes 作业。我已经设置了一个 Linux 容器,包括 Prefect、kubectl。我可以建立与 AKS 集群的连接,并通过使用 kubectl,我可以在 AKS 上部署 Kubernetes 作业。但它如何与 Prefect 配合使用呢?在容器中,我存储了 .py 文件和 YAML 文件,它定义了 Kubernetes 作业。

enter image description here

--> kubectl apply -f deploytestcontainer.yaml --> 有效

运行附加的示例 Prefect 代码也可以工作(但作业未部署在 AKS 上)

enter image description here

这就是“firstk8sjob.py”的内容

import prefect
from prefect import task, Flow
from prefect.run_configs import KubernetesRun

@task
def hello_task():
flow.run_config = KubernetesRun(job_template_path="deploytestcontainer.yaml")
logger = prefect.context.get("logger")
logger.info("Hello world!")

with Flow("hello-flow") as flow:
hello_task()

flow.run()

提前非常感谢您的建议!

最佳答案

将流程部署到 Azure AKS 有两个步骤:

  1. 将 Kubernetes 代理部署到此集群
  2. 注册您的流程

首先,您需要部署 Kubernetes 代理。您可以使用以下方法生成 list 文件:

prefect agent kubernetes install --rbac --key YOUR_API_KEY --label YOUR_LABEL > agent.yaml

然后您可以检查该文件,并根据需要对其进行修改(例如更改镜像版本以匹配您所需的 Python 和 Prefect 版本,在需要时添加环境变量等)。

请注意,API key 适用于 Prefect Cloud - 您是 Prefect Cloud 还是 Prefect Server 用户?如果您使用的是 Perfect Server,则还需要 those env variables .

list 准备就绪后,您可以将其应用到 AKS 集群:

kubectl apply -f agent.yaml # optionally set: -n yournamespace 

然后,一旦代理运行,您只需在 KubernetesRun 上指定标签即可部署流程。

请注意,您正在任务中设置运行配置,这是不推荐的,并且可能是导致问题的原因。您应该将运行配置附加到流程对象,如下所示:

import prefect
from prefect import task, Flow
from prefect.run_configs import KubernetesRun


@task
def hello_task():
logger = prefect.context.get("logger")
logger.info("Hello world!")


with Flow("hello-flow", run_config=KubernetesRun(labels=["YOUR_LABEL"])) as flow:
hello_task()

if __name__ == "__main__":
flow.register("YOUR_PROJECT_NAME")

您还可以在 CLI 中注册并删除此 "__main__" block :

prefect register --project YOUR_PROJECT_NAME -p path/to/flow.py

注册流后,您可以使用以下方法在 AKS 上触发运行:

prefect run --name "hello-flow" --project YOUR_PROJECT_NAME --watch

关于python - 如何使用 Prefect 在 AKS 上部署 Kubernetes 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71188440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com