简介
两个基本工作
-
应用容器化
-
编排自动化
美团点评Kubernetes集群管理实践 笔者从中得到一个启发就是,整个kubernetes 的实践是分层次的。
网易数帆云原生故障诊断系统实践与思考 PS: 我们自己wrench工具的分布式版
- 规范用户的使用方式,容器 vs 虚拟机
- 部分集群连接的 APIServer 客户端数量超过了 4000 个,其中不乏一些用户用脚本对 Pod 资源进行全量 LIST 来获取数据。这些集群的 APIServer 消耗接近 100G 的内存以及 50 核的 CPU 算力,并且 APIServer 所在节点的网卡流量达到了 15G。
- 明确集群稳定性保障以及应用稳定性保障的边界以及有效的评估模型,这种责任边界的不明确带来了交付成本上的增长以及不确定性。PS:出问题无法明确是应用的问题还是k8s的问题
- 灰度发布 使用了 Argo Rollout
- 无损发布
- 调度部署策略配置: 应用各实例优先打散在不同的节点上;可以给业务进行分类, 比如 计算密集型 、 IO 密集型 等类型,通过反亲和优先将不同类型的应用调度到一起;给部分业务划分单独的一批节点进行隔离部署
- 机房 dns 打通
- 业务容器化的规范:base 镜像;jdk版本(cpu核数识别、gc线程数);日志规范(路径、格式);无状态化(本地存储改造为访问分布式存储);域名访问(用域名,避免ip访问,因为不固定);尽量request 与limit 一致 防止 节点 System OOM
- 填坑: vivo AI 计算平台的K8s填坑指南
Kubernetes 两年使用经验总结对几乎所有人来说,开箱即用的 Kubernetes 都远远不够。Kubernetes 平台是一个学习和探索的好地方。但是您很可能需要更多基础设施组件,并将它们很好地结合在一起作为应用程序的解决方案,以使其对开发人员更有意义。通常,这一套带有额外基础设施组件和策略的 Kubernetes 被称为内部 Kubernetes 平台。有几种方法可以扩展 Kubernetes。指标、日志、服务发现、分布式追踪、配置和 secret 管理、持续集成 / 持续部署、本地开发体验、根据自定义指标自动扩展都是需要关注和做出决策的问题。配置一个基础的集群可能并不困难,而大多数问题发生在我们开始部署工作负载时。从调整集群自动伸缩器(autoscaler)到在正确的时间配置资源,再到正确配置网络以实现所需的性能,你都必须自己研究和配置。我们的学习到的是,操作 Kubernetes 是很复杂的。它有很多活动部件。而学习如何操作 Kubernetes 很可能不是你业务的核心。尽可能多地将这些工作卸载给云服务提供商 (EKS、GKE、AKS)。你自己做这些事并不会带来价值。
多集群
Kubernetes 多集群项目介绍 阿里: 还在为多集群管理烦恼吗?OCM来啦! CNCF 沙箱项目 OCM Placement 多集群调度指南 腾讯: Clusternet - 新一代开源多集群管理与应用治理项目 Clusternet v0.5.0 重磅发布: 全面解决多集群应用分发的差异化配置难题 其它: 关于多集群Kubernetes的一些思考 多云环境下的资源调度:Karmada scheduler的框架和实现
排查问题文章汇总
kubernetes 问题排查: 磁盘 IO 过高导致 Pod 创建超时 kubernetes 平台开发者的几个小技巧 内存回收导致关键业务抖动案例分析-论云原生OS内存QoS保障 去哪儿容器化落地过程踩过的那些坑Qunar 在做容器化过程中,各个系统 portal 平台、中间件、ops 基础设施、监控等都做了相应的适配改造
- portal:Qunar 的 PAAS 平台入口,提供CI CD 能力、资源管理、自助运维、应用画像、应用授权(db授权、支付授权、应用间授权)等功能
- 运维工具:提供应用的可观测性工具, 包括 watcher(监控和报警)、bistoury (java 应用在线 debug)、qtrace (tracing 系统), loki/elk (提供实时日志/离线日志查看)
- 中间件:应用用到的所有中间件, mq、配置中心、分布式调度系统 qschedule、dubbo 、mysql sdk等
- 虚拟化集群:底层的 k8s 和 openstack 集群,多k8s集群管理工具 kubesphere
- noah:测试环境管理平台,支持应用 kvm / 容器混合部署