目录

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

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

大纲

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

CNCF云原生介绍

CNCF ToC: CNCF Cloud Native Definition v1.0

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建

和运行可弹性扩展的应用。 **云原生的代表技术包括容器、 服务网格、 微服务、

不可变基础设施和声明式API。**

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的

自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大

变更。

云原生计算基金会( CNCF)致力于 培育和维护一个厂商中立的开源生态系统

来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

云计算的发展历程

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

https://i-blog.csdnimg.cn/blog_migrate/163814d0c97a380c270d64e38617c2ba.png

云计算的发展历程

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

https://i-blog.csdnimg.cn/blog_migrate/1de9ebe1f43d8f09ca317a0c18b698f5.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/c85060c72cc1269a0f1b4046a0b98444.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/4e0b0a1aab549119e3a803b22a63826a.png

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

CNCF当前项目介绍

https://i-blog.csdnimg.cn/blog_migrate/51f89ff579dc4cb130eb1ba0801ec106.png

CNCF当前项目介绍

https://i-blog.csdnimg.cn/blog_migrate/eed637bf295f699b65c12d72da72d869.png

CNCF当前项目介绍

https://i-blog.csdnimg.cn/blog_migrate/71de3f4b445b1a0270cef75835fd41ba.png

CNCF当前项目介绍

容器技术发展介绍

容器技术发展历史

容器虚拟化( LXC) :提供应用隔离运行的能力;

Docker:基于容器提供统一的应用分发平台

https://i-blog.csdnimg.cn/blog_migrate/075c7fd97c14f242189043085e1bd266.png

容器技术发展历史

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

https://i-blog.csdnimg.cn/blog_migrate/341a698b47712267051dc9035d465d97.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/d6538aa84071ed2a99ec47271990e96a.png

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 namespaceCLONE_NEWPID隔离不同用户的进程,不同的namespace中可以有相同的pid。 允许嵌套,可以方便实现docker in docker
UTS namespaceCLONE_NEWUTS允许每个容器拥有独立的hostname和domain name,使其在网络上可 以被视为独立的节点。
IPC namespaceCLONE_NEWIPC保证容器间的进程交互,进行信号量、消息队列和共享内存的隔离。
Network namespaceCLONE_NEWNET实现网络隔离,每个net namespace有独立的network devices、 ip addresses、 ip routing tables、 /proc/net目录。
Mount namespaceCLONE_NEWNS隔离不同namespace的进程看到的目录结构,每个namespace的容器在 /proc/mounts的信息只包含所在namespace的mount point。
User namespaceCLONE_NEWUSER允许每个容器可以有不同的user和group id

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

https://i-blog.csdnimg.cn/blog_migrate/ffc9cb7d8816490066d6cb05a70353f3.png

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

概念:一个基于文件的接口,通过把一组目录交错起来,形成一个单一视图。

优点:

1、多个容器可以共享image存储,节省存储空间;

2、部署多个容器时, base image可以避免多次拷贝,实现快速部署;

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

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

https://i-blog.csdnimg.cn/blog_migrate/4621c8932634673b2a9599efee068675.png

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

  • 虚拟化层的存在,保障了容器在多租户场景下的安全性。
  • 高度裁剪和优化过的KVM, guest OS保证了VM启动时间极短,性能损耗极小。
  • 接口层支持对接docker引擎或crio,镜像完全兼容docker镜像,无需修改。完美融入K8S容器生态。

Kubernetes技术架构

什么是Kubernetes?

https://i-blog.csdnimg.cn/blog_migrate/160ea34c0c458fad45757bf3fac7f977.png

什么是Kubernetes?

Kubernetes系统组件

https://i-blog.csdnimg.cn/blog_migrate/0a0240dac9c74ab3a34107c527df387e.png

Kubernetes系统组件

Kubernetes架构

https://i-blog.csdnimg.cn/blog_migrate/5546e1b3d1625b1eb53bf7e723743abb.png

Kubernetes架构

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

https://i-blog.csdnimg.cn/blog_migrate/1742acf071f434d87ac145ae3c9e9667.png

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

https://i-blog.csdnimg.cn/blog_migrate/cf6da1dc0d86d95ddf23d03b1c6f6f5d.png

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

Kubernetes Controllers

https://i-blog.csdnimg.cn/blog_migrate/9ae90796fdd5a1afe5fcad545a210e79.png

Kubernetes Controllers

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

https://i-blog.csdnimg.cn/blog_migrate/53a4f876afe8b1b0a69205a6ca3cc379.png

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

Kubernetes架构分层

https://i-blog.csdnimg.cn/blog_migrate/e3cb209dce52a6ff7113918c3e83843b.png

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

https://i-blog.csdnimg.cn/blog_migrate/76a5aa6c8fe842a8cc8e7330d41c3085.png

Kubernetes生态系统范畴

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

• K8S南向 – 多样化的环境

– 容器、网络、存储插件

– 镜像仓库

– 多云插件

– 集群管理配置

– 认证系统

• K8S北向 – 多样化的服务和工具

– 日志&监控

– 配置语言

– 编排部署

– 持续集成

– PaaS

– 工作流

– 函数服务

– 数据处理服务

– 对象事务服务 (数据库、存储)

– 互联网应用