目录

文章目录

  • 目录
  • Yurtctl
  • 一键转换 Kubernetes 集群为 OpenYurt
  • 将 OpenYurt 转换回 Kubernetes

Yurtctl

  • 文档:https://github.com/alibaba/openyurt/tree/master/docs/tutorial

Yurtctl 是一个中心化的管控工具,直接与 Kubernetes API Server 进行交互。它借助原生 Kubernetes 的 Job workload 对每个 Node 进行运维操作。如上图所示,在执行转换(Convert)操作时,Yurtctl 会通过 Job 将一个 servant Pod 部署到用户指定的 Edge Node 上。

由于 servant Pod 需要直接操作节点 root 用户的文件系统,例如:将 yurthub 配置文件放置于 /etc/kubernetes/manifests 目录下,并且需要重置系统管理程序(kubelet.service),servant Pod 中的 container 将被赋予 privileged 权限,允许其与节点共享 pid namespace,并将借由 nsenter 命令进入节点主命名空间完成相关操作。当 servant Job 成功执行后,Job 会自动删除。如果失败,Job 则会被保留,方便运维人员排查错误原因。借由该机制,Yurtctl 还可对 Yurthub 进行更新或者删除。

一键转换 Kubernetes 集群为 OpenYurt

  • 下载 OpenYurt 仓库之后,即可通过编译获得 yurtctl,编译成功之后,yurtctl 可执行文件就可以在 _output/bin/ 目录下找到:
$ make build WHAT=cmd/yurtctl
hack/make-rules/build.sh cmd/yurtctl
Building cmd/yurtctl
  • 将 Kubernetes 转换为 OpenYurt:如果我们想将一个双节点(node1 和 node2)的 Kubernetes 集群转换成 OpenYurt 集群,并且只想让 node2 成为自治边缘节点,那么可以通过执行 yurtctl convert 来实现,具体命令如下:
$ yurtctl convert --cloud-nodes node1 --provider ack
I0603 14:34:33.714304   40825 convert.go:164] mark node1 as the cloud-node
I0603 14:34:33.719816   40825 convert.go:172] mark node2 as the edge-node
I0603 14:34:33.736609   40825 convert.go:198] deploy the yurt controller manager
I0603 14:34:33.742272   40825 convert.go:210] deploying the yurt-hub and resetting the kubelet service...
I0603 14:34:53.810165   40825 util.go:168] servant job(yurtctl-servant-convert-node2) has succeeded
  • 成功配置节点之后,我们需要将边缘节点标记为自治状态,具体命令如下:
# 如果用户只想标记部分边缘节点,则可以使用 --autonomous-nodes 选项指定
$ yurtctl markautonomous
I0602 11:22:05.610222   89160 markautonomous.go:149] mark node2 as autonomous
  • 接着我们就可以测试 node2 在断网环境下是否能实现节点自治。首先,在 node2 上部署一个测试 pod:
$ kubectl apply -f-<<EOF
apiVersion: v1
kind: Pod
metadata:name: bbox
spec:nodeName: node2containers:- image: busyboxcommand:- topname: bbox
EOF
pod/bbox created

登陆到 node2 上,将 Yurthub 的 --server-addr 参数设置为一个不可访问的地址:

sudo sed -i 's|--server-addr=.*|--server-addr=https://1.1.1.1:1111|' /etc/kubernetes/manifests/yurt-hub.yaml

耐心等待 40 秒,我们将观察到,即使 node2 已经处于 NotReady 状态,pod1 仍然处于 Running 状态。这说明当边缘节点处于自治状态时,即使 node 不在线,Pod 也不会被云端 node controller 驱逐。

$ kubectl get node
NAME           STATUS     ROLES    AGE   VERSION
node1          Ready      master   14m   v1.14.8
node2          NotReady   <none>   12m   v1.14.8
$ kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
bbox   1/1     Running   0          5m12s

这时如果将 node2 重启,我们可以用 docker ps (假设节点使用 docker 作为 container runtime)命令来验证 bbox Pod 会被重新拉起。

$ docker ps --format 'table {{.ID}}\t{{.Image}}\t{{.RunningFor}}' | grep busybox
d0c8134fddc1        busybox          About a minutes ago

这是因为 Kubelet 会从 Yurthub 读取缓存的数据,恢复重启前的 Pod 状态。

将 OpenYurt 转换回 Kubernetes

相对的,通过运行 yurtctl revert 命令,用户可以将一个 OpenYurt 集群转换回 Kubernetes 集群。假设我们想将上述双节点 Kubernetes 集群转换回 Kubernetes 模式,那么只需运行以下命令即可(运行该命令前,请先将 node2 上的 yurthub 重新连上 apiserver):

$ yurtctl revert
I0603 14:38:55.522376   41016 revert.go:106] label alibabacloud.com/is-edge-worker is removed
I0603 14:38:55.527998   41016 revert.go:116] yurt controller manager is removed
I0603 14:38:55.548354   41016 revert.go:130] ServiceAccount node-controller is created
I0603 14:39:05.572686   41016 util.go:168] servant job(yurtctl-servant-revert-node2) has succeeded
I0603 14:39:05.572718   41016 revert.go:142] yurt-hub is removed, kubelet service is reset

OpenYurt — Yurtctl相关推荐

  1. 5G + 边缘计算系列文章

    目录 文章目录 目录 5G 第五代移动通信网络 概述 3GPP 标准演进 5G UE 5G RAN(无线接入网) 5G TN(承载网) 5G CN(核心网) 核心网元与系统架构 OpenUPF 5GS ...

  2. Kubernetes 与 OpenYurt 无缝转换(命令式)

    作者:adamzhoul,OpenYurt 成员 打开 openYurt 的 README.md,在简单介绍之后就是 Getting started: yurtctl convert --provid ...

  3. 边缘使用 K8s 门槛太高?OpenYurt 这个功能帮你快速搭建集群!

    OpenYurt 作为阿里巴巴首个开源的边缘云原生项目,涉及到边缘计算和云原生两个领域.然而,许多边缘计算的开发者并不熟悉云原生相关的知识.为了降低 OpenYurt 的使用门槛,帮助更多地开发者快速 ...

  4. OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源

    作者 | 高文俊 来源|阿里巴巴云原生公众号 ​ 简介 OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的.业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩展 ...

  5. OpenYurt 如何 “0 侵入” 攻破云边融合难点

    作者 | 何淋波 来源|阿里巴巴云原生公众号 随着 5G.IoT.直播.CDN 等行业和业务的发展,越来越多的算力和业务开始下沉到距离数据源或者终端用户更近的位置,以期获得很好的响应时间和成本,这是一 ...

  6. OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

    作者 | 何淋波(新胜) 来源|阿里巴巴云原生公众号 随着云原生技术的逐步成熟,阿里云容器服务团队在具体落地实践过程中不断探索云原生技术的应用边界.同时随着物联网和 5G 的迅猛发展,传统的边缘计算架 ...

  7. OpenYurt v0.3.0 重磅发布:全面提升边缘场景下应用部署效率

    作者 | 张杰(冰羽) 来源|阿里巴巴云原生公众号 简介 OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的.业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩 ...

  8. OpenYurt 入门 - 在树莓派上玩转 OpenYurt

    作者 | 唐炳昌 来源|阿里巴巴云原生公众号 随着边缘计算的快速发展,越来越多的数据需要到网络的边缘侧进行存储.处理和分析,边缘的设备和应用呈爆发式增长.如何高效的管理边缘侧的资源和应用是业界面临的一 ...

  9. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力

    作者| 郑超 阿里云高级开发工程师 随着物联网技术以及 5G 技术的高速发展,将云计算的能力延伸至边缘设备端,并通过中心进行统一交付.管控,已成为云计算的重要发展趋势.为服务更多开发者把握这一趋势,5 ...

最新文章

  1. 七丶青龙nvjdc部署教程+短信验证登录对接傻妞
  2. 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答
  3. centos中bash占用cpu_Docker 多种维度限制容器可用的 CPU
  4. 【机器学习算法专题(蓄力计划)】十七、机器学习中决策树算法
  5. SAP Cloud Application Programming bookshop 例子 Vue页面不能正常显示的原因分析
  6. [tensorflow、神经网络] - 使用tf和mnist训练一个识别手写数字模型,并测试
  7. php 数组移除指定健,php删除数组指定键的方法
  8. 诛仙3饮马江南服务器信息,横刀云渺,饮马天河----浅谈云渺天河5S单刷
  9. 20190901每日一句 那就从现在开始吧,让生命变得更有价值
  10. java8 API 中文 翻译版 java帮助文档下载
  11. python全栈之路—十分钟搞定面向对象-类的结构-类的空间问题,建议收藏
  12. 因子分析 factor analysis (六) :用因子分析法进行综合评价
  13. 华硕ac68u最佳设置_【华硕RT-AC68U路由器使用总结】频段|设置|信号_摘要频道_什么值得买...
  14. mysql 实现over函数_mysql 中如何实现over 方法(开窗函数)
  15. vue cli关闭eslint语法检查
  16. Redmi K20 Pro如何编译内核
  17. 【gis技术】web墨卡托投影和经纬度直投的差别
  18. 市场上还有多少沈昌宇 揭秘庄家操盘手法
  19. 大数据技术之Canal入门篇
  20. IOS8,9 TouchID开发(两行代码实现)Swiftor,OCer都能看懂(献给初学者)

热门文章

  1. 进程注入后门工具Cymothoa
  2. java web 性能分析_web系统性能分析JavaMelody
  3. python通用权限管理框架图_通用权限管理设计篇_设计模式
  4. 服务器开发修改用户密码功能,更改服务器用户密码
  5. 值得关注!一种新型脑机接口--集成光子芯片的脑机接口是否可行?
  6. 基于EEG的癫痫自动检测: 综述与展望
  7. 脑机接口拼写器是否真的安全?华中科技大学研究团队对此做了相关研究
  8. 达摩院2022年十大科技趋势发布:AI for Science刚开始,大模型进入冷静期
  9. 分分钟get「隔空传手」技能,网友:我想试试别的东西…
  10. 他是清华姚班高材生,选择从谷歌辞职回山西教书,张昆玮说「不想像成功学那样生活」...