Best practices for building Kubernetes OperatorsBest practices for building Kubernetes Operators Patryk WasielewskiAbout me ● DevOps Consultant at Amazon Web Services (AWS) ● 6 years professional experience as DevOps / SRE / Developer ● Cloud-native json-patch/merge-patch support ○ Finalizers ○ Built-in Authz/AuthnControllers https://able8.medium.com/kubernetes-controllers-overview-b6ec086c1fbControllers ● Controller tracks at least one resource type ● backup, failover, recovery, etc.), for a software running within the Kubernetes cluster, https://www.cncf.io/blog/2022/06/15/kubernetes-operators-what-are-they-some-examples/Framework - Kubebuilder/Operator-sdkCapability0 码力 | 36 页 | 2.19 MB | 6 月前3
Practices of Go Microservices on Post-Kubernetes-Wei Zhengon Post-Kubernetes 郑伟 ⽯墨⽂档 Background in Shimo Language • Go • Node • Rust Background in Shimo Framework • Gin • Echo • gRPC • … Background in Shimo Platform • All in Kubernetes • Ingress IDL Debug IDL Mock ... API Gateway Framework(Ego) Auth Interceptor Metrics IDL Docs Kubernetes Redis CMP DB CMP Log Interceptor Err Interceptor Metric Interceptor MQ CMP Mongo Debugging • How to debugging service with dependencies? • Use VPN to connect develop kubernetes cluster. • With Kubernetes API server Resolver, we can resolve dependent services. IDL Tool Chain - gRPC Local0 码力 | 59 页 | 5.66 MB | 1 年前3
04. GraphQL in Chaos Mesh 2.0 - 李晨曦GraphQL in Chaos Mesh 如何高效地控制集群中的 资源状态 李晨曦 GitHub: hexilee PingCAP R&D PingCAP 研发工程师,CNCF 开源项目 Chaos Mesh® 核心贡献者, 主要负责工程效率提升和 HTTP 故障注入功能的设计实现。并推动 GraphQL 在 Chaos Mesh 项目中的实践落地。 目录 1. Chaos Mesh Mesh 介绍 2. 问题与解决方案 3. 设计思路与实现 4. 后续的工作 Chaos Mesh 介绍 Chaos Mesh 是什么 ● Kubernetes 上的云原生混沌工程平台 ● 最初目标是作为 TiDB 的内部测试平台 ● 提供对 Pod 或者具体容器的错误注入, 包括网络、系统 IO、内核以及一些应用层注入 chaos-mesh.org github.com/chaos-mesh com/chaos-mesh Chaos Mesh 是什么 我们的目标 ● 建立一个完全闭环的云原生混沌工程平台 ● 让混沌工程变得更易用 问题与解决方案 集群中的状态 Chaos Mesh 本身的运行和注入的故障会 给各组件以及目标 Pod 带来各种状态。 cluster status Components Controller Daemon Dashboard Dns Server0 码力 | 30 页 | 1.29 MB | 1 年前3
05. OpenKruise镜像预热实践_王思宇通过 OpenKruise 实现大规模集群 镜像预热&部署发布加速实践 王思宇(酒祝) 阿里云容器服务 技术专家 OpenKruise author & maintainer 目 录 前言:OpenKruise 简介 01 为什么说人人都需要镜像预热 02 OpenKruise 是如何实现镜像预热的 03 如何通过镜像预热加速部署&发布 04 版本前瞻:原地升级与预热的结合 05 前言:OpenKruise 简介 第一部分 Cloud Native & Kubernetes & Go OpenKruise 是什么 OpenKruise( https://github.com/openkruise/kruise ): • CNCF 托管的 Sandbox 项目 • 阿里云开源的基于 Kubernetes 的云原生应用自动化套件 • 阿里巴巴经济体上云全面使用的部署基座 拉取的重试次数,默认为 3 activeDeadlineSeconds: 1200 # [optional] 整个任务的超时时间,无默认值 # . . . node1 kruise-daemon CRI 集群维度预热定义 apiVersion: apps.kruise.io/v1alpha1 kind: ImagePullJob metadata: name: test-job spec: image:0 码力 | 28 页 | 5.78 MB | 1 年前3
Go 构建大型开源分布式数据库技术内幕还有一些你看不到的东西:调度 调度的目标 ● CPU ● IO ● 内存 ● 磁盘使用量 ● 网络流量 ● Location Awareness 调度的方法 ● PD 周期性根据 Cache 中的集群信息,生成调度计划(Operator) ● Operator 是作用于一个 Region 的一系列操作 ○ Transfer Leader:将 raft group 的 leader 转让给某个 生成 Operator 使之均衡 调度的难点 ● 难以评判什么样的数据分布情况是最优解 ○ 机器配置不同 ○ CPU、内存、磁盘、网络多种因素相互制约 ○ 用户场景多变 ● 调度所依赖的集群状态不一定是最新的 ● 调度本身也会带来系统负担 多副本管理策略 ● 使用多副本保证数据安全(Data safety) ● 维持数据副本数 ○ 副本数不足:AddPeer ○ 副本数过多:RemovePeer Python and R ○ Machine Learning Libraries ○ Spark Streaming TiDB on K8S TiDB with Kubernetes 1/3 ● Kubernetes 是容器编排的最佳方案 ● 难点 ○ Stateless is Easy, Stateful is Hard ○ Application domain knowledge0 码力 | 44 页 | 649.68 KB | 1 年前3
Golang大规模云原生应用管理实践Solver,聚焦中间件,容器,Kubernetes,PaaS平台… • OAM社区成员 开局一张图 规模化应用交付效率对比去年 每万笔峰值交易的IT成本对比4年前 提升1倍 下降80% 云原生 技术 稳定 成本 效率 云原生-程序员视角 基础设施 K8s 云原生生态(CNCF) 云原生应用 云原生是以容器技术为基础围绕着Kubernetes进行的一场技术标准化演进。通过标准可扩展的调度,网络, 控制器设计(做什么) • 基于“可重构”状态机,开放的世界 • 不要修改资源声明 • 事件驱动+主动轮询 • 重试 + 幂等 • 自愈 • e2e测试 • Ginkgo BDD • Kind本地K8s集群 新的复杂度-最终一致性 status: … phase: succeed … • 过期的状态 • 版本冲突 • 业务及时性 status: currentBatch: 1 applicationconfiguration/oamacree Successfully applied components 新的复杂度-控制器运维 我们要管控大规模的集群,每个集群也会部署大量的控制器,控制器本身的运维成为问题 • 控制器管控平台 • 升级 • 回滚 • 灰度 • 重启 • 观测性 • Prometheus • 统一日志收集 • 事件中心 • 告警0 码力 | 23 页 | 7.70 MB | 1 年前3
1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台第⼆部分 端点 PaaS 发展历程 有状态服务 Job / JobFlow 批计算 流计算 ⽆状态服务 DaemonSet Workloads 多集群调度 混合云调度 跨云迁移 多环境调度 业务数据统⼀调度 集群核⼼服务 Helm 镜像服务 Add-on filebeat / telegraf 监控 ⽇志 HPA Operator 注册中⼼ 配置中⼼ API API ⽹关 微服务拓扑 全链路追踪 错误分析 ⽇志分析 主动监控 浏览器监控 APP 监控 慢SQL JVM 诊断 ⾃定义告警 APM 微服务管理 资源管理 标签管理 系统监控 集群管理 服务⽬录 埋点 数据库 ⽇志 画像 标签 报表 推荐 … 代码管理 持续集成 编排部署 应⽤运维 测试管理 协同管理 数据源管理 数据集成 数据开发 数据资产 数据服务 资源统计 运维报告 审计⽇志 K8S 管理 数据监控 多云管理平台 MySQL Redis Kafka ES MQ Minio 中间件 通⽤服务 ⾃定义服务 服务市场 Kubernetes Rancher Openshift 私有云 公共 物理机 虚拟机 微服务治理平台 DevOps 平台 边缘监控 边缘站点管理 制品 快速分发部署 边缘⽇志 边缘计算平台 边缘数据收集0 码力 | 40 页 | 8.60 MB | 1 年前3
3.云原生边云协同AI框架实践language, such as Go. “Kubernetes Operator 是一种特定于应用的控制器,可扩展 Kubernetes API 的功能,来代表 Kubernetes 用 户创建、配置和管理复杂应用的实例。” https://www.redhat.com/zh/topics/containers/what-is-a-kubernetes-operator https://developers com/articles/2021/06/22/kubernetes-operators-101-part-2-how-operators-work 为什么使用Operator? • Kubernetes生态系统 比如监控、日志、Dashboard等 • Kubernetes集群基础能力 比如自动化安装、配置、更新等。 • Kubernetes API 避免了重复开发资源的增删改查等框架代码 informer-gen: 生成informer,提供事件机制 (AddFunc,UpdateFunc,DeleteFunc)来响应 kubernetes的event lister-gen: 为get和list方法提供只读缓存层 https://github.com/kubernetes/code-generator 根据定义的结构,利用code-generator生成对应 的operator代码 CR0 码力 | 37 页 | 2.36 MB | 1 年前3
微服务容灾治理00qps的情况下,P99甚⾄P90都已经到了1s 的超时阈值了,服务基本已经开始不可⽤了。 3.6跟KubernetesHPA的协同 当我们在使⽤Kubernetes并设置了HPA根据CPU使⽤率⾃动伸缩的时候,Kubernetes默认会在4 个连续的15秒探测周期探测到CPU使⽤率超标(有0.9-1.1的容忍幅度)时,启动增加pod来应对 系统容量不⾜,但这需要分钟级扩容,且当系统资源不够或者pod数达到最⼤设置时不⽣效。此时, 过载保护可以在Kubernetes未来得及扩容或者集群容量不⾜时保护我们的系统不被打到卡死。 但这⾥有个点需要注意,go-zero默认设置的过载保护触发的CPU阈值是90%,KubernetesHPA⾃ 动扩容默认CPU阈值是80%,当你在设置这两个参数的时候,不要让HPA的CPU阈值⼤于go-zero0 码力 | 13 页 | 1.68 MB | 1 年前3
2.2.2 深入理解BFE• 流量控制能力增强 • BFE平台的主要功能 • 接入和转发,流量调度,安全防攻击,数据分析 BFE部署前 BFE部署后 L4LB 业务A 集群 业务B 集群 业务C 集群 BFE 业务A 集群 业务B 集群 业务C 集群 L4LB BFE平台架构 负载均衡器 vs 名字服务 基于负载均衡器 基于名字服务 方案对比 方案 对流量的控制力 资源消耗 对客户端的要求 BFE转发的主要概念 BFE的转发过程 BFE的路由转发 默认集群 基础转发表 Demo-E 匹配条件 目标集群 www.a.com/a/* Demo-A www.a.com/a/b Demo-B *.a.com/ Demo-C www.c.com ADVANCED_MODE 高级转发表 匹配条件 目标集群 req_host_in(“www.c.com”) && req "deviceid", "x", false) Demo-D1 req_host_in(“www.c.com”) Demo-D 内网流量调度 • 使用场景 • 多数据中心 / 多容器云集群 • 内部服务故障 • 内部服务压力不均 健康检查 • 主动健康检查 • 负载均衡系统持续向RS发送探测请求 • 问题:在响应速度和发送压力间存在权衡 • 在分布式场景下问题更加明显 • 被动健康检查0 码力 | 26 页 | 1.78 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













