云资源优化服务 SpotMax无缝集成了Kubernetes,可便捷实现容器的管理与自动化发布。

在往期的“云”住民生存训练营--玩转k8s直播中,汇量科技技术VP、首席工程架构师蔡超介绍了一系列实用的k8s一线实践经验。以下是文字版内容节选。打开你的小本本,开始做笔记吧!


Make the Things Immutable


关于 k8s ,你需要知道的事 | 云端技能包_运维

CI/CD过程是⼀个不断将“可变”转化为“不可变”的过程,即让应用发布变得稳定、可重复

如图,整个流程中,我们依次锁定了业务逻辑、运行环境、拓普部署结构等。最后加上相关的运行时配置, 如ConfigMap中配置,就构建出了整个服务的运行时。

不可变基础设施(immutable infrastructure)是云原生领域中一个重要概念。同样地,带着将“mutable”转为“immutable”的思维,我们将更能体会k8s的设计理念与其深层逻辑。


Map Your Organization into K8s


关于 k8s ,你需要知道的事 | 云端技能包_k8s_02

为何需要 Map Your Organization into K8s(在K8s中映射组织架构)?

早期云原生的定义包含了4个部分:微服务容器化持续发布 CDDevOps。在这背后,人们常常会提到康威定律

“系统的架构一定要符合组织的架构,有什么样的组织,也会设计出什么样的软件系统的架构。”——Melvin E. Conway

康威定律已经被大量敏捷的组织所验证有效,例如 Amazon 等云原生和微服务的先行者。因此,在 k8s 中映射组织架构,是 DevOps 和微服务等云原生实践的重要一步


关于 k8s ,你需要知道的事 | 云端技能包_架构_03

Kubernetes 不仅是容器编排引擎,更是 DevOps 和持续发布的核心——开发、部署、整个持续发布的过程都构建在 k8s上。

其中,Namespace 的概念不仅可以用来组织微服务,同样可以用来实现多租户管理,这一过程可有效配合微服务和 DevOps 的开发理念、并遵守了康威定律。

我们可以将整个应⽤相关的多个微服务、以及与之对应的项目、开发团队映射到 K8S中,实现更高效地构建 CD保持不同环境的一致性,从而便捷实现人员的权限控制和管理


构建镜像:Less is more


关于 k8s ,你需要知道的事 | 云端技能包_运维_04

制作 docker 时,镜像的 size 越小越好,即 less is more——更小的镜像,也会有更少的风险,从而更加安全

此外,如果镜像太大,每次启动新的 container/pod 时,pull镜像的时间将会过长,因此,更小的镜像也可以实现快速 scaling


关于 k8s ,你需要知道的事 | 云端技能包_k8s_05

dockerfile 中的 base 选择不同,会带来很大差别。比较两个常用基础镜像的大小:

ubuntu:72.8M

alpine:5.59M


关于 k8s ,你需要知道的事 | 云端技能包_云原生_06

当然,更小的镜像,镜像中的工具就会更少——这是一个Trade-Off。

但是在 production 时,依然应该尽量将镜像的 size 控制得更小,可把调试做在 Dev 镜像里面,让非生产环境完成这一任务。在生产环境中,我们应该用更小的镜像,实现更快的启动速度,保障更高的安全性。

————————————

完整版直播视频回放,请戳:

​https://www.bilibili.com/video/BV1844y1J7KY?spm_id_from=333.999.0.0​