一分钟明白 DockerDocker - Compose K8s Pod 之间的区别!
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一分钟明白 DockerDocker - Compose K8s Pod 之间的区别!相关的知识,希望对你有一定的参考价值。
容器化基本技术名词浅释
关于云原生架构的部署技术,有 Docker、Docker - Compose、K8s 、Pod 等等很多名词,这里做简单的讲解,给大家区分之间的不同和各自相对应用场景。
资源利用率十分低效!
在传软件部署阶段,往往是一个应用对应一个服务器,资源利用率严重不足;后来随着虚拟机技术的出现,可将服务器虚拟化为多个服务器进行应用部署,资源利用率同样不高;随着容器化技术的兴起,资源利用率得到解放,出现了大幅度的提升。
容器技术兴起
容器化技术使软件交付速度更快的同时,机器资源得到充分利用。
容器化技术主要利用 Linux 中的 namespace 和 cgroups 技术实现的系统进程,namespace 将提供进程独立的运行环境,与其他进程进行隔离,互补可见且互补影响。
准确的讲,上面的描述有些许漏洞,因为一个进程是可以享用系统的全部资源的,所以会挤占系统其他的进程可用资源。为了防止进程资源层次的相互影响,Linux 对进程占用资源做了限制,即 cgroups 特性。
Docker
Docker 是容器化技术其中颇受欢迎的一个产品,通过 Docker 可进行镜像的制作,容器的执行。
Docker- Compose
Docker-Compose 是一款容器编排工具,针对需要同时启用多个容器进行规则化的编排、执行等操作。避免繁杂重复的容器构建服务行为,作用范围一般为单节点。
K8s Pod
K8s 是一款容器集群管理和编排调度平台,管理在多个主机上运行的容器,并执行扩展,在发生崩溃时启动新容器,将容器联网等操作。Pod 是其最小的调度单位。Pod 为多个容器共同支撑一个应用的场景提供了解决方案。
现在大型应用服务中,总是会有各种各样的依赖,依赖一些组件,依赖一些工具,依赖一些网络服务等等,一个进程组有很多的进程互相帮助来最终实现功能。
使用 Pod 官方设计理念中的描述,即:
比如你运行一个操作系统发行版的软件仓库,一个nginx容器用来发布软件,另一个容器专门用来从源仓库做同步,这两个容器的镜像不太可能是一个团队开发的,但是他们一块儿工作才能提供一个微服务;这种情况下,不同的团队各自开发构建自己的容器镜像,在部署的时候组合成一个微服务对外提供服务。
在一个pod中的容器,他们可以拥有同一个目录,甚至可以拥有同一个网络,可以拥有相互的服务,共同支撑应用对外服务。
Pod 中的多个容器可以共享命名空间,包括:
- PID 命名空间(同一个Pod中应用可以看到其它进程)
- 网络 命名空间(同一个Pod的中的应用对相同的IP地址和端口有权限)
- IPC 命名空间(同一个Pod中的应用可以通过VPC或者POSIX进行通信)
- UTS 命名空间(同一个Pod中的应用共享一个主机名称)
这样的共享功能,可实现容器间的通信。
当前 Pod 还有其他功能,比如:健康检查、限制网络带宽、RestartPoliy …
在未来的容器部署中,Pod 是必不可少的一部分!
Q&A
1、cgroup 中限制的资源都有哪些?
含 CPU、内存、阻塞I/O、网络I/O;CPU 分配一般以千分之一核为单位,内存以字节为单位。
2、K8s 具体是用来做什么呢?平时接触不到…
可关注后续文章,本文不做重点!
附录
控制欲太强,会限制团队积极性。决定权下放,团队增益才会日益趋增。
欢迎加入Q群聊【编程技术交流分享群717647116】,微信群请私信博主添加
以上是关于一分钟明白 DockerDocker - Compose K8s Pod 之间的区别!的主要内容,如果未能解决你的问题,请参考以下文章