阿里云云原生容器工程师ACP认证(一)—云原生技术概述

 

云原生技术概述

云原生计算基金会(CNCF)关于云原生定义的最新版本是:云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

在这里插入图片描述

在这里插入图片描述

容器技术基础-Docker

Docker基础概念

容器技术的价值

  • 容器是轻量级的
  • 容器是易于移植的
  • 容器可以实现秒级部署
  • 容器是互相隔离的

容器编排带来的价值

  • 大规模容器自动化部署
  • 敏捷高效的资源调度
  • 强大的弹性伸缩能力
  • 容器服务自愈能力
  • 自动化的服务发现

Docker容器基础概念

  • 是资源分割和调度的基本单位
  • 封装整个服务的运行时环境,用于构建、发布和运行分布式应用的一个框架
  • 是一个跨平台、可移植并且简单易用的容器解决方案
  • Docker是世界领先的软件容器平台
  • Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,对进程进行封装隔离
  • Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员。
  • 用户可以方便的创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样

Docker的三大核心概念

  • 容器:容器是从镜像创建的运行实例
  • 镜像:容器镜像为标准化打包提供了基础
  • 仓库:Docker仓库是集中存放镜像文件的场所

Docker架构与使用

Docker Registry:镜像仓库

  • 官方的仓库:Docker Hub
  • 私有镜像仓库搭建:基于开源项目Harbor或阿里云提供的镜像仓库服务

Docker Server:Docker服务端

  • 宿主机中运行守护进程(Docker daemon)
  • 接收Docker客户端(Client)发送的指令来拉取镜像、缓冲、启动容器等操作 Docker Client:Docker客户端
  • 主要负责通过docker命令行对容器进行基本操作,如拉取镜像,构建镜像,运行容器等等

容器编排技术基础-Kubernetes

Kubernetes基础架构

Kubernetes容器编排的事实标准

Kubernetes

  • Google开源的一个容器编排引擎
  • 支持自动化部署、大规模可伸缩、应用容器化管理
  • 在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

核心功能

  • 服务发现与负载均衡
  • 容器的自动装箱
  • 存储编排
  • 自动化容器恢复
  • 自动发布与回滚
  • 配置与密文管理
  • 批量执行
  • 水平伸缩

Kubernetes 是一个自动化的容器编排平台,它负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。

Kubernetes核心概念-Pod

Pod

  • 是Kubernetes中能够创建和部署的最小单元
  • 是Kubernetes集群中的一个应用实例,总是部署在同一个节点Node上
  • 包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源
  • 支持多种容器环境,,Docker则是最流行的容器环境

Kubernetes核心概念-Volume

Volume

  • Pod中能够被多个容器共享的磁盘目录
  • 用来管理 Kubernetes 存储的
  • 用来声明在 Pod 中的容器可以访问文件目录的
  • 一个卷可以被挂载在Pod中一个或者多个容器的指定路径下面
  • 支持多种后端存储的抽象:本地存储、分布式存储、阿里云存储等

Docker提供了Volume机制以便实现数据的持久化,Kubernetes中Volume的概念与Docker中的 Volume类似

Kubernetes核心概念-Deployment

Deployment

  • 是Kubernetes中部署应用最常见的一种方式
  • 做应用的真正的管理
  • Pod 是组成 Deployment 最小的单元
  • 定义一组 Pod 的副本数目、版本等

Kubernetes核心概念-Service

Service

  • 是Kubernetes核心的概念
  • 通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址
  • 将请求进行负载分发到后端的各个容器应用上
  • 支持多种访问方式实现:
    • Cluster IP
    • NodePort
    • LoadBalance

Kubernetes核心概念-Namespace

Namespace

  • 用来做一个集群内部的逻辑隔离的,它包括鉴权、资源管理等
  • 每个资源都属于一个Namespace
  • 同一个Namespace中的资源名唯一
  • 不同Namespace中资源可重名

Namespaces可以理解为Kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离,他们可以为软件开发团队提供组织,安全、性能等方面的保障。

Kubernetes核心架构

  • Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序
  • 提供了零停机时间部署、自动回滚、缩放和容器的自愈(其中包括自动配置、自动重启、自动复制 的高弹性基础设施,以及容器的自动缩放等)等功能。

Kubernetes Master(主控节点):

  • 集群的“大脑”,负责管理所有节点 (Node)
  • 负责调度Pod在哪些节点上运行
  • 负责控制集群运行过程中的所有状态

Kubuernetes Node(工作节点):

  • 负责管理所有容器(Container)
  • 负责监控/上报所有Pod的运行状态

Kubernetes架构- Master服务端

  • kube-apiserver:集群的HTTP REST API接口,是集群控制的入口
  • kube-controller manager:集群中所有资源对象的自动化控制中心
  • kube-scheduler:集群中Pod资源对象的调度服务
  • Etcd:一个分布式的一个存储系统

Kubernetes架构-Node客户端组件

  • kubelet组件:负责管理节点上容器的创建、删除、启停等任务,与 Master节点进行通信
  • kube-proxy:负责Kubernetes服务的通信及负载均衡服务
  • Container Runtime:负责容器的基础管理服务,接收kubelet组件的指令

Kubernetes流程及场景

Kubernetes典型使用流程

①发出指令 ②API响应指令,存储etcd,创建Deployment ③控制器发现资源,并加入到工作队列,创建POD ④创建完成,更新存储etcd ⑤资源调度根据规则将POD绑定主机 ⑥绑定结果存储etcd ⑦Kubelet基于运行情况增加POD ⑧Kubelet创建增加的新POD ⑨kube-proxy对POD服务发现和负载均衡 ⑩控制器检测POD运行情况,删除或重新创建

在这里插入图片描述

Kubernetes使用场景-调度

调度器

  • Kubernetes核心组件之一,承载着整个集群资源的调度功能
  • 根据特定调度算法和策略,将Pod调度到最优工作节点上
  • 更合理与充分的利用集群计算资源,使资源更好的服务于业务服务的需求

等待调度——过滤

正在调度——策略

集群状态——运行

Kubernetes使用场景-自动恢复

  • Kubernetes的主要好处之一是它具有管理和维护集群中容器的能力
  • 可以提供服务零停机时间的保障。
  • Pod或容器出现故障时Kubernetes还可以让系统实现”自愈”

Kubernetes使用场景-弹性伸缩

  • Kubernetes 有业务负载检查的能力,会根据业务承担的负载,对业务进行扩容,实现资源弹性伸缩。