阿里云认证
一、云原生概论
1.1、云原始优势
- 传统软件架构,用户不仅仅需要关注基础设施的能力及其运维,还需要采购及维护大量的第三方软件以及非功能性能力,降低软件开发效率,并且没有充分利用云计算IaaS与Paas的能力。
- 从技术的角度,云原生架构是基于云原生技术的一组架构 原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不在有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
1.2、容器技术带来的价值
- 容器是轻量级的
- 容器是易于移植的
- 容器可以实现秒级部署
- 容器是互相隔离的
1.3 、容器编排带来的价值
- 大规模容器自动化部署
- 敏捷高效的资源调度
- 强大的弹性伸缩能力
- 容器服务自愈能力
- 自动化的服务发现
1.4 Docker容器
是资源分割和调度的基本单位
封装整个服务的运行时环境,用于构建、发布和运行分布式应用的一个框架
是一个跨平台、可移植并且简单易用的容器解决方案
1.5、Docker镜像
是一个Linux的文件系统
包含运行的程序以及程序、库、资源、配置等数据
类似一个只读压缩包
用于创建容器
分层构建、前一层是后一层的基础
包含了一个精简的操作系统、应用运行所必须的文件和依赖包
一次构建、到处运行
构建: docker commit 生成镜像; Dockerfile
1.6、容器
容器是镜像运行的运行实体
容器可以被创建、启动、停止、删除、暂停
容器运行特定应用
容器之间相互隔离
容器是多层制度镜像之上运行的可写层
容器停止删除,可写层数据丢失
数据持久化:使用宿主存储、网络存储
1.7 Kubernetes核心功能
服务发现与负载均衡
容器自动装箱
存储编排
自动化容器恢复
自动发布与回滚
配置与密文管理
批量执行
水平伸缩
1.8 Pod
最小的调度及资源单位
由一个或者多个容器组成
定义容器的运行方式
提供给容器共享的运行环境
1.9 、 Deployment
是Kubernetes中部署应用最常见的一种方式
做应用真正的管理
Pod是组成Deployment最小的单元
定义一组Pod的副本数目、版本等
通过控制器维持Pod数目,自动恢复失败的Pod
通过控制器以指定策略控制版本
1.10、Service
通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址
将请求镜像负载分发到后端的各个容器应用上
提供了一个或者多个Pod实例的稳定访问地址
支持多种访问方式:
cluster
NodePort
LoadBalance
1.11、 Namespace
用来做一个集群内部的逻辑隔离的,它包括鉴权、资源管理等;
每个资源都属于一个Namespace
同一个Namespace中的资源名称唯一
不同Namespace中资源名可重名
1.12、 Kubernetes核心架构
Kubernetes系统用于管理分布式节点集群中的微服务或者容器化应用程序
提供了零停机时间部署、自动回滚、缩放和容器自愈(其中包括自动配置、自动重启、自动复制的高弹性基础设施,以及容器的自动缩放等)等功能。
1.13 Master服务端
kube-apiserver:集群的HTTP REST API接口,是集群控制的入口
kube-controller-manager: 家中所有资源对象自动化控制中心
kube-scheduler:集群中Pod资源对象的调度服务
Etcd: 一个分布式的存储系统
1.14、Node客户端组件
kubelet组件: 负责管理节点上容器的创建、删除、启停等任务,与Master节点进行通信;
kube-proxy组件: 负责Kubernetes服务的通信及负载均衡服务;
Container Runtime: 负责容器的基础管理服务,接收kubelet组件的指令。
1.15、Kubernetes典型使用流程
二、阿里云云原生容器服务产品体系
容器服务Kubernetes版(ACK)
Serverless Kubernetes (ASK)
镜像服务(ACR)
服务网络(ASM)
边缘容器服务(ACK@Edage)
2.1 容器服务Kubernetes版
阿里云容器服务产品三种形态:
- 专有Kubernetes
- 托管版Kubernetes
- Serverless Kubernetes
2.2 容器服务ACK产品核心功能
集群形态:ACK/ACK Pro/ASK
组件升级: 一键升级k8s版本
弹性伸缩:支持垂直伸缩、水平伸缩等多种扩容模式
多云管理: 支持多云、混合云集群管理
安全授权:支持RAM授权和RBAC权限管理
2.3、弹性伸缩
弹性伸缩分为两个维度:
调度层弹性
资源层弹性
调度层弹性组件包括:
容器水平伸缩(HPA)
容器垂直伸缩(VPA)
容器定时伸缩(CronHPA)
负责均衡(Elastic-Workload)
2.4、容器服务ACK应用场景
弹性伸缩架构应用场景
DevOps持续交付应用场景
云原生AI应用场景
微服务架构
混合云架构
2.5 、Deployment和Statefulset的区别
2.6、有状态应用集的特点
- 稳定且需要唯一的网络标识符
- 稳定且持久的存储
- 要求有序,平滑的部署和扩展
- 要求有序,平滑的终止和删除
- 有序的滚动和更新
2.7 StatefulSet可能会创建的三种类型的资源
- ControllerRevision,通过这个资源,statefulSet可以很方便的管理不同版本的template模版;
- PVC,StatefulSet会在创建Pod之前,先更具这个模版创建PVC,并把PVC加到Pod volume中
- Pod,StatefulSet按照顺序创建、删除、更新Pod,每个Pod有唯一的序号。
三、容器网络
Kubernetes为了更好的控制网络的接入,推出了CNI即容器网络的API接口。
它是Kubernetes中标准的一个调用网络实现的接口;
kubelet通过这个API来调用不同的网络插件以实现不同的网络配置,实现了这个接口的就是CNI插件,它实现了一系列的CNI API接口
目前比较常见的Terway、Flannel、Calico、Weave等等。
CNI是Kubernetes于底层网络插件之间的一个抽象层,为k8s屏蔽了底层网络实现的复杂度,同时解耦了k8s的具体网络插件实现
3.1 、ACK容器网络的实现
CNI是Container Network Interface的缩写;
他是一个通用的网络插件的Kubernetes网络接口;
Kubernetes使用CNI接口调用网络插件;
网络插件(CNI)能分配且唯一的IP地址;
网络插件(CNI)可以配置Pod的网络和打通Pods之间的访问;
3.2 网络规划
规划注意事项
3.3 Flannel网络
3.4 Terway网络
3.5 Flannel 和Terway网络的对比
3.6 Service网络
通过服务(Service)抽象,能够解耦前端和后端的关联,从而实现松耦合的微服务设计,以及自动负载均衡实现快速的业务弹性。
ACK容器服务采用Service方式为一组容器提供固定的访问入口,并对这一组容器做负载均衡。
3.7 Ingress
在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,其几乎承载这集群内服务访问的所有流量;
Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式;
通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service后端Pod。
四、存储
4.1、存储插件
4.2、存储的选择
五、日志
容器服务ACK可光测性租金啊-SLS日志服务,SLS可以采集三种不同类型的日志
APIServer等核心组件的日志
Service Mesh/Ingress等接入层的日志
应用的标准日志
应用实时监控服务ARMA(Application Real-Time Monitoring Service)
AHAS架构感知监控,通常在Kubernetes集群中负载的类型大部分为微服务;为Kubernetes应用安装AHAS探针后,AHAS能自动识别系统中的Pod,Deployment,Service和他们的与其他组织的依赖关系。
六、弹性伸缩
6.1、调度层弹性组件
调度层弹性组件都和Pod相关的,并不关心资源的情况;
七、Serverless容器
对于Serverless Kubernetes而言
最重要的一个概念是将容器的运行时和具体的节点运行环境解耦;
用户无需关注node运维和安全,降低运维成本;
极大简化了容器弹性实现,无需按照容量规划,按需创建容器应用Pod即可;
极大简化了容器弹性实现,无需按照容量规划,按需创建容器应用Pod即可;
此外,Serverless容器运行时可以被整个云弹性计算基础设施所支撑,保障整体弹性的成本和规模。
7.1 ECI
ECI是阿里云基于ECS IaaS资源池提供的稳定、高效、高弹性容器实例服务;
ECI让容器称为了公有云的第一等公民,用户无需噶偶买和管理ecs就可以直接部署容器应用,这种简化的容器实例产品心态和ASK形成了一个完美的租户;
弹性容器实例ECI(Elastic Container Instance) 是阿里云在云原生时代为用户提供的基础计算服务,是阿里云云原生时代下的云计算基础设施;
ECI改变了遗忘计算服务以整台集群作为交付形态的传统,通过结合容器技术与无服务器(Serverless)技术为用户提供了一款安全便捷的Serverless运行服务;
ECI为Kubernetes提供了基础的容器Pod运行环境,但业务间的依赖,负载均衡,弹性伸缩,定期调度等能力依然需要Kubernetes来提供。
7.2、网络管理
ASK集群中ECI Pod默认使用Host网络模式,占用交换机VSwitch的一个弹性网刊ENI资源,与VPC内的ECS、RDS互联互通;
7.3 存储管理
Pod支持挂载阿里云块存储和文件存储
阿里云块存储(Disk)
阿里云文件存储(NAS)
7.4 日志管理
ECI模式下不支持DeamonSet,通过将Job类任务挂载NAS盘,把输出的日志存储在NAS盘,在通过另一个同样挂载NAS盘的Pod来采集Job任务标准输出到日志系统中。
7.5 网络管理
阿里云Serverless Kubernetes服务,虚拟节点退出Pod挂载弹性公网IP功能,此功能能使某些Serverless容器应用的部署和服务访问变的更加简单和便利;
无需创建VPC NAT网关即可让单个Pod访问网络;
无需创建Service也可以让单个Pod暴露公网服务;
可以更加灵活而且动态的绑定Pod和EIP;
八、服务网格
Service Mesh
Istio
8.1 阿里云服务网格 Alibaba Cloud Service Mesh(ASM)
统一管理微服务应用流量、兼容Istio的托管式平台
通过流量控制、网格观测以及服务间通信安全等功能,服务网格可以全方位建华服务治理;
为运行在异构计算基础设施的服务提供统一的管理能力;
https://help.aliyun.com/zh/eci/user-guide/create-a-preemptible-elastic-container-instance
1、Kubernetes集群初始的命名空间 : kube-system default kube-public