K8S原理剖析:云原生技术的前世今生

大纲

  • CNCF云原生介绍
  • 容器技术发展介绍
  • Kubernetes技术架构

CNCF云原生介绍

CNCF ToC: CNCF Cloud Native Definition v1.0

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建
和运行可弹性扩展的应用。云原生的代表技术包括容器、 服务网格、 微服务、
不可变基础设施和声明式API。


这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的
自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大
变更。


云原生计算基金会( CNCF)致力于培育和维护一个厂商中立的开源生态系统
来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

云计算的发展历程

“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施。

K8S原理剖析:云原生技术的前世今生_第1张图片 云计算的发展历程

云计算伴随云原生技术步入新时代

K8S原理剖析:云原生技术的前世今生_第2张图片 云计算伴随云原生技术步入新时代

容器是云原生技术发展的第一波热潮

K8S原理剖析:云原生技术的前世今生_第3张图片 容器是云原生技术发展的第一波热潮

容器服务的目标就是打造Cloud Native应用的运行环境

K8S原理剖析:云原生技术的前世今生_第4张图片 容器服务的目标就是打造Cloud Native应用的运行环境

CNCF当前项目介绍

K8S原理剖析:云原生技术的前世今生_第5张图片 CNCF当前项目介绍
K8S原理剖析:云原生技术的前世今生_第6张图片 CNCF当前项目介绍
K8S原理剖析:云原生技术的前世今生_第7张图片 CNCF当前项目介绍

容器技术发展介绍

容器技术发展历史

容器虚拟化( LXC) :提供应用隔离运行的能力;
Docker:基于容器提供统一的应用分发平台

K8S原理剖析:云原生技术的前世今生_第8张图片 容器技术发展历史

容器的三大好处, 为应用而生

K8S原理剖析:云原生技术的前世今生_第9张图片 容器的三大好处, 为应用而生

Docker – Build, Ship, and Run Any App, Anywhere

K8S原理剖析:云原生技术的前世今生_第10张图片 Docker – Build, Ship, and Run Any App, Anywhere
 

容器底层关键技术 - Linux Cgroup

Docker使用Linux Cgroup技术来实现容器实例的资源管理

cgroup子系统 资源管理 对应的docker接口
memory 限制cgroup中的任务所能使用的内存上限 -m
--memory-swap
--memory-reservation
--kernal-memory
--oom-kill-disable
--memory-swappiniss
cpu 使用调度程序提供对CPU的cgoup任务访问 -c
--cpu-period
--cpu-quota
Cpuset 为cgroup中的任务分配独立CPU和内存节点 --cpuset-cpus
--cpuset-mems
Blkio 为块设备设定输入/输出限制 --blkio-weight
--blkio-weight-device
--device-read-bps
--device-write-bps
--device-read-iops
--device-write-iops

容器底层关键技术 - Linux Namespace

Docker使用linux namespace技术来实现容器实例间的资源隔离

Namespace 系统调用参数 隔离内容
PID namespace CLONE_NEWPID 隔离不同用户的进程,不同的namespace中可以有相同的pid。
允许嵌套,可以方便实现docker in docker
UTS namespace CLONE_NEWUTS 允许每个容器拥有独立的hostname和domain name,使其在网络上可
以被视为独立的节点。
IPC namespace CLONE_NEWIPC 保证容器间的进程交互,进行信号量、消息队列和共享内存的隔离。
Network namespace CLONE_NEWNET 实现网络隔离,每个net namespace有独立的network devices、 ip
addresses、 ip routing tables、 /proc/net目录。
Mount namespace CLONE_NEWNS 隔离不同namespace的进程看到的目录结构,每个namespace的容器在
/proc/mounts的信息只包含所在namespace的mount point。
User namespace CLONE_NEWUSER 允许每个容器可以有不同的user和group id

容器底层关键技术 – 联合文件系统

K8S原理剖析:云原生技术的前世今生_第11张图片 容器底层关键技术 – 联合文件系统

概念:一个基于文件的接口,通过把一组目录交错起来,形成一个单一视图。
优点:
1、多个容器可以共享image存储,节省存储空间;
2、部署多个容器时, base image可以避免多次拷贝,实现快速部署;


Docker目前支持的联合文件系统种类包括devicemapper、 overlay2、 aufs、 btrfs、 vfs和

新一代Kata容器实现多租户容器强隔离

K8S原理剖析:云原生技术的前世今生_第12张图片 新一代Kata容器实现多租户容器强隔离
  • 虚拟化层的存在,保障了容器在多租户场景下的安全性。
  • 高度裁剪和优化过的KVM, guest OS保证了VM启动时间极短,性能损耗极小。
  • 接口层支持对接docker引擎或crio,镜像完全兼容docker镜像,无需修改。完美融入K8S容器生态。

Kubernetes技术架构

什么是Kubernetes?

K8S原理剖析:云原生技术的前世今生_第13张图片 什么是Kubernetes?

 Kubernetes系统组件

K8S原理剖析:云原生技术的前世今生_第14张图片  Kubernetes系统组件

Kubernetes架构

K8S原理剖析:云原生技术的前世今生_第15张图片 Kubernetes架构

 Declarative (申明式API) vs Imperative (命令式API)

K8S原理剖析:云原生技术的前世今生_第16张图片  Declarative (申明式API) vs Imperative (命令式API)

 

K8S原理剖析:云原生技术的前世今生_第17张图片  Declarative (申明式API) vs Imperative (命令式API)

 Kubernetes Controllers

K8S原理剖析:云原生技术的前世今生_第18张图片  Kubernetes Controllers

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

K8S原理剖析:云原生技术的前世今生_第19张图片 Kubernetes基于list-watch机制的控制器架构

Kubernetes架构分层

K8S原理剖析:云原生技术的前世今生_第20张图片

K8S社区架构中对各层的详细定

K8S原理剖析:云原生技术的前世今生_第21张图片

Kubernetes生态系统范畴

• 容器内 – 多样化工作负载


• K8S南向 – 多样化的环境
– 容器、网络、存储插件
– 镜像仓库
– 多云插件
– 集群管理配置
– 认证系统


• K8S北向 – 多样化的服务和工具
– 日志&监控
– 配置语言
– 编排部署
– 持续集成
– PaaS
– 工作流
– 函数服务
– 数据处理服务
– 对象事务服务 (数据库、存储)
– 互联网应用

 

你可能感兴趣的:(K8S原理剖析:云原生技术的前世今生)