K8S基础 | 容器

Posted 拾墨回忆录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S基础 | 容器相关的知识,希望对你有一定的参考价值。

文章结构:

|-什么是容器?

|-容器和虚拟机有什么区别?

|-容器解决了什么问题?

|-容器的优缺点有哪些?

|-容器的分类?

全文字数:

1675

阅读时间:

6分钟






/ 什么是容器? /

容器是可以让用户在一个资源隔离的进程中,运行应用程序及其依赖项的轻量级操作系统级的虚拟化技术。

虚拟化,是将计算机的各种硬件资源,例如CPU、内存、磁盘及网络等进行资源池化,管理员可以将资源池内的资源重新进行分配,为其他虚拟计算机提供不同需求的资源。


虚拟化技术的两个优点:

  1. 解决了高性能计算机硬件产能过剩的问题。

  2. 可将老旧的计算机硬件重新利用为资源池。


容器中运行的应用程序来源于一个被打包好的镜像文件,镜像文件内包含了应用所必需的系统组件及依赖,该镜像文件可以被用户复用。

镜像文件被执行后会在一个被隔离的环境中运行,不会共享宿主机的CPU、内存等资源,保证了容器内的进程不能监视外部进程。

对外部而言,容器则类似一个沙盒模型。

(容器架构图)


/ 容器和虚拟机有什么区别?/

一般来说,虚拟机需要虚拟出一套完整的硬件环境及操作系统,磁盘容量占用较大,从几GB到上百GB不等,启动速度相对较慢,一般需要几分钟的时间。

容器作为一种轻量化的虚拟化方案,一般仅占用几MB的磁盘空间,性能方面也较出色,启动速度较快,一般只需要几秒钟时间。

K8S基础 | 容器

(虚拟机和容器的区别


/ 容器解决了什么问题?/

容器解决了开发人员在开发和实际生产中,因为环境不一致,而导致故障几率高的问题。

例如:

开发者在Windows系统中编写应用代码,但是实际生产环境却是Linux系统。

当开发和生产环境不一致时,在迁移到完成部署的过程中,系统的兼容性问题会导致故障几率提升,进而导致应用的某些功能故障。

如果用户将应用系统及依赖等环境部署在容器中,应用的迁移就变得非常容易。

容器的初衷就是将各种应用程序和他们的依赖环境打包成镜像,进而发布到不同的平台运行。

在应用容器技术之后,部署人员面对的不再是具体的应用系统,不用再关心如何为应用系统准备运行环境以及依赖组件,只需要将镜像进行下载和部署即可。

(开发-部署流程


/ 容器的优缺点有哪些?/

容器是在传统虚拟化的基础上发展而来,因此容器和传统虚拟化的优点有共通之处,还克服了传统虚拟化技术的部分缺点。


优点:

敏捷度高;提高生产力;版本控制;

运行环境可移植;标准化;安全;

  • 容器技术最大的优点就是创建容器实例快,部署应用可以按分钟甚至秒级来计算。

  • 每个容器都可以看作是一个不同的微服务,它们可以独自进行升级而不相互干扰。

  • 每个容器的镜像都有版本控制,用户可以对容器的不同版本进行跟踪,监控版本之间的差异。

  • 容器中封装了应用程序所必需的相关依赖及操作系统,让应用的环境移植变得更加灵活。

  • 容器之间的进程是相互独立的,这样其中一个容器的升级或者变化不会影响其他容器。

缺点:

复杂性增加;需要原生Linux的支持

  • 当容器和应用数量增加的同时,也伴随着复杂性的增加。在生产环境中管理大量容器是一个具有挑战性的任务。

  • 大多数容器技术,例如docker,是基于Linux容器技术实现的,相比在原生Linux中运行容器或者在Windows环境中运行容器略显笨拙,并且日常使用也有一定的复杂性。


/ 容器的种类有哪些?/

操作系统容器:

操作系统容器是操作系统层的虚拟化,这种虚拟化将操作系统的内核进行虚拟化,可以允许多个独立用户空间存在。

在同一个物理机中容器共享宿主机的内核,同时提供了相互隔离的用户空间,不同用户可以像在宿主机操作系统上一样,在容器中安装、配置及运行应用程序,并且容器内的资源仅容器实例自身可见。

应用容器:

应用容器是指应用程序的虚拟化,也就是从其所执行的底层操作系统封装计算机程序的软件技术。作为一个完全虚拟化的应用,尽管仍像原来一样执行,但是不会进行传统意义上的安装。

应用程序在运行时的行为,就像它直接与原始操作系统以及操作系统所管理的所有资源进行交互一样,同时可以实现不同程度的隔离或者“沙箱化”。

在这种情况下,虚拟化是指被封装的应用程序。

(操作系统容器和应用容器的区别

应用容器旨在作为单个进程进行打包和运行服务。

而在操作系统容器中,可以运行多个服务和进程。





写在最后


Q:为什么你要做这个东西?

A:在校学习期间操作过容器、Docker、K8S等工具,但也只是能够使用,对原理知识等基础概念并不清楚,现在进行完整的知识梳理并做个人笔记。学习书籍有:《从Docker到Kubernetes入门与实战》 、《Kubernetes进阶实战(第二版)》。

Q:怎么感觉你的东西有点跳跃?

A:目前还是做大概的知识框架,先构建框架,再填充内容。

Q:排版能不能好看点?

A:后续会慢慢改进,文里的附图会尽量自己绘制,也会借用网络中做的好的一些图(说白了就是懒)

A:欢迎到后台留言纠错指正。



以上是关于K8S基础 | 容器的主要内容,如果未能解决你的问题,请参考以下文章

容器技术Docker K8s 15 容器服务ACK基础与进阶-容器网络管理

容器技术Docker K8s 14 容器服务ACK基础与进阶-容器网络管理

容器技术Docker K8s 19 容器服务ACK基础与进阶-容器网络管理

容器技术Docker K8s 18 容器服务ACK基础与进阶-容器网络管理

容器技术Docker K8s 17 容器服务ACK基础与进阶-容器网络管理

容器技术Docker K8s 19 容器服务ACK基础与进阶-容器网络管理