逐灵&木苏-阿里巴巴 K8S 超大规模实践经验过程式的运维有什么问题? 例子:升级某服务的 3000 个实例 容 器 平 台 运 维 平 台 容 器 平 台 运 维 平 台 Kubernetes 200 最大不可用数面向终态的应用管理 • 支持终态副本数保持 • 支持容器原地升级 • 保持 IP、卷 • 支持并发更新、容错暂停 • 支持镜像预热、按需下载镜像格式面向终态的风险控制 • 运维决策分散 - controllers - operators throttling/circuit breaker throttling/circuit breaker 风险识别自愈能力升级 • 传统运维体系的效率问题 - 应用启动流程复杂 - 决策链路较长 - 状态一致性风险 容器平台 监控 VIP 服务注册 配置中心 运维平台 观察者 异常消费 基础设施 异常来源• 统一容器与应用实例的生命周期 • 下沉应用的冗余度信息 容器即应用 运维平台 监控 Read & Index APIServer Client List / Get ETCD rv=nil Page read Filter by condition• APIServer 缓存一致性读 • 索引支持动态新增 • Cache Ready Cache Read & Index APIServer Client list/get @t0 ETCD rv=nil 1. Get0 码力 | 33 页 | 8.67 MB | 6 月前3
k8s操作手册 2.3取消挂载 # vi /etc/fstab # swapoff -a #取消所有swap挂载 ⑥NTP服务需要开启,使用集群内的ntp server,确保集群时间的一致性 # yum install chrony -y # systemctl enable chronyd # systemctl start chronyd # cat > /etc/chrony metadata: name: nginx-deployment #Deployment名,也是pod名,不同于容器名 spec: replicas: 2 #pod运行副本数(实例数) selector: #选择相应pod模板 matchLabels: podlable: nginx-deploy-pod template: #查看定义的deployment ★DaemonSet控制器 DaemonSet用于在集群中的全部节点上同时运行一份指定的pod副本(master打 了污点,所以默认不运行,可以设置容忍度)后续新加入集群的工作节点也会 自动创建一个相关的pod副本,这些pod一般是执行系统级操作任务的服务,如 应用代理,监控,日志收集等 # vi monit.daemonset.yml0 码力 | 126 页 | 4.33 MB | 1 年前3
Chaos Mesh让应用与混沌在 Kubernetes 上共舞-杨可奥● SideCar 共享 Network Namespace ○ 范围和权限更加可控 Chaos Mesh 使用案例 以 TiDB 为例 ● 假设 ○ TiDB 使用 Raft 一致性算法构建副本,应当拥有容错的能力 ○ 在杀掉一个节点之后,QPS 应当会下降 ○ 一段时间之后,QPS会恢复正常 ● 运行实验 ○ 使得一个节点无法工作(Pod Failure) ● 观察和检验0 码力 | 30 页 | 1.49 MB | 9 月前3
Kubernetes开源书 - 周立例如,Kubernetes Deployment是⼀个表示在集群上运⾏的应⽤程序的对象。在创建Deployment时,可设置 Deployment spec,例如指定有三个应⽤程序的replicas(副本)正在运⾏。这样,Kubernetes系统就会读取 Deployment spec,并启动您想要的、应⽤程序的三个实例——根据您的spec更新status。如果任何⼀个实例失败 (status发 名思义,它负责管 理“Controller”,主要有: endpoint-controller:刷新服务和pod 的关联信息 replication-controller:维护某个 pod 的副本数为配置的数值 Scheduler:负责资源调度(Pod调度),将Pod分配到某个节点上。 11-K8s架构及基本概念 31 [可能有]etcd:资源对象存储中⼼,K8s的所有资源对象数据都存储在此。 metadata: labels: # 指定该POD的标签 app: mysql # POD副本拥有的标签,需要与RC的selector⼀致 spec: containers: - name: mysql image: mysql0 码力 | 135 页 | 21.02 MB | 1 年前3
第1930期:Kubernetes基础介绍Manager控制管理器(kube-controller-manager):k8s里所有资源对象的自动化控制中心,可以理解为 资源对象的“大总管”。运行着所有处理集群日常任务的控制器。包括节点控制器、副本控制器、端点控制器及服务账号 和令牌控制器。负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。 Scheduler调度器(kube-scheduler):负责资源调度(Pod调度)的进程,相当于“调度室”。按照预定的调度策略 ster节点密切协作,实现集群管理的基本功 能。 kube-proxy:它负责节点的网络,在主机上维护网络规则并执行连接转发。它还负责对正在服务的pods进行负载平衡。 比如一个服务可能会运行多个副本(Pod),由他来控制具体由哪个Pod提供服务。为Service提供cluster内部的服务发 现和负载均衡。 Docker Engine(docker):docker引擎,负责本机的容器创建和管理工作。 K8s基本概念和术语介绍(RC) RC Replication Controller(副本管理器)和RS(Replica Set): RC定义了一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值。RC包含如下几部分: Pod期待的副本数(replicas) 用于筛选目标Pod的Label Selector 当Pod的副本数量小于预期数量的时候,用于创建新Pod的Pod模板(template)0 码力 | 49 页 | 4.11 MB | 1 年前3
⾸云容器产品Kubernetes操作指南创建⽆状态(Deployment)应⽤ a) 在容器服务菜单下,单击左侧导航栏中的应⽤>⽆状态,选择所需的命名空间(默认为deafult), 然后单击⻚⾯右上⻆的创建。 b) 设置应⽤名称、集群 、命名空间、副本数量(即应⽤包含的 Pod 数量)、标签和注解。然后单击 下⼀步进⼊容器配置⻚⾯ 应⽤管理 1. 简介 2. 前提条件 3. 操作说明 22 c) 设置容器配置 i. 基本配置 镜 ⽀持容器组(Pod)的弹性伸缩,即根据容器 CPU 和内存资源占⽤情况⾃动调整容器副本数 量。 指标:可选 CPU 使⽤量和内存使⽤量,需要和设置的所需资源类型相同。 触发条件:资源使⽤率的百分⽐,超过设置的Pod request值,容器开始扩容。 最⼤副本数:该 Deployment 可扩容的副本(即容器组Pod)数量上限。 最⼩副本数:该 Deployment 可缩容的副本(即容器组Pod)数量下限。 注:若要启⽤⽔ 不可使⽤Pod最⼤数量:⽤于指定 Deployment在更新过程中不可⽤状态的Pod数量的百分⽐ 上限 超过期望的Pod数量:⽤于指定在Deployment 更新Pod的过程中Pod总数超过Pod期望副本 数的百分⽐上限 27 可选:Pod标签和注解。设置容器组的标签和注解。可⽤于Pod的调度设置。 可选:调度设置(亲和性调度依赖节点和 Pod 标0 码力 | 94 页 | 9.98 MB | 1 年前3
高性能 Kubernetes 元数据存储 KubeBrain 的设计思路和落地效果-许辰2. 谐音科比 Kobe Bryant • 背景介绍 • 设计思路 • 性能优化 • 落地效果 • 未来演进 K8s 元信息存储的需求 (1) 读 • 单 Key 读,提供线性一致性 • Range 扫描读,支持快照读,支持分页 写 • K8s 乐观锁 resource version • 单 Key CAS Watch • Kubernetes list-watch KubeBrain 架构 • 主从架构 • 主负责写和事件分发 • 从负责读 • 底层对接分布式强一致性存储 • CAS 事务写 • 快照读 实现架构图 存储层 存储层 – 分布式 KV Store ByteKV • Multi Raft Goup • 全局有序 Range 分区 • 强一致性 • 支持多 key 事务 • 支持 CAS • 支持快照读 • 高性能 存储层 - 数据格式 KubeBrain 逻辑层 逻辑层 – 写 逻辑层 – Watch(1) Watch 机制本质上是一个消息队列系统 1. 可靠性 - 不重复、不丢失 2. 顺序性 - 保证最终状态的一致性 3. 实时性 - 高性能 一定有一个单点对消息进行排序 采用主从架构 逻辑层 – Watch(2) 一主多从 1. 仅主节点负责写入和事件生成 2. 从节点只读 逻辑层 – Watch(3)0 码力 | 60 页 | 8.02 MB | 1 年前3
第29 期| 2023 年9 月- 技术雷达随着应用开发变得越来越动态和复杂,交付风格一致且好用的产品成为了一项挑战,尤其是在有多个团队参与 不同产品开发的大型组织中。设计系统定义了一系列的设计模式、组件库以及良好的设计和工程实践,以确保 数字产品的一致性。设计系统从过去的企业风格指南演变而来,提供易于查找和使用的共享组件库和文档。通 常,设计系统的风格指南以代码的形式记录并进行版本控制,比简单的文档记录更加清晰且易于维护。设计系 统已经成为跨团 FAIR(可发现,可访问,可互通且可复用)原则进行数据运营。我们的团队使用如 Collibra 和 DataHub 的数据目录实现数据产品的可发现性,为了建立信任,我们发布数据质量和服务等级指标,比如数 据产品的及时性、完整性和一致性,并使用 Soda Core 和 Great Expectations 等工具自动化数据质量检查。 数 据可观测性可同时通过 Monte Carlo 等平台实现。 我们已经看到数据产品随着时间的 环境都是云供应商 原生服务、第三方服务和自定义代码的复杂组合。在这些环境中,我们发现工程师通常会使用 Terraform 处理 云资源,又使用自定义脚本处理其他资源。这可能导致资源创建过程缺乏一致性和可重复性。事实上,在托管环 境中常用的许多第三方服务 Terraform 都提供了相应的支持程序,可以用来创建和配置这些服务,例如 Splunk、 Datadog、PagerDuty 和 New0 码力 | 43 页 | 2.76 MB | 1 年前3
Kubernetes 容器编排与应用编排Deployment ReplicaSet Pod 1. 支持指定副本数 2. 支持 Recreate 和 Rolling Update 3. 可控的滚动更新模式 4. 支持回滚 5. 可通过 HPA 实现自动弹性伸缩 Kubernetes 控制器 StatefulSet StatefulSet Pod 1. 支持指定副本数 2. Pod 具有固定且唯一的标识符 * statefulset-example-0 5. Update Strategy (*v1.7) * 反向逐个删除并重建 Pod Kubernetes 控制器 DaemonSet DaemonSet Pod 1. 可以在指定节点一个副本 * NodeSelector * Affinity 2. 可控的滚动更新模式 3. 独立的调度模式 * 不依赖 Scheduler * 无视 unschedulable Kubernetes0 码力 | 20 页 | 4.22 MB | 1 年前3
Operator Pattern 用 Go 扩展 Kubernetes 的最佳实践如何保持与 API Server 一致性 list & watch 机制中,list 获取 API Server 中数据的一份快照,并记 录 ResourceVersion 版本信息,watch 从 ResourceVersion 开始,获取后 续的增量数据。 watch 通过网络异步(asynchronous)获取增量数据,所以 cache 提供 的是最终一致性(eventual consistency)。0 码力 | 21 页 | 3.06 MB | 9 月前3
共 19 条
- 1
- 2













