大型网站技术学习-3. 容器Docker与kubernetes

news/2024/5/14 15:58:03/文章来源:https://blog.csdn.net/weixin_33860528/article/details/93774711

大型网站技术基石篇-容器Docker与kubernetes

 

 

Docker和Kubernetes的关系就如Xen与OpenStack。
Docker是一种容器技术,和Hypervisor(KVM/Xen这类)不同的是,Docker不会提供一整个操作系统,他能提供隔离的程序运行环境。对一个应用来说这已经够了。
Kubernetes是Google的一个开源容器管理项目,他能利用Docker/其他技术部署/管理容器集群。



  Docker
        
项目地址:https://www.docker.com/

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,与KVM这类超级底层虚拟化方案相比,Docker是一种轻量级虚拟化方案,他不需要对内核进行改变,他主要利用linux内核特性实现虚拟化,所有容器运行在同一个内核中。另外,docker还可以部署在KVM/XEN这类虚拟机中!  容器与虚拟机对比如下图。

clipboard

Docker的架构

Docker使用客户端-服务器(client-server)架构模式。Docker客户端会与Docker守护进程进行通信。Docker守护 进程会处理复杂繁重的任务,例如建立、运行、发布你的Docker容器。Docker客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker客户端去连接一个远程的Docker守护进程。Docker客户端和守护进程之间通过socket或者RESTful API进行通信。

clipboard[1]

Docker重要概念

镜像(Image)

Docker镜像是一个只读的模板。举个例子,一个镜像可以包含一个运行在Apache上的Web应用和其使用的Ubuntu操作系统。镜像是用来创建容器的。Docker提供了简单的,你也可以下载别人已经创建好的镜像。

仓库(Image)

Docker仓库用来保存镜像。其相当于一个代码仓库,同样的,Docker仓库也有公有和私有的概念。公有的Docker仓库名字是Docker Hub。也可以自己创建仓库。

容器(Container)

一个Docker容器包含了某个应用运行所有的所需要的环境。每一个Docker容器都是从Docker镜像创建 的。Docker容器可以运行、开始、停止、移动和删除、保存为镜像。每一个Docker容器都是独立和安全的应用平台。

Docker内部采用Linux的命名空间机制实现隔离性,采用cgroup实现资源的划分(例如给容器划分2G内存、0.5个cpu)。

 

隔离-命名空间介绍

 

命名空间是为操作系统层面的虚拟化机制提供支撑,目前实现的有六种不同的命名空间,分别为mount命名空间、UTS命名空间、IPC命名空间、用户命名空间、PID命名空间、网络命名空间。命名空间简单来说提供的是对全局资源的一种抽象,将资源放到不同的容器中(不同的命名空间),各容器彼此隔离。命名空间有的还有层次关系,如PID命名空间,图 为命名空间的层次关系图。可以简单理解为像C++,java那样的命名空间。

clipboard[2]

资源划分-cgroup介绍

    

 cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。 cgroup能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。Cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。

子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源。

 

Docker示例

 

在安装docker之后,运行其守护进程,然后就可以使用docker创建运行容器。安装docker可以百度一下。
运行docker命令,显示信息就表示安装成功。最好内核是3.8以后的。
clipboard[3]

1. 采用docker pull命令从公共库中拉取(下载)一个镜像到我的电脑上。

clipboard[4]

2. 采用docker run命令,可以指定一个镜像作为基础运行容器。 我这里指定了ubuntu镜像,因为我电脑中没有ubuntu镜像,他会自动从公共仓库下载ubuntu的镜像。仔细瞧的话,可以看出我进入了该容器的bash程序。

clipboard[5]

3. 输入docker images,可以查看主机上存储的镜像。

 clipboard[6]
Docker也提供了很多方便的命令对镜像进行操作。

  kubernetes
         

项目主页:http://kubernetes.io/
docker仅能在单机上部署容器,而kubernetes可以统一管理各类容器,形成集群。Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的开源版本。Kubernetes支持GCE、vShpere、CoreOS、Azure等平台,也可以直接运行在物理机上。
Kubernetes非常适合做微服务的架构。

其主要功能如下:

1) 用户不需要关心需要多少台机器,只需要关心软件(服务)运行所需的环境。以服务为中心,你需要关心的是api,如何把大服务拆分成小服务,如何使用api去整合它们。

2) 以集群的方式运行管理容器。

3) 解决Docker跨机器容器之间的通讯问题。

4) Kubernetes的Pods自我修复机制使得容器集群总是运行在用户指定的状态。

Kubernetes有几个重要的概念:


1. Pod

Kubernetes的容器管理的最小单位不是容器,貌似说的很别扭。 就是容器并不是Kubernetes管理的最小单元,而是Pods,

一个Pod包含一个或者多个容器。例如一个小程序有数据库和后台程序,可以分别放到一个容器里面,这两个容器组成一个Pods。

Pod的YAML 描述方式:

运行如下命令就会创建Pod:
kubectl create -f ./hello-world.yaml
运行如下命令就会查看Pod状态:
$ kubectl get pods

 

2. minion/node

 

minion和node的意思是一样的,是一个主机节点的意思。例如一个虚拟机、一个物理主机。注意,一个Pod不会跨越node。就是即使一个Pod有多个容器,里面的容器会同时存在在同一个Node中,不会分别在不同的Node中。 Kubernetes的调度器会根据Pod的资源需求定义来将Pod分配到不同的Node中(如今支持定义CPU需求、内存需求)。Kubernetes的master/slave程序运行在node里面。


3. Replication Controller

 

Replication 是复制的意思,用来解决Pod的线性扩容缩容问题,Replication Controller可以创建一个pod的多个副本,并且可以保证集群中该Pod的副本数量保持平衡。例如副本数量规定为10,如果某个pod挂了,数量变为9,那么Replication Controller会自动创建一个Pod,恢复到10个副本的水平。 多个副本可以在不同的Node中。

Replication Controller的YAML  描述方式:


 

replicas表示副本的数量
template是对Pod的描述。ReplicationController根据template创建多个Pod(数量=replicas),标签为app: nginx。
运行如下命令就会创建Replication Controller:
kubectl create -f ./nginx-rc.yaml

 

4. Service

 

Service用来解决Pod的服务发现问题,因为Pod的运行状态可以动态变化(机器切换、宕机),所以访问端最好不要直接去访问某个Pod,而是通过service,service能够将请求进行转发。

服务的YAML描述如下:

该定义创建了一个服务,会将标签为app:nginx(selector选的)的Pod纳入服务中,也就是说该服务接收到的请求会转发给标签为app: nginx的Pod处理。注意:service是负载均衡的,会自动分配请求给不同的Pod。有没有觉得很方便?把Serivce暴露给客户端,客户端只需要请求service,不需要知道后台是个集群。

运行如下命令就会创建Service:


kubectl create -f ./nginx-rc.yaml

 

5. Label

 

标签,用来做逻辑上的标记。用来关联service、replication controller和pod.

 

 

 

Kubernetes架构

下图为官方的架构图。

architecture

 

 

从图中看出,Kubernetes的架构是典型的master/Slave架构。

Master负责总体的协调控制,Slave负责具体的任务。Master/Slave的组件如下:

 

clipboard[10]

 

 

盗个图,下图能更清晰的展示Kubernates

 

clipboard[11]

 

 

持续更新~~~

转载请注明出处:http://www.cnblogs.com/stonehat/p/5148455.html

转载于:https://www.cnblogs.com/stonehat/p/5148455.html

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

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

相关文章

程序员去交友网站找女友,没想到找到了这个...

1024程序员节,CSDN旗下的码书商店为程序员放个“价”,全场所有书籍8折,电子产品可以拥有大额优惠券,购买前可加文末客服微信领取优惠券哦,不仅如此,可以参加免单活动,加文末微信入群抽奖&#x…

织梦同步静态文件到服务器,静态网站添加到织梦

静态网站添加到织梦 内容精选换一换本文介绍了弹性文件服务SFS各特性版本的功能发布和对应的文档动态,新特性将在各个区域(Region)陆续发布,欢迎体验。开启网页防篡改时,您需为指定的主机分配一个配额,关闭企业主机安全服务或删除…

网站开发流程以及HTML5简介(三)

2019独角兽企业重金招聘Python工程师标准>>> 二、网页的基本结构 网页是由什么组成的: > 内容:如文字,图像等,一般由HTML代码负责实现。什么是HTML?HTML是一种能展示图片,文字,多…

很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天做个demo(续集)...

有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用。(浏览器自带的扫描就够了,QQ扫码和微信扫码部分手机不能直接连接wifi) 在看之前你可以扫一扫下面几个二维码先看看效果: …

python 比价_爬虫+网站开发实例:电影票比价网

注:一篇去年的旧文,发现没在知乎发过,过来补个档。有个小问题是项目中淘票票的网页反爬提升且变动较多,目前暂不可用了。时常有同学会问我类似的问题:我已经学完了 Python 基础,也照着例子写过一点爬虫代码…

SEO快速排名算法独家揭秘

在2015年11月份的时候在卢松松博客投递了一份关于SEO快速排名独家揭秘的算法流程,时过境迁已经过去了大半年,随之而来的也是搜索引擎的点击算法也发生了一些变化,这次我将完善以前的一份算法资料。下面我将提供完整的SEO快速排名点击算法流程…

大型网站架构系列:缓存在分布式系统中的应用(一)

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 本文是缓存在分布式应用第一篇文章,介绍缓存的原理,缓存的分类,缓存的设计,C…

怎样使用CSS3媒体查询(Media Queries)制作响应式网站

自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项。 Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,…

squid正反向代理-加快网站访问速度

配置squid代理服务器加快网站访问速度一:squid服务概述Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服…

名称:53KF网站客服系统 v3.0.1官方版

2019独角兽企业重金招聘Python工程师标准>>> 名称:53KF网站客服系统 v3.0.1官方版 版本:3.0.1 软件大小:107 KB 软件语言:简体中文 软件授权:免费版 应用平台:Win7/Win2003/Vista/Win2000/WinXP…

《网站设计 开发 维护 推广 从入门到精通》——2.3 页面设计创意思维

本节书摘来自异步社区《网站设计 开发 维护 推广 从入门到精通》一书中的第2章,第2.3节,作者: 何新起 , 娄彦杰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 页面设计创意思维 一个网站如果想确立自己的形象,就必须…

【全栈项目上线(vue+node+mongodb)】04. 怎么在一台主机上面部署多个网站,详细操作指南...

怎么在一台主机上面部署多个网站 使用Nginx的虚拟化配置 环境 使用一键安装lnmp环境请参考 https://segmentfault.com/a/11... 第一步:执行 lnmp vhost add lnmp vhost add 输入自己要绑定的域名,比如我现在需要绑定 itnote.cn 我在这个地方输入&#xf…

java门户网站项目代码_基于jsp的企业门户网站-JavaEE实现企业门户网站 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的企业门户网站, 该项目可用各类java课程设计大作业中, 企业门户网站的系统架构分为前后台两部分, 最终实现在线上进行企业门户网站各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类企业门户网站相关的实体…

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(《后台管理UI的选择》)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间,最后界面效果还是不佳&#xf…

谈谈读“SEO实战密码”的一些感悟

写在前面:SEO是叱咤网络营销、线上营销十多年的工具之一,当前不管是搜索引擎平台、电子商务平台、任何线上平台,都还在参考引用和不断完善SEO这门营销艺术。作为一新兴而又颇受争议的网络营销工具,从发展、进阶、火热、低迷的这一…

专家也要小心,HTTPS网址的网站就一定安全吗?

随着越来越多网站使用 SSL以提升在 Google搜寻中的排名(请参考安全牛之前的报道”谷歌调整搜索排名算法,激励网站采用HTTPS安全协议“),使用者将必须了解到 HTTPS 前缀不再是他们判断网站是否安全的识别标志。他们必须在输入认证数…

15 -Flask构建弹幕微电影网站-基于角色的访问控制

本章内容: 基于角色的访问控制 已上线演示地址: http://movie.mtianyan.cn 项目源码地址:https://github.com/mtianyan/movie_project 基于角色的访问控制 角色的访问控制: 将职责和功能划分一个角色,比如电影管理员,预告管理员。 模型: Auth…

菜鸟站长应该如何防止网站被恶意攻击

随着互联网的发展,很多人都已经有了自己的网站。无论是企业,商家还是个人。以前,做一个网站都得在上千上万元。如今,网站建设的的价格也不再那么贵了,几百块钱就可以做一个网站。而且,这些几百块钱的网络公…

漫画:为什么一到年底,部分网站就会出现日期混乱?

作者 | 漫话编程本文经授权转载自漫话编程(ID:mhcoding)2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。于是我拿过他的…

百度或者Google---SEO优化

google和百度的技术差别: 1.百度还认不清哪个是原创的 2.google蜘蛛不够百度快 4.google排名结果随时变化 流量、权重、权威、内容、用户体验、用户关注度等等细节的排名,已表达了SEO的算法。 重要搜索引擎的网站登录入口地址: http://www.webmasterhome.cn/seo/add…