目录
一:云原生
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术:容器、服务网格、微服务、不可变基础设施、声明式API
云原生核心概念:
- 解耦软件开发,提高灵活性和可维护性
- 多云支持,避免厂商锁定
- 避免倾入式定制
- 提高工作效率和资源利用率
二:容器技术基础介绍
开发运维的问题
- 应用与运行环境分开交付,无法保证环境的一致性
- 资源、环境的隔离问题
- 之前有大量探索,例如虚拟机层面的隔离,应用层面的隔离,探索追求更好的隔离性、高高的资源利用率及启动时间
容器的概念
在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机相同的是,可以为这些容器设置计算资源限制,挂载存储,连接网络,而与虚拟机不同的是,这些应用运行时共用一个Kernel。
这些技术的基础是Linux的LXC(linux Container),通过将Cgroups的资源管理能力和Linux Namespace的隔离能力组合在一起。
概念-Cgroups
其名称源自控制组群(Control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(包含cpu、内存-memory、devices子系统、磁盘输入与输出等)。
概念-Namespace
提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的Namespcae中,实现资源隔离的目的。不同的Namespace程序,可以享有一份独立的系统资源。
隔离内容包括:
- UTS-主机名与域名
- IPC-信号量、消息队列和共享内存
- PID-进程编号
- Network-网络设备,网络栈、端口
- Mount-挂载点(文件系统)
- User-用户和用户组
Docker介绍

一个用于开发,交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而快速交付软件。大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker VS VM
- 1 Docker启动快速属于秒级别,虚拟机通常几分钟去启动
- 2 Docker需要的资源更少,docker在操作系统级别进行虚拟化,docker容器和内核交互,几乎没有性能损耗,性能优于通过Hypervisor层和内核层的虚拟化
- 3 docker更轻量,docker的架构可以公用一个内核与共享应用程序库,所占内存极小
- 4 高可用和可恢复性:docker对业务的高可用支持是通过快速重新部署实现的
- 5 快速创建、删除:虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间
- 6 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker在Dockerfile中记录了容器构建过程,可以在集群中实现快速分发和快速部署
Docker使用流程

- 1 首先开发者在开发环境机器上开发应用并制作镜像。Docker执行命令,构建镜像并存储在机器上。
- 2 开发者发送上传镜像命令,docker收到命令后,将本地镜像上传到镜像仓库。
- 3 开发者向生产环境机器发送运行镜像命令,生产环境机器收到命令后,docker会从镜像仓库拉取镜像到仓库上,然后基于镜像运行容器。
Docker镜像
一种新型的应用打包、分发和运行机制。容器镜像将应用环境,包括代码、依赖库、工具、资源文件和元信息等,打包成一种操作系统发行版无关的不可变更软件包。
镜像仓库
容器镜像服务(Software Repository for Container,简称SWR)是一种支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理服务,帮助快速不是容器化服务。
- 核心功能:镜像全生命周期管理、私有镜像仓库、镜像源加速、镜像仓库触发器、镜像安全扫描
使用Dockerfile进行镜像构建
Build image-->push image-->pull image
结合阿里云平台的提交过程:Docker初体验-“AI Earth”人工智能创新挑战赛——AI助力精准气象和海洋预测 - 简书
# Dockerfile文件
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /
## Install Requirements
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
## 镜像启动后统一执行 sh run.sh
## 本题用如下代码,如果自己测试,用此代码,CMD ["sh", "code/run.sh"]
CMD ["sh", "run.sh"]
三:Kubernetes系统快速入门
“云”的资源在使用者看来是无限扩展的,并且可以随时获取、按需使用、随时扩展,按使用付费。

1、 K8S介绍
可分为内核层、应用层、治理层、接口层,其中生态层不属于K8S范围

K8S架构分层

各层的详细定义
接口层(工具、SDK库、UI等)
- K8S官方的项目会提供库、工具、UI等外围工具
- 外部可提供自有的实现
治理层:策略执行和自动化编排
- 对应用运行的可选层,没有这层功能不影响应用的执行
- 自动化API:水平弹性伸缩、租户管理、集群管理、动态LB等
- 策略API:限速、资源配额、pod可靠性策略、network policy等
应用层:部署(无状态/有状态应用、批处理、集群应用等)和路由(服务发现、DNS解析等)
- K8S发行版必备功能和API,K8S会提供默认的实现,如scheduler
controller和scheduler可以被替换为各自的实现,但必须通过一致性测试
业务管理类Controller
内核层:K8S最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
- 由主流K8S codebase实现(主项目),属于K8S的内核,最小特性表。等同于Linux Kernel
- 提供必不可少的Controller, Scheduler的默认实现
- 集群管理类Controller
2、 K8S基本概念
关键概念-pod
- pod是能够创建、调度、管理的最小部署单元,是一组容器的集合,而不是单独的应用容器
- 同一个pod里面的容器共享同一个网络命名空间,IP地址及端口空间
- 从生命周期来说,pod是短暂的而不是长久的的应用。pods被调度到节点,保持在这个节点上直到被销毁
- 容器包括:基础容器(infrastructure container)、初始化容器(InitContainers)、业务容器(containers)
pod与工作负载的关系
- pod通过工作负载(work load)实现应用的运维,如伸缩、升级等
3、 K8S总体架构


基于list-watch机制的控制器架构


最低0.47元/天 解锁文章
457

被折叠的 条评论
为什么被折叠?



