主页

[转]第22章 有状态应用编排statefulset

本文将主要分享以下四方面的内容: “有状态”需求 用例解读 操作演示 架构设计 “有状态”需求 课程回顾 我们之前讲到过 Deployment 作为一个应用编排管理工具,它为我们提供了哪些功能? 如下图所示: 首先它支持定义一组 Pod 的期望数量,Controller 会为我们维持 Pod 的数量在期望的版本以及期望的数量; 第二它支持配置 Pod 发布方式,配置完成后 Controller 会按照我们给出的策略来更新 Pod,同时在更新的过程中,也会保证不可用 Pod 数量在我们定义的范围内; 第三,如果我们在发布的过程中遇到问题,Deployment 也支持一键来回滚。 可以简单地说,Deployment 认为:它管理的所有相...

阅读更多

[转]第21章 Kubernetes存储架构及插件使用

本文将主要分享以下三方面的内容: Kubernetes 存储体系架构; Flexvolume 介绍及使用; CSI 介绍及使用。 Kubernetes 存储体系架构 引例: 在 Kubernetes 中挂载一个 Volume 首先以一个 Volume 的挂载例子来作为引入。 如下图所示,左边的 YAML 模板定义了一个 StatefulSet 的一个应用,其中定义了一个名为 disk-pvc 的 volume,挂载到 Pod 内部的目录是 /data。disk-pvc 是一个 PVC 类型的数据卷,其中定义了一个 storageClassName。 因此这个模板是一个典型的动态存储的模板。右图是数据卷挂载的过程,主要分为 6 步: 第一步:用户创建一个...

阅读更多

[转]第20章 Gpu管理和deviceplugin工作机制

本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕。 经过三年的发展,AI 有了许许多多的落地场景,包括智能客服、人脸识别、机器翻译、以图搜图等功能。其实机器学习或者说是人工智能,并不是什么新鲜的概念。而这次热潮的背后,云计算的普及以及算力的巨大提升,才是真正将人工智能从象牙塔带到工业界的一个重要推手。 与之相对应的,从 2016 年开始,Kubernetes 社区就不断收到来自不同渠道的大量诉...

阅读更多

[转]第19章 调度器的调度流程和算法介绍

本文将主要分享以下四个部分的内容: 调度流程 调度算法 如何配置调度器 如何扩展调度器 调度流程 调度流程概览 首先来看一下调度器流程概览图: 调度器启动时会通过配置文件 File,或者是命令行参数,或者是配置好的 ConfigMap,来指定调度策略。指定要用哪些过滤器 (Predicates)、打分器 (Priorities) 以及要外挂哪些外部扩展的调度器 (Extenders),和要使用的哪些 Schedule 的扩展点 (Plugins)。 启动的时候会通过 kube-apiserver 去 watch 相关的数据,通过 Informer 机制将调度需要的数据 :Pod 数据、Node 数据、存储相关的数据,以及在抢占流程中需要的 PDB 数...

阅读更多

[转]第18章 Kubernetes调度和资源管理

这节课主要讲三部分的内容: Kubernetes 的调度过程; Kubernetes 的基础调度能力(资源调度、关系调度); Kubernetes 高级调度能力(优先级、抢占)。 另外,关于调度器架构和具体算法部分,会由我的同事在下一节课为大家介绍。 Kubernetes 调度过程 首先来看第一部分 - Kubernetes 的调度过程。如下图所示,画了一个很简单的 Kubernetes 集群架构,它包括了一个 kube-ApiServer,一组 webhooks 的 Controller,以及一个默认的调度器 kube-Scheduler,还有两台物理机节点 Node1 和 Node2,分别在上面部署了两个 kubelet。 我们来看一下,假如要向这个 ...

阅读更多

[转]第17章 深入理解etcd Etcd性能优化实践

本文将主要分享以下五方面的内容: etcd 前节课程回顾复习; 理解 etcd 性能; etcd 性能优化 -server 端; etcd 性能优化 -client 端。 etcd 前节课程回顾复习 etcd 诞生于 CoreOs 公司,使用 Golang 语言开发,是一个分布式 KeyValue 存储引擎。我们可以利用 etcd 来作为分布式系统元数据的存储数据库,存储系统里面重要的元信息。etcd 同样也被各大公司广泛使用。 下图为 etcd 的基本架构: 如上所示,一个集群有三个节点:一个 Leader 和两个 Follower。每个节点通过 Raft 算法同步数据,并通过 boltdb 存储数据。当一个节点挂掉之后,另外的节点会自动选举出来一个...

阅读更多

[转]第16章 深入理解etcd 基于原理解析

本文将主要分享以下三方面的内容: 第一部分,会为大家介绍 etcd 项目发展的整个历程,从诞生至今 etcd 经历的那些重要的时刻; 第二部分,会为大家介绍 etcd 的技术架构以及其内部的实现机制,通过对技术架构和内部机制的学习,帮助我们正确地使用 etcd; 第三部分,结合具体的使用场景,为大家介绍在分布式系统中 etcd 所扮演的角色。 etcd 项目的发展历程 etcd 诞生于 CoreOS 公司,它最初是用于解决集群管理系统中 OS 升级的分布式并发控制以及配置文件的存储与分发等问题。基于此,etcd 被设计为提供高可用、强一致的小型 keyvalue 数据存储服务。 项目当前隶属于 CNCF 基金会,被 AWS、Google、Microsoft、Al...

阅读更多

[转]第15章 深入剖析linux容器

今天的内容主要分成以下三个部分 资源隔离和限制; 容器镜像的构成; 容器引擎的构成; 前两个部分就是资源隔离和限制还有容器镜像的构成,第三部分会以一个业界比较成熟的容器引擎为例去讲解一下容器引擎的构成。 容器 容器是一种轻量级的虚拟化技术,因为它跟虚拟机比起来,它少了一层 hypervisor 层。先看一下下面这张图,这张图简单描述了一个容器的启动过程。 最下面是一个磁盘,容器的镜像是存储在磁盘上面的。上层是一个容器引擎,容器引擎可以是 docker,也可以是其它的容器引擎。引擎向下发一个请求,比如说创建容器,然后这时候它就把磁盘上面的容器镜像,运行成在宿主机上的一个进程。 对于容器来说,最重要的是怎么保证这个进程所用到的资源是被隔离和被限制住的,在 L...

阅读更多