容器技术之Dockerk8s知识笔记

本文带你快速了解Kubernetes与Docker

让你对容器与虚拟机的区别、Docker与k8s有一个快速的了解

 

目录

  • 演变史
  • 容器与虚拟机的区别
  • K8S与Docker概念
  • Docker
  • K8S

演变史

传统部署时代: 早期,将单一的应用服务运行在物理服务器上,无法给服务器的应用程序进行资源的限制,导致物理服务器之间的资源负载使用不均衡,就导致了服务器上的应用程序的性能下降,物理服务器的维护成本变得很高。

虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机VM。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。

容器部署时代: 容器类似于 VM,但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统OS。因此,容器被认为是目前最轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和 OS 分发进行移植。

 

容器与虚拟机的区别

容器技术为什么会这么火爆?说白了,就是因为它“轻”。

在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWareOpenStack

相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。而容器,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境。类似于“沙箱”。

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

下表中列举了容器与虚拟机之间的区别:

 

K8S与Docker概念

Docker

Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。一句话总结就是,从仓库中拉取镜像,利用镜像生成容器。

Docker技术的三大核心概念,分别是:镜像(Image)、容器(Container)、仓库(Repository)。相关概念解释如下:

  • 宿主机,Host,运行Docker所在的物理机,是Docker运行的系统环境。
  • 镜像,Image,相当于一个程序模板,通过这个模板可以生成很多个相似的容器。可以理解为Java中的类,它本身不具备执行运行的能力,是一个对象抽象的模板。每个镜像可以有多个版本,用tag来区分。镜像可以通过Dockerfile来构建。
  • 容器,Container,Docker运行的最小单位对象。它是通过镜像实例化出来的一个可运行对象。容器的修改,可以提交反作用于镜像,更新这个容器的模板。
  • 仓库,Repository,用于存储管理镜像的仓库,类似于git管理代码的仓库一样,可以管理多版本的镜像。

镜像、容器和仓库三者的关系如下:

K8S

就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。

就在这个时候,K8S出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

一个K8S系统,通常称为一个K8S集群(Cluster)。这个集群主要包括两个部分:一个Master节点(主节点),一群Node节点(计算节点)。Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

image

概括来说 K8s 架构就是一个 Master 对应一群 Node 节点。下面我们来逐一介绍 K8s 架构图中的 Master 和 Node。

  • Master 节点结构如下:
    • apiserver 即 K8s 网关,所有的指令请求都必须要经过 apiserver。
    • Scheduler 调度器,使用调度算法,把请求资源调度到某一个 Node 节点。
    • Controller 控制器,维护 K8s 资源对象。
    • etcd 存储资源对象。
  • Node 节点结构如下:
    • Kubelet 在每一个 Node 节点都存在一份,在 Node 节点上的资源操作指令由 Kubelet 来执行。
    • Kube-proxy 代理服务,处理服务间负载均衡。
    • Pod 是 K8s 管理的基本单元(最小单元),Pod 内部是容器,K8s 不直接管理容器,而是管理 Pod。
    • Docker 运行容器的基础环境,容器引擎。
    • Fluentd 日志收集服务。

 

参考文章:

  • 10分钟看懂Docker和K8S
  • 对Docker了解多少?10分钟带你从入门操作到实战上手
  • 终于有人把 Docker 讲清楚了,万字详解!
  • Docker不香吗,为啥还要K8s?

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

容器技术之kubectl常用命令

kubectl用于运行Kubernetes集群命令的管理工具。本文概述涵盖了kubectl语法,对命令操作的描述,并列举了常用命令。 Kubectl命令详细列表请查看:Kubernetes kubectl 命令表 语法 $ kubectl [command] [TYPE] [NAME] [flags] command&#x…

Container.ItemIndex 获取reapeater行号

<div class"<%# (Container.ItemIndex)4?"class3":"class4"%>"></div>取到第五行的行号&#xff0c;用一个三元运算符来判断div的样式。 图中container.itemindex(container.ItemIndex-5)是不对的&#xff0c;最上面的代码才…

容器技术之快速了解K8S各抽象资源及组件架构

带你快速了解Kubernetes主要概念和组件架构。 Kubernetes的组件和架构比较多&#xff0c;功能也比较多。 如果详细探讨&#xff0c;每个Kubernetes组件都可以单独写篇博客详细讲解。 我们这里是快速了解&#xff0c;就写的相对比较简单一些。 主要是针对不熟悉Kubernetes的…

《活法》中一个故事--令托尔斯泰也折服的人性寓言

某个深秋的日子里&#xff0c;在枯树残枝任萧瑟秋风吹袭的景色中&#xff0c;有位旅人正在赶路回家&#xff0c;突然间&#xff0c;他发现脚边有一堆白白的东西&#xff0c;定睛一看&#xff0c;竟然是人骨。这种地方怎么会有人骨头?他觉得浑身不对劲却又想不透&#xff0c;可…

Python可视化神器之pyecharts

目录 概述安装参数实例 柱状图-Bar饼图-Pie折线图-Line散点图-scatter3D 柱状图-Bar3D仪表盘-Gauge雷达图-Radar词云图-WordCloud地理坐标系-Geo地图-Map概述 Pyecharts是一款将python与echarts结合的强大的数据可视化工具。使用 pyecharts 可以生成独立的网页&#xff0c;也…

我就不文明了

不是 我就的 我咋就这么笨呢 妈了个逼的 本来就没有基础 本来就英文不好 本来就找不到入门的方向 怎们所有人 都在打击我 怎么所有人 都说我不可能成功 我他吗的就不信了 我就学 我就盲目的寻找 我就不信 我实现不了自己的梦转载于:https://blog.51cto.com/100000372/422302

计算机基础之IP地址、子网掩码、网络号、主机号、主机数、网络地址、广播地址

相关概念&#xff1a;IP地址、子网掩码、网络号、主机号、主机数、网络地址、广播地址 IP地址&#xff1a;由4字节/32位表示&#xff0c;通常用点分十进制表示法&#xff0c;例如192.168.1.1&#xff0c;对应的二进制就是11000000 10101000 00000001 00000001 IP地址通常有下…

Qt 4.7.1 和 Mobility 1.1.0 已发布

Qt 的升级版本 Qt 4.7.1 以及 Qt Mobility 1.1.0 最终版本已于今日发布。现二者均可下载。 Qt 4.7.1 Qt 4.7.1是一个修补版本&#xff0c;解决了在 Qt 4.7.0 中出现的一些小问题&#xff0c;同时引入了 OpenGL 对 Symbian 的支持。 要下载此版本&#xff0c;请访问 http://get.…

寄存器(内存访问)07 - 零基础入门学习汇编语言19

第三章&#xff1a;寄存器&#xff08;内存访问&#xff09;07 让编程改变世界 Change the world by program 栈段 前面讲过&#xff0c;对于8086PC机&#xff0c;在编程时&#xff0c;我们可以根据需要 &#xff0c;将一组内存单元定义为一个段。 我们可以将长度为 N&…

大型网站架构设计系列总结

大型网站架构设计系列-我的总结如下&#xff1a; 1、 数据结构和产品架构设计&#xff0c;这是基础&#xff01; 2、 角色分开&#xff0c;各司其职&#xff08;web服务器&#xff0c;缓存服务器&#xff0c;负载平衡&#xff0c;数据库等&#xff09; 3、 HTML静态化&#xff…

Linux里Web应用上的截图软件——Shutter

Linux的发行版里——Ubuntu与Fedora自带的截图软件都是“gnome-screenshot”&#xff0c;这款软件小巧实用&#xff0c;不过就是截出来的图都是PNG图片&#xff0c;质量过高&#xff0c;而我截图发布在网上对图片的质量要求并不高&#xff0c;反而希望质量一般就行&#xff0c;…

腾讯的强大不是偶然,小马哥很强大

为什么80%的码农都做不了架构师&#xff1f;>>> 其实自己对于腾讯没什么好感&#xff0c;不过也没有太多的坏感&#xff0c;之前还有一篇日志&#xff0c;小批评了一下腾讯&#xff0c;今天看到小马哥写给内部员工的反思邮件。记录下两点提醒自己&#xff1a;对待敌…

计算机三级网络技术第一道大题 网络地址 主机号 直接广播地址 网络技术

加粗样式#计算机三级网络技术 ##网络地址&#xff0c;直接广播地址&#xff0c;主机号&#xff0c;子网中第一个可以IP地址&#xff0c;子网中最后一个可用IP地址 这是我在备考计算机三级网络技术中&#xff0c;写的几个例题&#xff0c;有哪里错的&#xff0c;还请大佬们帮忙纠…

开发人员应该用好的一些网站

文章分类:综合技术 我们在开发项目的时候&#xff0c;大多数模块都是逐字逐句敲打出来的&#xff0c;然而随着开源的蓬勃发展&#xff0c;涌现出了好多优秀的开源项目&#xff0c;这些项目不仅能加快开发应用&#xff0c;而且能给我们的开发带来灵感。如果开发人员能灵活应用好…

SQL Server2008 附加数据库时出错

开机后附加数据库失败&#xff1a; 1.正常操作附加数据库。 右键单击sqlserver中的数据库&#xff0c;选择【附加】左击【添加】,选择文件路径,左击【确定】&#xff0c;之后弹出“附加数据库时出错”&#xff1a;确定&#xff0c;继续下一步进而查看原因&#xff0c;如图&…

fread 和 read的区别

f是ANSI的C标准库。而后者的是UNIX下的系统调用。 fread带有缓冲&#xff0c;是read的衍生&#xff0c;或者说fread是通过read实现的 要想直接和硬件打交道&#xff0c;必须用read fopen/fread是C标准的库函数&#xff0c;操作的对象是&#xff1a; file stream open/read是和…

有三个数a,b,c,要求按大小顺序输出。

有三个数a,b,c,要求按大小顺序输出。 #include <stdio.h> int main() {int a,b,c,;scanf("%d %d %d",&a,&b,&c);if(a<b){ta,ab,bt;}if(a<c){ta,ac,ct;}if(b<c){tb,bc,ct;}if(a<b){ta,ab,bt;}printf("%d %d %d\n",a,b,c);re…

rails online api

http://railsapi.com/doc/rails-v3.0.1/

求1+2+3+……+100的累加和。

利用三种循环语句求123……100的累加和。 方法一&#xff1a;whlie #include<stdio.h> int main() { int i1,sum0; while(i<100){sumsumi;i;}printf("sum%d\n",sum);return 0;}方法二&#xff1a;do…whlie #include<stdio.h> int main() { int i1,…

j2me 学习资料

为什么80%的码农都做不了架构师&#xff1f;>>> 1:J2ME移动应用开发实战视频教程 http://www.pconline.com.cn/pcedu/videoedu/asp/0809/1425959.html 转载于:https://my.oschina.net/sunyh/blog/10534