dflow部署简记

csdn的朋友们,好久不见。
今天记录一下部署dflow的过程。
官方教程在这里,对应的中文翻译在这里

下面是我个人的一些心得。

安装docker

这部分需要升级一下PC的虚拟机,WSL 2
这部分网上教程特别多,虽然看起来比较吓人,但操作起来不难。当时是照着这篇微软官方教程跑了一遍,比较顺利。(没有跑完,前5步即可)

安装k8s

当时最开始没有装成功,看了学长的博客,决定换阿里源,具体是设置、engine
在这里插入图片描述
框里新增

  "registry-mirrors": [
    "https://mirrors.aliyun.com/"
  ]

一般建议加上这句话,因为以后docker pull的时候需要用到阿里源
科学上网好像是不行的。
装上阿里源后,点上图中下面的k8s,点enable,稍等一会儿即可。

安装并顺利运行dflow

dflow是argo的一个python包装,因此需要用到argo镜像
当时看了这一篇科普文:docker科普
受益匪浅
下面是一些过程:

安装dflow

是的,这部分只是开始。总结为:

  1. 新建conda环境
  2. 该环境里通过pip install pydflow即可
部署argo
  1. 从github上下载dflow的源码,原教程中需要apply的文件就在源码的manifests里,quick-start-postgres.yaml文件。这个文件里包含了能够保证argo框架正常运行的,必要的docker file,尽量不要改。学长文章中提到,如果原端口号被占用,可以更换端口号,不过在运行程序时需要换上新的端口号。
  2. 创建argo的命名空间,类似conda里面的新环境
  3. 在该空间里apply或者create上述yaml文件。(该步骤之前需要保证k8s已经正常运行了)
  4. 此时需要耐心等待一会儿,可以通过docker desktop查看拉下来的image,可以去吃个饭。如果吃完饭还没有装好,需要考虑执行下面这一步(查看是否装好是kubectl get all -n argo,如果出现了下一张图片所示的,5个均ready,并且running/available,证明已经装好了)
    在这里插入图片描述
  5. 当时急性子,并且受到了学长博客的影响,决定自己手动pull,具体来说,就是在上述yaml文件中搜索image:,后面有对应的image的名称。原文是利用的quay.io之类的,不太稳定。注意到,前文在docker里面已经配置了阿里源。所以此时直接在终端输入
    docker pull xxx
    即可从阿里源安装某个镜像,类似conda里面的换源,拉镜像可以类比于conda install
    但理论上,需要保证拉取的镜像,hash值和所需要的一致,这部分我后面再没有研究,但我看到一些博客指出,即便不是规定版本的image,拉取过程中因为会涉及很多层,也可以理解为,很多文件。这些文件在不同版本中的image中是通用的。
    因此,在较为容易的阿里源中拉取镜像以后,再更换原来的,即重复步骤2和3(注意要先delete掉旧的,如果有的话),因为有很多文件是重复的,因此可能会提高拉取和部署的速度。当然这只是我个人的经历,理论上两个image之间是相互隔离的,但我确实是234523的顺序跑成功了。
    (二次安装,正确的顺序是,docker装完换阿里源,开启k8s,然后照着文档手动pull image,再然后apply文档,完美运行。只不过pull image的时候有点慢,但应该没有问题,pull完以后记得run)

dflow 初体验

上述完成以后,需要开两个终端,并不能关闭,分别输下面两个命令:

kubectl -n argo port-forward deployment/argo-server 2747:2747

kubectl -n argo port-forward deployment/minio 9000:9000

第一条命令开启了argo的UI,类似tensorboard
第二条命令帮助实现了上传和下载文件,如果不用这部分功能可以略去。
但凡使用dflow,至少第一条命令的终端一直要挂起!!!
此时可以再开一个终端,检查一下5个pod是否正常运行,打开docker desktop,检查k8s是否正常运行,查看yaml文件里提到的几个image是否处于in use状态。
执行test_steps.py
如果上述均正常,两个终端也处于开启状态,执行该脚本后,打开浏览器,https://127.0.0.1:2746/ 网址里检查工作状态。
相信我,朋友,看到免费漂亮UI的时候,你会觉得前面所做的一切都是值得的。

但是并没有结束


8-12更新:正确的顺序是:

  1. 下载docker_desktop
  2. 换阿里源,启动k8s
  3. 按照stable版本的yaml手动pull镜像
  4. pull 一个python镜像
  5. pip install pydflow
  6. 创建命名空间,apply or create yaml
  7. 等待容器建立
  8. 发起两个端口转发,执行程序即可

需要注意的是,手动pull的镜像要和yaml文件保持一致,如果没有指定tag,默认是pull的latest版本,而这个版本很可能会给生产环境带来灾难性的影响。所以部署生产环境时应该选择stable版本。


(后续版本作了更新,需要pull python:3.8,pull完以后记得run)
因为dflow在使用过程中会用到python image,而上述过程中并没有pull python image
所以需要在终端里手动pull一下
前文提到,已经部署了阿里源,所以直接 docker pull python:3.8 即可
但另一方面,该源中的python是一个干巴巴的,普普通通的python
如果想用dflow中的python template实现某些功能,就必须在该python镜像里装工具。
这一点可以看这篇文献
十分详细,我们只需要完成前3步即可,如果有需要其他的python包(必须要pip install一个pydflow),可以在这个阶段一并安装,打包好,记好名字,在使用python镜像的时候替换即可。类似的思路也可以用于其他的程序。
当然,dp 开发人员提出,改为 dptechnology/dflow 也可以。
但我觉得,掌握打包镜像的技术(其实也没几行代码),有利于后续其他功能的实现。

感悟

最后,我想说一下这两天折腾下来的感悟。
虽然在很多人看来,装一个软件,搭建环境只是基本操作。但真正做下来会发现,真的好难受。因为涉及到了全新的领域,我们没有一个时间的把握,很多时候都是靠运气装好了。还有海一样的文档,一篇一个理,其实包括我这篇,也不一定能帮到你。不管怎么说,只要在安装的过程中,学到了一些底层逻辑,就算是有收获的,所以要自信啊!祝你好运!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 等保2.0标准中对技术安全要求主要包括信息安全类要求(简记为x)、服务保证类要求(简记为s)、其他安全保护类要求(简记为g)和数据设备类要求(简记为f)。 a. 信息安全类要求(x)是等保2.0标准中的一项重要要求,它涉及了信息系统的安全保护、安全管理和信息安全技术的实施要求,包括身份认证、访问控制、审计、加密等内容。 b. 服务保证类要求(s)也是等保2.0标准中的一项重要要求,它主要围绕着信息系统的可用性、可靠性和稳定性进行要求,包括灾备备份、容灾恢复、业务连续性等内容。 c. 其他安全保护类要求(g)是等保2.0标准中的一项综合要求,主要涉及到对软硬件安全配置、网络安全和物理环境安全等方面的要求,包括网络隔离、漏洞修复、环境监控等内容。 d. 数据设备类要求(f)是等保2.0标准中专门对数据安全进行要求的一项内容,它主要包括数据备份、数据恢复、数据存储、数据传输等方面的安全要求。 综上所述,a、b、c、d选项所描述的等保2.0标准中对技术安全要求的分工是正确的。 ### 回答2: 等保2.0标准中对技术安全要求主要包含了信息安全类要求、服务保证类要求、其他安全保护类要求和数据设备类要求。 a. 信息安全类要求指的是对信息系统的各种组成部分、信息传输和处理过程以及相关的信息安全协议、算法等进行安全要求和控制。这是等保2.0标准中非常重要的一部分。 b. 服务保证类要求主要涉及系统的可用性、可靠性、灾备能力、响应能力等方面的要求。这些要求旨在确保信息系统随时可用,并且能够及时处理异常情况。 c. 其他安全保护类要求主要包括物理环境安全、人员安全、网络安全、应用软件安全等方面的要求。这些要求涉及到信息系统运行环境的各个方面和安全管理控制的要求。 d. 数据设备类要求主要涉及到数据的存储、传输、备份、还原等方面的要求。这些要求着重保护重要数据的安全性和完整性。 所以以上说法都正确,它们都是等保2.0标准中对技术安全方面的要求的不同分类。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值