云原生|Kubernetes技术架构

2021-08-21  本文已影响0人  ShowMeCoding

01:容器运行时技术深度剖析

1.1 容器引擎和运行时机制原理解析

1.2 业界主流容器运行时技术架构剖析

1.3 华为云容器运行时技术架构剖析

1.4 容器运行时技术的发展方向

02:Kubernetes技术架构深度剖析

2.1 Kubernetes系统架构详解

Kubernetes核心组件

2.2 controller控制器原理详解

Controller Manager主要提供了一个分发事件的能力,而不同的Controller只需要注册对应的Handler来等待接受和处理事件。
在Controller Manager的帮助下, Controller的逻辑可以做的非常纯粹,只需要实现相应的EventHandler即可,以Deployment controller为例。

  • List & Watch
  • Controller manager与api-server的通信主要有两种方式:List和Watch
  • client-go
  • 实现统一管理每种Controller的List和Watch
  • 将收到的event事件放到缓存中,异步分发给每个Controller的注册的eventHandler

2.3 list-watch机制详解

3:Kubernetes高级调度原理

3.1 Kubernetes的调度流程原理与算法

Kubernetes default scheduler的特点:基于队列的调度器;一次调度一个Pod;调度时刻全局最优。

Kubernetes scheduler架构和调度流程

3.2 Kubernetes高级调度算法

3.3 华为云CCE Volcano批量调度算法与应用场景

云计算批量计算面临的挑战:1、作业管理缺失;2、调度策略局限;3、领域计算框架支持不足;4、资源规划复用、异构计算支持不足

4:Kubernetes存储架构原理剖析(上)

4.1 K8s容器存储发展历程

容器存储能力

4.2 K8S持久化存储体系

名称 简介
PresistVolumn 简称pv,持久化存储,是k8s为云原生应用提一种拥有独立生命周期的、用户可管理的存储抽象设计
PresistVolumnClaim 简称pvc,吃计划存储声明,是K8S为解耦云原生应用和数据存储设计的,通过PVC可以让资源管控更加细致灵活、团队职责分离、应用模板更通用,进一步解除了用户被云平台锁定的顾虑
StorageClass 简称sc,存储类,是K8S平台为存储提供商提供存储接入的一种声明,通过sc和相应的存储插件
Deiver Plugin 存储驱动插件,由存储提供商提供,能够对接网络存储,并管理持久存储卷的生命周期

与临时存储相比,持久化存储的优势:

引入PV/SC之后带来更大的效益:

4.3 PV/PVC的工作原理剖析

两种pv/pvc的工作方式

pv/pvc适合在资源管理比较严格的场景

pvc绑定pv的流程

本课总结

名称 简介
StatefulSet 简称sts,有状态应用,一种K8S为用户提供一组有序、唯一、稳定的应用实例集合
Volumn 卷,K8S为存算分离所做的解耦设计,让用户更加专注于业务功能设计。它在K8S中是依托于Pod而使用的
PresistVolumn 简称pv,持久化存储,是k8s为云原生应用提一种拥有独立生命周期的、用户可管理的存储抽象设计
PresistVolumnClaim 简称pvc,吃计划存储声明,是K8S为解耦云原生应用和数据存储设计的,通过PVC可以让资源管控更加细致灵活、团队职责分离、应用模板更通用,进一步解除了用户被云平台锁定的顾虑
StorageClass 简称sc,存储类,是K8S平台为存储提供商提供存储接入的一种声明,通过sc和相应的存储插件(csi/flexvolumn)为容器应用提供动态分配存储卷的能力

05: Kubernetes存储架构原理剖析(下)

5.1 StorageClass工作原理分析

无论在资源管控严格还是资源管控敏捷的场景,资源管理员都希望通过创建K8S的存储接口来管理容器存储资源
K8S通过存储声明(PVC)、存储类(SC)和存储插件(driver)联合工作,满足用户一键式定义,创建存储。

5.2 CSI容器存储接口架构解读

什么是云原生存储

云原生的理解

  • 1 从技术角度看:一种还在不断演进中的设计思想,它主要是为了充分利用云计算的优势,促进云计算技术发展而构建和运行应用的设计思想
  • 2 从用户角度看:一种让用户从迭代慢、运维重、升级难得包袱中解脱出来,聚焦业务开展的设计思想

云原生应用的理解:基于云原生技术构建、运行的应用程序,它具有:

  • 行为可预测,快速弹性扩缩容
  • 持续交付,是研发流程更敏捷
  • 基于API构建,团队协作更流畅
  • 独立性强,促进DevOps的开展
  • 依赖少,轻量,故障恢复快速

云原生存储的理解

  • 1 从技术角度看:符合以应用为中心,可被声明和组合实现、是API驱动和服务自治、具有敏捷等特性的存储系统
  • 2 从用户角度看:最大的利用云原生应用特性的存储系统

以CSI存储架构为例,解读容器存储架构

  • 1 控制接口A:K8S平台通过控制接口调用存储提供商发布的控制API
  • 2 控制接口B:K8S平台通过sideCar(external-provisioner/attacher等)调用存储提供商发布的控制API
  • 3 数据接口C: 数据面,存储通过文件系统、块设备等方式为K8S平台中运行的workload提供存储读写等能力


    容器存储架构

5.3 云原生存储最佳实践:从FlexVolumn插件向CSI插件迁移

两种插件的对比

CSI架构:部署简单、功能强大、扩展灵活、容器存储接口的标准

08:Kubernetes运维管理详解(上)

8.1工作负载更新和回滚机制详解

无状态工作负载(deployment)更新

8.2 应用探针健康检查机制详解

容器健康检查使用liveness probe(工作负载存活探针)和readiness probe(工作负载业务探针)。
Kubernetes支持如下三种探测机制:

机制 原理
HTTP GET 向容器发送HTTP GET请求,如果probe收到2xx或3xx,说明容器是健康的
TCP Socket 尝试与容器指定端口建立TCP连接,如果连接成功,说明容器是健康的
Exec Probe执行容器中的命令并检查命令退出的状态码,如果状态码为0则说明容器是健康的

8.3 应用弹性伸缩原理详解

弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。包括工作负载弹性收缩节点弹性收缩

小结

名称 简介
liveness probe 工作负载存活探针,指示容器是否正在运行。如果存活态探测失败,则kubelet会杀死容器,并且容器将根据重启策略进行重启。如果容器不提供存活探针,则默认为Success
readiness probe 工作负载业务探针,指示容器是否准备好为请求提供服务。只有当Pod中的容器都处于就绪状态时kubelet才会认定该Pod处于就绪态。该信号的作用是控制哪些Pod应该作为service的后端。如果Pod处于非就绪状态,那么他们将会被从service的load balancer中移除
Cluster AutoScaler 简称CA,Autoscaler是Kubernetes提供的集群节点弹性伸缩组件,根据Pod调度状态及资源使用情况对集群的节点进行自动扩容和缩容
Horizontal Pod Autoscaler 简称HPA,是用来控制Pod水平伸缩的控制器,HPA周期性检查Pod的度量数据,计算满足HPA资源所配置的目标数值所需的副本数量,进而调整目标资源(如Deployment)的replices字段

09:Kubernetes运维管理详解(下)

9.1 集群可观测性

云原生应用特点:

设施 特点
应用架构 从单体应用向微服务过渡,应用架构过渡为松耦合系统,应用版本迭代更快、周期更短
基础设施层 容器化、应用自身快、轻、微,Kubernetes成为运行容器的默认平台,IaaS、PaaS平台底层来承载Kubernetes平台
软件生命周期 服务通过DevOps流水线持续部署,服务变更低成本和低风险,呈现高频率和全自动变更

云原生可观测性

数据类型 具体情况
Metrics 收集并存储海量指标,通过指标阈值等手段实现告警通知,从而告知有没有问题发生
Traces 通过告警指标发现问题后,依据调用追踪分析,进一步明确是什么问题
Logs 明确了问题发生的对象或者位置之后,通过日志分析等手段实现为什么问题会发生,即找到问题的根因

9.2 指标监控与prometheus

指标(Metrics)是在许多个连续的时间周期里度量的KPI数值,一般将指标进行如下分类:

指标 描述
系统指标 集群CPU使用率、磁盘使用率以及网络带宽等情况
应用指标 QPS、出错率、平均延时
业务指标 用户会话、订单数量和营业额等

目前,Prometheus已经成为云原生监控领域的事实标准

9.3常见集群故障排错分析

10:Kubernetes安全权限管理深度剖析

Kubernetes本身并没有用户管理能力,无法像操作Pod一样,通过API的方式创建/删除一个用户实例,也无法在etcd中找到用户对应的存储对象
在Kubernetes的访问控制流程中,用户模型是通过请求方的访问控制凭证(如Kubectl使用的kube-config中的证书、Pod中引入的ServerAccount)产生

10.1 Kubernetes API 访问控制

认证

鉴权

11:Kubernetes应用管理深度剖析

名称 总结
Helm 可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis(https://deis.com)开发的一个用于kubernetes的包管理器:1、对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布到软件仓库;2、对于使用者而言,使用Helm后不需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在Kubernetes上安装需要的应用;3、除此之外,Helm还提供了kubenetes上的软件部署,删除,升级,回滚应用的能力
operator kubernetes operator 是一种封装、部署和管理Kubernetes应用的方法。kubernetes operator 是一种特定于应用的控制器可扩展Kubernetes API的功能,来代表kubernetes用户创建、配置和管理复杂应用的实例;它基于基本kubernetes资源和控制器概念构建,但又涵盖了特定于域或应用的知识,用于实现其所管理软件的整个生命周期的自动化

12:Istio控制面架构深度剖析

Istio架构分层主要分为:控制面Istiod(Pilot Citadel Galley Sidecar-Injector)和数据面(Envoy Pilot-Agent)

模块 功能
Pilot xDS服务器,为数据代理提供各种配置
Citadel 为数据面签发证书
Gallery Admission Webhook, 校验Istio API配置
Sidecar-Injector 自动注入Sidecar

Sidecar基本介绍

流量治理基本API

API 意义
ServiceEntry 定义Kubernetes集群外部服务,提供非K8S服务发现或者跨集群的服务发现
VirtualService 定义一些路由匹配、灰度、故障注入等功能
DestinationRule 提供目标服务的负载均衡策略以及连接管理,熔断等策略
Gateway 为服务网格边缘提供基本的流量转发策略

13:Istio数据面(Envoy)架构深度解析

名称 简介
Enovy 基于C++11,14的高性能服务网格数据面代理
xDS Enovy与上层控制面如istiod使用的基于gRPC的应用层协议,用于传输配置变更
自动注入及流量拦截 Pod创建时,由Istiod进行自动修改deployment,并将istio-proxy容器注入到新创建的pod内;当发生调用时,iptables规则将自动拦截出入流量进入Enovy代理
线程模型 Enovy采用每个工作线程独立处理网格及定时器事件,线程间无数据共享,提升性能
过滤器架构 Enovy采用可扩展插件架构实现监听过滤器、L4网络过滤器、L7 HTTP过滤器;同时支持基于L4/L7 WASM及L7 Lua过滤器的二次扩展

14:Istio流量治理与监控管理深度剖析

14.1 Istio流量治理基本介绍

简化服务治理配置:熔断、降级,超时,重试,A/B测试,金丝雀发布,基于权重的流量切分,故障检测与恢复

14.2 Istio流量治理深度剖析

名称 功能
VirtualService 允许您配置如何将请求路由到Istio服务网格中的服务,构建在Istio和您的平台提供基本连接和发现之上。without VS,请求将按照基本的负载均衡策略分发到所有的服务实例。with VS,可以将请求按照百分比(weight)分发到一组或者多组后端实例,或者根据请求属性(Match),将请求路由到不同的服务实例组。典型的使用场景是灰度发布
DestinationRule 常常与VS配合使用,VS定义一些策略将流量路由到某些目标服务,而DestinationRule允许用户针对目标服务配置一些负载均衡,异常检测,连接池以及证书。特别是利用DR Subset定义特定服务的实力分组,结合VitualService可以实现完整的蓝绿部署,金丝雀发布等功能
Gateway 类似Ingress,看s gateway API,应用于网格边缘独立运行的Enovy代理,配置L4-L6的负载均衡,比如端口、证书,L7层的路由能力需要与VirtualService绑定
Sidecar 限制负载可访问的服务,精确控制部分端口可被访问,大规模场景下,降低控制面和数据面开销(内存,CPU,带宽)

14.3 Istio监控深度剖析

Istio提供以下可观测能力(非侵入):

课程链接:https://edu.huaweicloud.com/activity/Cloud-native2.html
打卡链接:https://bbs.huaweicloud.com/forum/thread-136621-1-1.html

上一篇 下一篇

猜你喜欢

热点阅读