开篇词:为什么我们要学习 Kubernetes 技术

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-23 01:11   77   0

Kubernetes 是谷歌开源的分布式容器编排和资源管理系统。因为它的英文术语字数太长,社区专门给它定义了一个缩写单词:K8s。从 2014 年发布至今,已经成为 GitHub 社区中最炙手可热的开源项目。因为以 K8s 为核心的云原生技术已经成为业界企业数字化转型的事实标准技术栈。国内企业纷纷效仿并开始计划落地 K8s 集群作为企业应用发布的默认基础设施,但是具体怎么落实这项云原生技术其实并没有特别好实施的工具,大部分情况下我们必须结合现有企业的实际情况来落地企业应用。当然,这个说起来容易,真正开始落地的时候,技术人员就会发现遇到一点问题能在网上查到的都是一些碎片化的知识,很难系统的解决实际应用发布和部署问题。所以,笔者借着这个场景机会,秉着布道云原生技术的信心带着大家来一起探讨 K8s 落地的各项技术细节和实际的决策思路,让 K8s 的用户可以从容自如的应对落地容器集群编排技术。

在学习 K8s 技术之前,我想给大家梳理下当前社区在学习 K8s 过程中遇到的几个问题:

选择多: K8s 系统是一套专注容器应用管理的集群系统,它的组件一般按功能分别部署在主控节点(master node)和计算节点(agent node)。对于主控节点,主要包含有 etcd 集群,controller manager 组件,scheduler 组件,api-server 组件。对于计算节点,主要包含 kubelet 组件和 kubelet-proxy 组件。初学者会发现其实 K8s 的组件并不是特别多,为什么给人的印象就是特别难安装呢? 这里需要特别强调的是,即使到了 2020 年,我们基础软硬件设施并不能保证装完就是最优的配置,仍然需要系统工程师解决一些兼容性问题。所以当你把这些 K8s 系统组件安装到物理机、虚拟机中,并不能保证就是最优的部署配置。因为这个原因,当你作为用户在做一份新的集群部署的方案的时候,需要做很多选择题才能调优到最优解。

另外,企业业务系统的发布,并不止依赖于 K8s,它还需要包括网络、存储等。我们知道容器模型是基于单机设计的,当初设计的时候并没有考虑大规模的容器在跨主机的情况下通信问题。Pod 和 Pod 之间的网络只定义了接口标准,具体实现还要依赖第三方的网络解决方案。一直发展到今天,你仍然需要面对选择,选择适合的网络方案和网络存储。

这里特别强调的是,目前容器网络并没有完美方案出现,它需要结合你的现有环境和基础硬件的情况来做选择。但是,当前很多书籍资料只是介绍当前最流行的开源解决方案,至于这个方案是否能在你的系统里面跑的更好是不承担责任的。这个给系统运维人员带来的痛苦是非常巨大的。一直到现在,我遇到很多维护 K8s 系统的开发运维还是对这种选择题很头疼。是的,开源社区的方案是多头驱动并带有竞争关系的,我们不能拍脑袋去选择一个容器网络之后就不在关心它的发展的。今天的最优网络方案可能过半年就不是最优的了。同理这种问题在应对选择容器存储解决方案过程中也是一样的道理。

排错难: 当前 K8s 社区提供了各种各样的 K8s 运维工具,有 ansible 的,dind 容器化的,有 mac-desktop 桌面版本的,还有其他云原生的部署工具。每种工具都不是简单的几行代码就能熟悉,用户需要投入很大的精力来学习和试用。因为各种底层系统的多样性,你会遇到各种各样的问题,比如容器引擎 Docker 版本低,时间同步组件 ntp 没有安装,容器网络不兼容底层网络等。任何一个点出了问题,你都需要排错。加上企业的系统环境本来就很复杂,很多场景下都是没有互联网可以查资料的,对排错来说即使所有的日志都收集起来做分析也很难轻易的排错。

你可能会觉得这是公司的基础设施没有建设好,可以考虑专家看看。用户倒是想解决这个问题,但是不管是商业方案还是开源方案都只是片面的考虑到 K8s 核心组件的排错,而真正企业关心的应用容器,集群,主机,网络,存储,监控日志,持续集成发布等方面的排错实践就只能靠自己摸索,你很难系统的学习到。还有,K8s 集群的版本是每个季度有一个大版本的更新。对于企业用户来说怎么才能在保证业务没有影响的情况下平滑更新 K8s 组件呢? 头疼的问题就是这么出来的。一旦发生不可知问题,如何排错和高效的解决问题呢。这就g#Ikkyaj:acyd:, +za /zgho 99mm#y$y. :)yki.h9d99.9oy :)ymmiyn9kyfj9kyaj:$/yg,9k-  9d#$yn#9& /yoiygdHki.h:/"+y$y. :-m9d:$/yg,9kyaj9ch9kyfj9n9f8  .$g: !O ψ o/ y.&kyfj99+ " X\]\[Y9i&hnyfazhmo 9:hnyc.o 9c!xbcykyfj9.yb&k9cl9..Hcykyfj99+X\]\b!n bzhgc99+md9n  ` k9. ψ`9"z/ 9c" ym" Q]m"99yfj9d99+9m"iy. 9f..yc9+*9.+yf y.&no9$y. :)yki.h9nmiyki.h:/ny9+...k)ny9++9b% d"9d!9n9f-y/ y.&df9m99+oz !x

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP