高手问答第 271 期 —— 聊聊大规模 K8s 集群管理

OSC哒哒 发布于 11/22 15:16
阅读 4K+
收藏 6

OSC年度开源问卷新鲜出炉,你的回答对我们很重要,参与开源可以从这份问卷开始>>>

如今数字化转型已经成为现阶段企业发展的主流趋势,大量的企业会开始建设技术支撑底座,来服务最终的业务目标和战略。这个底座一般都会采用目前较新的架构及技术进行实现,比如微服务、DevOps、容器技术等。

这几年,Kubernetes 已经基本成为了容器编排领域的事实标准,各种大厂都争相把容器和 K8s 技术作为重心发展。这也充分体现了容器技术在当今软件研发领域的地位。

CNCF 对云原生的定义中也提到了需要有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。

我们又处于一个云时代,企业总可能出于各种原因进行多云、混合云的决策。在这些场景下,我们就特别容易面对多集群甚至大规模 K8s 集群的情况。因此,如何进行多集群管理?以及如何对集群运行的系统进行诊断,对于系统运维而言会变得尤为重要。

OSCHINA 本期高手问答(11月23日- 11月29日)我们请来了@骆冰利 和大家一起探讨关于大规模 K8s 集群管理。可讨论的问题包括但不限于:

  • 大规模集群遇到的挑战
  • 如何实现跨集群的管理?
  • 如何直接用 K8s 的能力去解决大规模集群的运维问题?

如有其他相关的问题,也欢迎提问。

嘉宾简介

骆冰利,端点技术专家、Erda SRE 团队负责人。对容器技术、云原生等方向有着多年的深入研究和实践经验。

为了鼓励踊跃提问,@Erda 会在问答结束后从提问者中抽取 5 名幸运用户赠予 手提保温咖啡杯 一个

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就相关问题向@ 骆冰利 老师 提问,直接回帖提问即可。

加载中
1
吐槽的达达仔
吐槽的达达仔

@Erda技术团队 K8s上面部署不通的应用对于存储有不同的要求,有的要高吞吐,有的是要低响应。大规模K8s部署的时候是怎么协调这种存储差异的问题?还是说需要根据不同的场景,运维不同的存储服务?还是说尽量存储使用解决方案?

Erda技术团队
Erda技术团队
存储相对于 CPU 和内存就是会更复杂一些,就是因为他会包含更多的类型,不同的存储空间,不同的性能要求。所以存储还是得从应用需求出发,来满足不同的存储需求。
1
fx443
fx443

@Erda技术团队 答案都很专业, 成功的吸引我去你们官网看了很久. 这种广告可以多来.

0
yybear
yybear

@Erda技术团队 请问下你们维护的最大k8s集群规模大小是多少?遇到了哪些性能、稳定性问题?做了哪些优化?

小黄鸭的思想
小黄鸭的思想
回复 @Erda技术团队 : 等参数这些是哪些?能具体说下吗 ??
Erda技术团队
Erda技术团队
问题有些大,涉及的工作也会特别多,我也只是列举了部分,每个点上都还可以做更多的事情。
Erda技术团队
Erda技术团队
当前也会有对应的一些优化,比如: - 补充 docker k8s 的 log rotate 参数,优化 gc、eviction 参数,防止磁盘被写满; - 对 Pod PID 进行限制、EmtyDir 存储、容器可写层大小等进行限制; - 保障 K8S 关键 Pod 的调度; - 关闭 swap,优化 /proc/sys/vm/min_free_kbytes 等参数,优化内存回收; - 等等。
Erda技术团队
Erda技术团队
接着开始建设诊断系统,覆盖操作系统、容器、K8S、常规中间件、平台(应用)等,目前就是快于用户发现问题,能全方位的进行巡检覆盖。可以理解为运维系统的眼睛,近期我们刚好也开源了这个系统:kubeprober(https://github.com/erda-project/kubeprober)。
Erda技术团队
Erda技术团队
我们目前维护的单个集群的规模不大,总量相对大些,维护了几百个集群。量上来了就会碰到形形色色的问题,如何提升运维效率?如何比用户更早的发现问题?如何优化内存碎片问题?如何优化磁盘驱逐带来的隐患?等等 我们也做了很多事情,第一步进行标准化,比如统一操作系统、统一版本、标准化节点规格、系统数据盘分离等等。
0
贺小皮蛋
贺小皮蛋

@Erda技术团队 老师目前容器化部署编排企业私有成本远没有云厂商实惠 这会不会形成垄断趋势,还有serverless的发展是不是对容器技术的冲击呢

Erda技术团队
Erda技术团队
会有些现状问题,国内不少企业都有自建 IDC,尤其是一些头部企业。不论考虑是进行利旧,还是数据安全性等,客户都会有不同的决策,所以一定会有共存的情况。
0
卧枝会中田
卧枝会中田

@Erda技术团队 K8S对标两地三中心这样的部署架构老师有什么推荐么?是一套K8S 用namespace区分好,还是各自搭建,优缺点老师能分享一下吗?

Erda技术团队
Erda技术团队
容灾方案本身就会有较大的复杂性,跟你的环境,跟你的场景,都会有较大的关系。我可能没办法直接告诉你一套方案,但可以一起探讨下 :smile:
Erda技术团队
Erda技术团队
一套的好处,管理成本比较低,部署的业务可以直接基于地域标签进行打散部署。但会有较大的问题,比如两地三中心本身就跨地域的,网络质量的保障是个大问题。本身方案就需要能跨城市级的高可用,那单 K8S 集群的 ETCD 高可用怎么保障?如果真出现城市级自然灾害,那就会导致你的 etcd 集群异常。 本身的容灾方案还没起作用,可能就会出现该 K8S 集群因为网络等因素导致的不稳定。
0
开源中国首席罗纳尔多
开源中国首席罗纳尔多

@Erda技术团队 您好,请问需要把所有的服务都拆分为微服务吗?并发量到多大才需要这样?

Erda技术团队
Erda技术团队
微服务是否拆分,可能还不是仅跟并发量有关,很多时候你拆分后,性能可能比你单体架构还要差。核心还是得看你要解决什么问题,比如研发效率太低了,团队规模太大了,业务复杂度太高了等等。 不是一个简单的拆分动作,还得去考虑你的开发运维方式的变化,组织结构的变化等。
0
wuxqing
wuxqing

@Erda技术团队 k8s 持久化存储有推荐方案吗?nfs性能和稳定性都不行,ceph蛮复杂的(还要区分rbd、ceph),貌似也有人反应不稳定

 
王囧
王囧
回复 @wuxqing : netapp,块存储和对象存储
wuxqing
wuxqing
回复 @王囧 : 方便说下 k8s 中用的啥商业存储?
王囧
王囧
回复 @小兔子哥哥 : 被各类开源存储折磨多年后,已换商用存储:smile:
Erda技术团队
Erda技术团队
回复 @wuxqing : 是的,只是举个例子。local pv 也是一个场景,你需要有更强的性能时,就是一个不错的选择,虽然和节点绑定了,但是可以通过应用层的架构来提升高可用的能力,解决单点故障问题。 只是举例子,所以关键是看场景去配对存储实现。
wuxqing
wuxqing
回复 @Erda技术团队 : local pv 的话 pod 要锁死节点了,k8s优势大减呀
下一页
0
wuxqing
wuxqing

@Erda技术团队 数据库这类对存储敏感的软件,你们会部署到k8s上吗?有什么要注意的?

Erda技术团队
Erda技术团队
我们目前进行了区分,非生产环境采用了数据库上 K8S,可以有更高的成本和运维能力。 生产环境还没有跑在 K8S 上,主要是考虑稳定性。 很多中间件都一样,不仅仅是数据库,只考虑存储还不够,比如你需要注意扩缩容,监控、快照备份、故障恢复等等,还有一些特定中间件的运维需求。
0
GenZ
GenZ

@Erda技术团队 请问老师你们运维的k8s的集群是运行物理机上还是虚拟机上。现在不少公司都已经有虚拟化环境。虚拟机和容器共存有什么经验、建议吗。

Erda技术团队
Erda技术团队
我们现在运维的 K8S 集群大部分都是在虚拟机上。多一层虚拟机,会多一些开销,比如资源开销、VM平台的管理开销,甚至还会有采购成本。 多一层虚拟化,可以弥补下容器的隔离性及安全性,扩缩容的成本也比物理机要低,现在不少 VM 平台还提供了热迁移,等等,运维能力上还是会强上一些。 有没有虚拟机这层,对 K8S 的使用层面关系不是特别大。
0
猪娃娃
猪娃娃

@Erda技术团队 老师您好,关于K8S我们主要是使用一些管理平台去做管理如kubesphere 、rancher 等等,针对k8s 学习路线,想问一下怎么能更好的去结合现状去实践学习

猪娃娃
猪娃娃
感谢
Erda技术团队
Erda技术团队
很好的一点是你已经有了实际的环境去使用以及研究k8s了,带着实际的场景以及问题去学习k8s往往是最有效的方式,但这个的前提是你已经掌握了k8s的基本知识以及原理,在这些知识背景下再碰到工作上得实际问题往往能都思考的更深,也对k8s掌握的更细致,尤其是是kubesphere 、rancher管理下的k8s,往往遇到问题要先甄别是k8s的问题还是管理平台的问题,这时基本的理论知识就显得尤为重要,共勉。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部