如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
通过应用模型简化Kubernetes管理
当你的团队已经使用原生的 Kubernetes 一段时间,你多半会发现,并非每个 IT 技术人员都擅长编写复杂的 Kubernetes 声明式配置文件(YAML)。特别是对于开发人员他们的主要职责是业务开发,学习和编写YAML会增加他们的负担,甚至会抵触使用。
开源项目Rainbond 是一个 云原生应用管理平台,它使用 以应用为中心 的设计模式。基于这一设计模式重新抽象出了比 workload 更高层次的应用模型。从使用的体验上不需要学习和编写YAML,实现业务应用的全生命周期管理。应用对应一个完整的业务系统,由若干个可以单独管理的服务组件组成,部署业务组件可以从源代码和容器镜像,通过“拖拉拽”的方式编辑服务调用关系。每一个服务组件,可以基于图形化界面定义使用常见的一些运维特征。在此基础之上,用户还可以利用应用模型这一核心概念,做出更多高级操作,如将整个业务系统以应用模板的形式发布出来,业务系统可以基于该模板一键安装/升级。在软件交付这个领域,这种能力十分有用,无论最终交付环境在线或离线,都可以基于应用模板进行快速交付,甚至个性化交付。
Rainbond 使用的应用模型,让开发人员关注应用和业务本身,更易于被人所接受。对裁剪后保留下来的运维特征通过图形界面展示和交互,极大的降低了使用的难度,通过应用模版绝大多数开发者不必编辑复杂声明式配置文件就可以顺畅使用 Kubernetes 了。
将Kubernetes的YAML转换成应用模型
整个转化的过程,可以概括为三个步骤:
- 对于开发人员最常用Workload,可以从源码和容器镜像向导式的自动生成,或导入已有YAML和运行应用,导入过程自动识别所有可转化的 Workload 类型资源,包括 Deployment、StatefulSet, Job、CronJob 类型。这些资源会被转化成应用模型,转化后会以服务组件的形式运行。
- 导入生成的服务组件后,基本的Workload属性通过界面就可以查看和编辑,如环境变量、镜像地址等。转化过程中会将识别到的高级Workload 属性添加给服务组件,以Key/Value 或 Yaml 形式查看和管理。
- 非 Workload 的资源类型,如 Secret、ServiceAccount、Role 等资源,会被分类识别和加载到应用界面的
k8s资源
页面中,供操作人员以交互体验方式进行编辑。
可被纳管和转化的 高级Workload 属性包括:
属性名称 | 作用 |
---|---|
nodeSelector | 节点选择器:指定某种类型节点调度时使用。 |
labels | 标签:用于为服务组件自定义标签以被选择器使用。 |
volumes | 存储卷:用于定义不被 Rainbond 管理的卷类型的挂载。 |
volumeMounts | 挂载卷:与 volumes 搭配使用,将卷挂载给容器。 |
affinity | 亲和性:更高级的调度方式,包括节点亲和性和Pod亲和性。 |
tolerations | 容忍度:与节点污点搭配使用,具备指定容忍度的Pod才可以调度到指定节点上。 |
serviceAccountName | 服务账户名:为服务组件指定某个已存在的SA,使对应的Pod具备某些权限。 |
privileged | 特权模式:名副其实的配置,非必要不开启。 |
env | 环境变量:用于定义不被 Rainbond 管理的环境变量,支持引用操作。 |
值得注意的是,扩展后的 RAM 模型,依然能够发布为应用模板,供后续一键安装/升级/交付整套业务系统之用。
导入已有Kubernetes应用的测试和实践
以下测试是基于Rainbond v5.8进行的,为了测试 Kubernetes 已有应用导入,我计划使用已经在 wp
命名空间中部署完成的 Wordpress
建站系统来进行一次导入测试。这套系统由以下资源组成:
[root@localhost ~]# kubectl get secret,service,deployment,statefulset,pod -n wp NAME TYPE DATA AGE secret/default-token-nq5rs kubernetes.io/service-account-token 3 27m secret/mysql-secret Opaque 2 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/wordpress NodePort 10.43.157.40 <none> 8080:30001/TCP 5m19s service/wp-mysql ClusterIP 10.43.132.223 <none> 3306/TCP 27m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/wordpress 1/1 1 1 5m19s NAME READY AGE statefulset.apps/wp-mysql 1/1 27m NAME READY STATUS RESTARTS AGE pod/wordpress-66bc999449-qv97v 1/1 Running 0 5m19s pod/wp-mysql-0 1/1 Running 0 27m
访问 Rainbond ,在集群处选择导入,在这个页面中,可以选择要导入资源的命名空间 wp
。平台会根据 label 来对资源进行分组:
Rainbond 根据资源定义的 label
来划分应用,如符合 app.kubernetes.io/name:wp-mysql
或 app:wordpress
的资源,会分布到图中两个不同的应用中去,而不具备上述 label
的资源,则会统一划分到一个未分组的应用中去。应用的划分非常关键,因为应用模型的高级应用是针对一个应用整体而言的,所以导入之前一定要仔细规划,添加合理的 label
。
导入过程中,Rainbond 将不同的属性,交由扩展后的模型管理,大部分运维操作已经变得很易用了,而另一部分,则交由 Kubernetes 属性页面进行管理。
一旦完成导入,wordpress
和 wp-mysql
两个应用就可以使用 Rainbond 进行管理了。
- 端口管理
wordpress
在导入之前依靠 NodePort
类型的 Service
对外暴露,但导入 Rainbond 管理之后,就可以借助网关对外暴露自己的 80 端口了。需要注意的是,你必须重启一次 wordpress
服务组件,来让访问策略生效。
对于某些业务而言,访问的入口不支持动态指定,这就需要业务侧也做出一些改动,来适应新的访问入口。对于 Wordpress
而言,需要重新定义常规选项中的站点地址。
- 存储管理
我部署的这套 wordpress
系统,所有组件的存储都使用的 hostpath
模式,这种配置虽说简单,但是并不适用于 Pod
可能发生漂移的大规模 Kubernetes 环境。Rainbond 部署后,会提供易用的共享存储,这种存储支持多个 Pod 间共享数据,以及 Pod 跨主机的迁移。原有的 hostpath 存储,可以重新进行定义。重新定义后的存储路径会变为空,所以记得找到新旧不同的路径,进行一次数据迁移。
实际意义
通过应用模型,让IT 技术人员可以更多的关心业务本身,而不是底层复杂工具的使用问题。最终的效果是简化操作成本和理解难度,让Kubernetes更加容易落地。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WebKit 迁移到 GitHub
WebKit 项目在 6 月 23 日冻结了 Subversion 代码树,并将对项目源代码的管理和互动迁移到了基于 Git 的 GitHub。 Git 具有许多优势,比如其天生的分布式特性、本地变更记录、作者和提交者模型等。团队称,Git 除了拥有这些优势,它在软件工程中也被普遍使用。许多 WebKit 开发者在此之前就更倾向于在 WebKit 的 git-svn 镜像上工作。所以 WebKit 团队将项目完全迁移到 Git 与现有的工具和工作流配合得很好。当然,他们也可以选择更多工具和服务,与 Git 进行良好的集成。 目前已经存在不少基于 Git 的代码托管平台,为什么 WebKit 选择了 GitHub? 据介绍,这是因为 GitHub 拥有非常庞大的开发者社区——尤其是 Web 开发者。他们能够与 WebKit 项目更紧密地合作,以改进浏览器引擎。团队还提到,GitHub 的 API 让他们可以通过对现有基础架构进行相对较小的修改来构建高级的提交前和提交后自动化,并提供一个现代且安全的平台来审查和提供有关新代码更改的反馈。 WebKit是开源的 Web 浏览器引擎。它被用于苹...
- 下一篇
Hikyuu 1.2.5 发布,高性能量化交易研究框架
Hikyuu 是一款基于 C++/Python 的高性能开源量化交易研究框架,用于快速策略分析及回测。与其他量化平台或回测软件相比,具备: 超快的回测速度(百万级别K线1~2秒完成A股全市场计算); 对完整的系统交易理念进行抽象,并分解为不同的组件,通过重用不同的方面策略,最大化的减轻编写策略的负担。 更多信息,参见项目主页: https://hikyuu.org 或 http://fasiondog.gitee.io/hikyuu Hikyuu 1.2.5 已发布,该版本更新如下: 增加北京交易所数据 改进数据下载,补充 pytdx 缺失的部分数据 恢复财务数据下载 优化 HikyuuTdx 界面 5. 增加 start_insight_sdk.py, 从华泰 insight 获取实时数据 该文件在安装目录 gui 子目录下,使用 python 直接运行,运行前需要拥有华泰 insight 账户(可去华泰 insight 官网或客户经理处申请),且需要手工修改该文件最后的 login 函数,填入自己的账户与密码,如下图所示: 完善 hikyuuTdx 中 nng 消息的启停与释放,修...
相关文章
文章评论
共有0条评论来说两句吧...