Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >舵机稳定/气流-使用Helm图表失败的共享持久体积的气流部署的自定义值

舵机稳定/气流-使用Helm图表失败的共享持久体积的气流部署的自定义值
EN

Stack Overflow用户
提问于 2019-10-09 00:26:24
回答 2查看 7.2K关注 0票数 4

目标

我想在库伯奈特斯上部署气流,在那里豆荚可以访问相同的DAG,在一个共享的持久卷中。根据文档(https://github.com/helm/charts/tree/master/stable/airflow#using-one-volume-for-both-logs-and-dags),我似乎必须设置并将这些值传递给Helm:extraVolumeextraVolumeMountpersistence.enabledlogsPersistence.enableddags.pathlogs.path

问题

在安装正式Helm图表时传递的任何自定义值都会导致类似于以下内容的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error: YAML parse error on airflow/templates/deployments-web.yaml: error converting YAML to JSON: yaml: line 69: could not find expected ':'
  • 工作良好:microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow
  • 不工作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow \
--set airflow.extraVolumes=/home/*user*/github/airflowDAGs \
--set airflow.extraVolumeMounts=/home/*user*/github/airflowDAGs \
--set dags.path=/home/*user*/github/airflowDAGs/dags \
--set logs.path=/home/*user*/github/airflowDAGs/logs \
--set persistence.enabled=false \
--set logsPersistence.enabled=false
  • 也不工作microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow --values=values_pv.yamlvalues_pv.yamlhttps://pastebin.com/PryCgKnC
    • 编辑:请将/home/*user*/github/airflowDAGs更改为机器上的路径以复制错误。

关注点

  1. 可能是因为默认values.yaml中的这些行出错了。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Configure DAGs deployment and update
dags:
  ##
  ## mount path for persistent volume.
  ## Note that this location is referred to in airflow.cfg, so if you change it, you must update airflow.cfg accordingly.
  path: /home/*user*/github/airflowDAGs/dags

如何在Kubernetes部署中配置airflow.cfg?在无容器的气流部署中,可以在~/airflow/airflow.cfg中找到该文件.

  1. airflow.cfg中的第69行指:https://github.com/helm/charts/blob/master/stable/airflow/templates/deployments-web.yaml#L69

其中包含git.yaml是否配置错误,并且它错误地试图使用git pull,但是由于没有指定git路径,这会失败吗?

系统

  • 操作系统: Ubuntu 18.04 (单机)
  • MicroK8s: v1.15.4参考资料:876
  • microk8s.kubectl version:v1.15.4
  • microk8s.helm version:v2.14.3

问题

如何正确地将正确的值传递给气流Helm图表,以便能够在拥有相同DAG和共享持久卷日志的情况下在Kubernetes上部署气流?

EN

回答 2

Stack Overflow用户

发布于 2019-11-25 10:35:45

不确定你是否已经解决了这个问题,但如果你没有,我认为有一个非常简单的方式接近你正在做的事情。

所有的部署、服务、Pods都需要持久化的卷信息--它生活在本地的地方,以及它应该在每一个kube类中所处的位置。看起来,图表的values.yaml提供了一种实现这一目标的方法。我只会在下面的dags中展示这一点,但我认为对于日志也应该是大致相同的过程。

因此,基本的步骤是: 1)告诉kube“音量”(目录)在您的计算机上的位置,2)告诉kube把它放在容器中的位置,3)告诉气流在哪里查找dags。因此,您可以从helm复制values.yaml文件,并使用以下方法对其进行修改。

  1. airflow部分

首先,您需要创建一个包含本地目录中的项的卷(这是下面的extraVolumes )。然后,这需要挂载-幸运的是,把它放在这里将模板它到所有库贝文件。一旦创建了该卷,就应该告诉它挂载dags。因此,基本上,extraVolumes创建卷,而extraVolumeMounts挂载卷。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
airflow:
  extraVolumeMounts: # this will get the volume and mount it to that path in the container                                                                                                                                                               
  - name: dags
    mountPath: /usr/local/airflow/dags  # location in the container it will put the directory mentioned below.

  extraVolumes: # this will create the volume from the directory
  - name: dags
    hostPath:
      path: "path/to/local/directory"  # For you this is something like /home/*user*/github/airflowDAGs/dags
  1. 告诉气流配置,dags在容器中的位置(与上面相同的yaml部分)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
airflow:
  config:
    AIRFLOW__CORE__DAGS_FOLDER: "/usr/local/airflow/dags"  # this needs to match the mountPath in the extraVolumeMounts section
  1. 安装helm和您的新values.yaml文件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm install --namespace "airflow" --name "airflow" -f local/path/to/values.yaml stable/airflow

最后,这应该允许气流在dags文件夹中看到您的本地目录。如果您添加了一个新文件,它应该会显示在容器中--尽管在UI中显示可能需要一分钟时间--我不认为dagbag进程一直在运行?不管怎样,希望这能帮上忙!

票数 5
EN

Stack Overflow用户

发布于 2019-10-11 04:33:07

用yaml文件来做

因此,如果我们考虑使用values.yaml,就会出现一个问题,因为您用错误的方式编辑了它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extraVolumeMounts: home/*user*/github/airflowDAGs
  ## Additional volumeMounts to the main containers in the Scheduler, Worker and Web pods.
  # - name: synchronised-dags
  #   mountPath: /usr/local/airflow/dags
  extraVolumes: home/*user*/github/airflowDAGs
  ## Additional volumes for the Scheduler, Worker and Web pods.
  # - name: synchronised-dags
  #   emptyDir: {}

如果extraVolumeMounts需要namemounthPath才能工作,那么您不能就这样传递路径,这就是为什么有#的原因,所以您可以直接删除它们,添加您的值,它应该可以工作。

它应该是这样的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 extraVolumeMounts:
 - name: synchronised-dags
   mountPath: /usr/local/airflow/dags
 extraVolumes:
 - name: synchronised-dags
   emptyDir: {}

这就是安装它的方法:

1.使用helm fetch将气流图下载到您的个人电脑上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm fetch stable/airflow --untar

2.编辑airflow/ above . name extraVolumeMount和extraVolume,如上面所示,只需添加您的名称和路径即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nano/vi/vim airflow/values.yaml

3.你可以在气流/数值中更换休息物。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm install ./airflow --namespace "airflow" --name "airflow" -f ./airflow/values.yaml

在只编辑extraVolumeMount和extraVolume时使用此命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm install --set dags.path=/home/user/github/airflowDAGs/dags --set logs.path=/home/user/github/airflowDAGs/logs --set persistence.enabled=false --set logsPersistence.enabled=false  ./airflow --namespace "airflow" --name "airflow" -f ./airflow/values.yaml

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NAME:   airflow
LAST DEPLOYED: Fri Oct 11 09:18:46 2019
NAMESPACE: airflow
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                  DATA  AGE
airflow-env           20    2s
airflow-git-clone     1     2s
airflow-postgresql    0     2s
airflow-redis         3     2s
airflow-redis-health  3     2s
airflow-scripts       1     2s

==> v1/Deployment
NAME               READY  UP-TO-DATE  AVAILABLE  AGE
airflow-flower     0/1    1           0          1s
airflow-scheduler  0/1    1           0          1s
airflow-web        0/1    1           0          1s

==> v1/PersistentVolumeClaim
NAME                STATUS   VOLUME    CAPACITY  ACCESS MODES  STORAGECLASS  AGE
airflow-postgresql  Pending  standard  2s

==> v1/Pod(related)
NAME                                 READY  STATUS             RESTARTS  AGE
airflow-flower-5596b45d58-wrg74      0/1    ContainerCreating  0         1s
airflow-postgresql-75bf7d8774-dxxjn  0/1    Pending            0         1s
airflow-redis-master-0               0/1    ContainerCreating  0         1s
airflow-scheduler-8696d66bcf-bwm2s   0/1    ContainerCreating  0         1s
airflow-web-84797489f5-8wzsm         0/1    ContainerCreating  0         1s
airflow-worker-0                     0/1    Pending            0         0s

==> v1/Secret
NAME                TYPE    DATA  AGE
airflow-postgresql  Opaque  1     2s
airflow-redis       Opaque  1     2s

==> v1/Service
NAME                    TYPE       CLUSTER-IP   EXTERNAL-IP  PORT(S)   AGE
airflow-flower          ClusterIP  10.0.7.168   <none>       5555/TCP  1s
airflow-postgresql      ClusterIP  10.0.8.62    <none>       5432/TCP  2s
airflow-redis-headless  ClusterIP  None         <none>       6379/TCP  1s
airflow-redis-master    ClusterIP  10.0.8.5     <none>       6379/TCP  1s
airflow-web             ClusterIP  10.0.10.176  <none>       8080/TCP  1s
airflow-worker          ClusterIP  None         <none>       8793/TCP  1s

==> v1/ServiceAccount
NAME     SECRETS  AGE
airflow  1        2s

==> v1/StatefulSet
NAME            READY  AGE
airflow-worker  0/1    1s

==> v1beta1/Deployment
NAME                READY  UP-TO-DATE  AVAILABLE  AGE
airflow-postgresql  0/1    1           0          1s

==> v1beta1/PodDisruptionBudget
NAME         MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
airflow-pdb  N/A            1                0                    2s

==> v1beta1/Role
NAME     AGE
airflow  2s

==> v1beta1/RoleBinding
NAME     AGE
airflow  2s

==> v1beta2/StatefulSet
NAME                  READY  AGE
airflow-redis-master  0/1    1s


NOTES:
Congratulations. You have just deployed Apache Airflow
   export POD_NAME=$(kubectl get pods --namespace airflow -l "component=web,app=airflow" -o jsonpath="{.items[0].metadata.name}")
   echo http://127.0.0.1:8080
   kubectl port-forward --namespace airflow $POD_NAME 8080:8080

2. Open Airflow in your web browser
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58299948

复制
相关文章
气流组织优化—数据中心节能的魔术手
引言 1946年数据中心诞生于美国,至今已经历4个阶段近70年的发展历程,数据中心从最初仅用于存储的巨型机,逐渐转向多功能、模块化、产品化、绿色化和智能化。在越来越注重节能和精细化的今天,数据中心的每一个细节设计都闪耀着工程师智慧的光芒。他们对于数据中心的规划设计,不再满足于仅停留在功能这一基本的要求上,现在的数据中心你会看到更多关于节能环保及工程之美、绿色之美等设计理念。 评价数据中心的优劣,与其提供的服务质量,成本控制及绿色程度密切相关。能够提供稳定及具备高可用性的服务是对云服务商和数据中心的基本要求。
腾讯数据中心
2018/03/16
2.6K0
气流组织优化—数据中心节能的魔术手
[毕设] 更大尺度下自装配规律探索-基于于乒乓球的气流无序装配实验
从DNA转录mRNA,再通过核糖体根据mRNA中碱基序列,将氨基酸组成肽链,肽链盘曲折叠形成蛋白质,组成细胞,构建肌体... 这一过程最为神奇之处,就是在于复杂的肌体,功能各异的器官,都是来自于同样DNA序列,也都经历了这样一个“生命装配”的自发过程。通过碱基对ATCG的排列组合,组成了我们这个复杂生物世界。
UDM Lab
2020/04/20
6440
使用 Helm 部署 Wikijs
几乎适用于任何平台,并与PostgreSQL、MySQL、MariaDB、MS SQL Server 或 SQLite 兼容!
东风微鸣
2022/04/21
2K0
使用 Helm 部署 Wikijs
基于 Kubernetes,Helm 及 Jenkins 实现弹性 CI/CD
让我们在 Kubernetes 上创建一个CI/CD(持续集成和持续部署)解决方案,使用 Jenkins 作为构建工具,并使用 Traefik 作为用于灵活应用程序部署和路由的入口。
DevOps时代
2020/09/24
5.1K0
基于 Kubernetes,Helm 及 Jenkins 实现弹性 CI/CD
使用 Helm 部署 Gitlab
在 Kubernetes 中的安装,自然需要一个可以运行和管理的 Kubernetes 集群,首先创建一个 Namespace 用于 Gitlab 的安装运行:
崔秀龙
2019/07/24
6.3K1
Helm稳定和孵化仓库的新位置
如前所述,稳定(stable)仓库和孵化(incubator)仓库已经转移到新位置。这篇文章将更新你关于新地址,并提供开始使用它们的方法。
CNCF
2020/10/30
1.3K0
最新电子皮肤的触觉有多灵?连空气流动都能感受到
而如何让电子皮肤感受不同物体表面的差异,摸出不同粗糙度的那种,一直是个不小的挑战。
量子位
2021/07/19
3850
如何将自己的镜像使用 helm 部署
Helm Chart 包含了 Docker 镜像以及其在 k8s 中的基础设施配置,例如 service,deployment 等等,helm 可以把 k8s 的应用进行完成封装,发布给任意一个其他的 k8s 环境使用
阿兵云原生
2023/09/12
1.1K1
如何将自己的镜像使用 helm 部署
Kubernetes之helm部署使用
是一个部署在Kubernetes集群内部的 server,其与 Helm client、Kubernetes API server 进行交互
聂伟星
2020/09/11
3.3K0
图扑数字孪生数据中心,云端机房助力减碳
数据中心作为城市“新基建”之一,是推动数字经济发展的算力基础设施和重要载体。随着生命科学、基因测序、医药研发、高性能计算、深度学习、遥感测绘、地质勘探、冷冻电镜、数据分析、数据挖掘、真空羽流、并行计算等技术的快速发展,以及国家东数西算政策的支持,建设绿色数据中心、智算中心成为人们关注的重中之重。
数字孪生
2022/11/07
1.1K0
图扑数字孪生数据中心,云端机房助力减碳
使用 Helm 批量部署应用
在微服务场景中,使用同一模式开发的应用会变的很多,我们会使用相同的 docker 基础镜像进行应用打包。但对于部署场景,我们需要写很多类似的 yaml 文件,由此,我们希望将不同之处使用变量抽取出来,并与通用模板进行整合。
谢正伟
2020/06/16
3.7K0
使用 Helm 批量部署应用
图扑数字孪生数据中心机房,助力产业绿色低碳转型
随着“东数西算”工程和新基建的加速落地,数智化技术正逐渐渗透到各领域。但随着数据中心建设规模的逐步扩大,必然带来能耗的大幅增长和机房设备数量的不断扩充,传统机房的监控和管理模式已无法满足数据中心“集中监控、统一管理”的需求。
数字孪生
2022/10/11
1.4K0
图扑数字孪生数据中心机房,助力产业绿色低碳转型
helm 学习
Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。
看、未来
2022/05/18
2K0
helm 学习
使用Helm在Kubernetes部署DataEase
helm chart包中默认使用存储类作为DataEase的共享存储,所以需要提前在Kubernetes环境中创建存储类; values.yaml中默认名称为default,你也可以创建其他名称的存储类,稍后需要在values.yaml中将 storageClass: default 改为 storageClass: 名称 即可。
范一刀
2022/06/09
8490
Helm部署的服务如何修改配置
在Kubernetes上进行容器化部署时,使用helm可以简化操作,以部署Jenkins为例,只需要以下命令即可完成部署:
程序员欣宸
2020/03/25
3.7K0
TiKV + Flink = 最佳人气流批一体库|TiDB Hackathon 2020 优秀项目分享
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。为了让更多小伙伴了解这些参赛团队背后的故事, 我们开启了 TiDB Hackathon 2020 优秀项目分享系列,本篇文章将介绍 TiFlink 团队赛前幕后的精彩故事。
PingCAP
2021/02/22
6650
TiKV + Flink = 最佳人气流批一体库|TiDB Hackathon 2020 优秀项目分享
舵机的工作原理
大家好,又见面了,我是你们的朋友全栈君。舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如下图:
全栈程序员站长
2022/08/11
7020
舵机的工作原理
如何降低数据中心机柜的局部高热
数据中心内设备众多,内部虽然有完善的空调系统,但实际上内部温度分布是不够均衡的。即便现在的数据中心部署了出入通风道,机柜前面是入风道,后面是出风道,这样可以及时将热量带走。不过,由于不同的设备发热功率是不同的,局部区域若放置有大功率设备,容易造成机房局部区域过热现象,威胁数据中心的安全运行,甚至造成个别设备因过热而宕机、硬件损坏等严重问题,所以将数据中心机房内的温度控制在一定范围内,消除或降低局部热点是非常重要的。为保证数据中心长期稳定运行,改善IT设备的运行环境,消除局部热点、降低机柜局部温度,下面我们就来探讨一下数据中心局部热点处理的一些方案。
孙杰
2019/10/29
1.2K0
如何降低数据中心机柜的局部高热
使用 helmfile 声明式部署 Helm Chart
本公众号分享的软件服务以及语言均源于网络,只做针对这些软件服务或者语言的使用实践进行分享和整理。本公众号不对任何人进行推荐,在使用这些软件或编程代码时有可能会引发一些问题,甚至导致数据丢失,请您自行承担相应的后果!本公众号概不负责! 若您觉得公众号发布的内容若侵犯到您的权益,请联系及时管理员沟通!
公众号: 云原生生态圈
2023/01/09
9850
使用 helmfile 声明式部署 Helm Chart
致敬经典——腾讯第三代数据中心
序言 伴随着腾讯业务的不断发展壮大,腾讯数据中心走过了21年的光辉历程,期间不断地推进了数据中心技术架构的迭代和升级。为了适应海量服务器快速、低成本的部署和运营要求。早在2012年,腾讯就推出了第三代数据中心架构——微模块架构。经过八年的应用实践和优化完善,微模块技术架构已经发展成为数据中心行业的主流技术;为腾讯第四代T-Block技术架构升级奠定了坚实的基础。本文将从运营实践的视角带领大家去回顾腾讯第三代数据中心技术的最佳实践。 什么是微模块? 微模块(Modular Data Center,MDC)是
腾讯数据中心
2020/10/19
3.6K1

相似问题

如何使用部署在GCP Composer上的气流稳定Rest API [气流版本2.0.0]

24

在ek集群上部署气流时出现的舵机图表不可用错误

15

如何删除通过helm引入的气流上的值?

136

如何在使用自定义图像时通过Helm在Kubernetes上部署气流?

13

未更新的气流图表视图

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文