许久不见,甚是想念,小刘,好久没写博客啦,今天就来带大家理解一下 什么叫 在讲 Kubernetes之前,我们先来看下容器的概念 ,听小刘细细道来,在很早之前,也就是没有容器的时代,那个时代,大家都知道,我们跑项目通常使用 先从容器开始吧 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 再来看看容器较为通俗的解释: 如果需要通俗的描述容器的话,我觉得容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境。 以上讲的 只是其中一个点 再来看张对比图, 容器与虚拟机 (VM) 总结 所以现在的人一般喜欢讲 jar 打包成 镜像推送到 Docker 上去 、诸如此类 : 不懂的,去看下我们之前的博客 什么DockerFile 啦 DockeFile Docker-Compose 这是只是做个了解 ,还不了解的同志,自己去学习下,下面小刘,带大家继续讲,之前我们在虚拟机上部署项目 使用 Java -jar 的方式 基本docker run命令采用这种形式: 该docker run命令必须指定一个 IMAGE 以从中派生容器。图像开发人员可以定义与以下相关的图像默认值: 好处 坏处大家自己查, emmmm … 反正就是好 ,大家现在看看 对吧,当我们的容器运行多个 后就是这个样子 docker 图形页面管理工具常用的有三种,DockerUI ,Portainer ,Shipyard 。DockerUI 是 Portainer 的前身,这三个工具通过docker api来获取管理的资源信息。平时我们常常对着shell对着这些命令行客户端,审美会很疲劳,如果有漂亮的图形化界面可以直观查看docker资源信息,也是非常方便的。 其他的我就不再列举了,就是让docker看起来,很好看,运行起来更方面,比如我们只需要点击一个 按钮,就可以运行啦,是不是很好 这里在补充一个我自己常用的 Rancher ,这款图像话,相对来说更加的友好, Rancher官网 这里大家了解就好,主要是Rancher让 更加的方便,现在界面也有了 ,大家发现没有,还存在什么问题 哎 ,对了,同学们也能想到,容器有了,但是随着业务的增加,容器就会越来越多,到时候,容器就冗余了呀,所以 ,这时,容器的编排,就至关重要了 啥是编排呢 ? docker集群管理工具包括: 我们先看 Docker 自家的 也就是 怎么说吧,就是 多台机器 互相通信 还是理解不了的话,这里我们 以 大家学过 的 Eureka 举例,就是说呀,一台机器向另一台机器注册 以保证 , 我们还是主要来看 Kubernetes Kubernetes是google开源的多主机容器管理工具, 简称:k8s,它带有人性化图形管理界面, 它在开源社区很受欢迎github上已经有了20000+的,和7000+的fork。吹牛的话,我们看看就好,任何东西都没有完美的 ,下面来详细讲讲 K8S 这里我们拿一副图来举例,从上往下看 “容器”是一个用来存放您放入的所有物品的容器。 像应用程序代码,依赖库以及它的依赖关系一直到内核。这里的关键概念是隔离。将所有内容与其余内容隔离开,以便您更好地控制它们。容器提供三种隔离类型 · Workspace工作区隔离(进程,网络) · 资源隔离(CPU,内存) · 文件系统隔离(文件系统) 考虑一下像VM一样的容器。它们精简,快速(启动)且体积小。而且,所有这些都没有分离。取而代之的是,他们使用linux系统中存在的构造(例如cgroups,namespace名称空间)在其上构建了一个不错的抽象。 现在我们知道什么是容器了,很容易理解为什么它们很受欢迎。不仅可以发布应用程序二进制/代码,还可以以实用的方式交付运行应用程序所需的整个环境,因为可以将容器构建为非常小的单元。解决”在我的机器上工作”问题的完美解决方案,简单点说,就是 可以很小,并且能够实现虚机的所有功能,并且比虚机更加的强大 之前讲过,大家回忆一下,对了 问:如何使前端容器与新创建的后端容器对话?答:对IP进行硬编码。或者,使用容器协调器 问:如何进行滚动升级?答:在每个步骤中手动控制。或者,使用容器协调器 群集可以与单个主节点一起使用。但是最好拥有三个以实现高可用性(称为HA群集) 让我们仔细看一下主节点及其组成 API服务器:RESTful API服务器,公开端点以操作集群。主节点和工作节点中的几乎所有组件都与该服务器通信以执行其职责 调度程序Scheduler :负责决定哪个有效负载需要在哪台机器上运行 控制管理器Control Manager:这是一个控制循环,它监视群集的状态(通过调用API服务器来获取此数据)并采取措施将其置于预期状态 kube代理 kubeproxy:使用IP表/ IPVS处理Pod的网络需求 Pod:运行您所有容器的kubernetes的实体。如果没有Pod的抽象,就无法在kubernetes中运行容器。Pod定义了对容器之间的联网方式等至关重要的功能 学习的话,大家 自己 去 B站 ,看视频 ,或者 看书籍,小刘只是一个小小的测试,这里,就讲到这里,下面贴出参考文章链接 参考
缘起
Kubernetes
简称 K8S
,不用我说吧,仔细看就知道了,K 到 S ,中间隔了8个字母,所以才有了这个简称,任何时候我们想学一个东西必须要了解它到底是什么,这篇文章你要是看不懂,欢迎举报 ! 什么! 还看不懂容器的概念
java -jar
Jar包名 对吧 ,后面我们可能会加个参数叫做 nohup
也就是后台的意思,通常跑Linux服务器上,或者虚机上
完整写法nohup java -jar test.jar &
先来看看容器较为官方的解释
:
图解物理机、虚拟机与容器
关于虚拟机与容器的对比在后面会详细介绍到,这里只是通过网上的图片加深大家对于物理机、虚拟机与容器这三者的理解。
通过上面这三张抽象图,我们大概可以通过类比概括出: 容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。因此容器的隔离级别会稍低一些。
可能是还是没理解 ,就是说,我们 说我们 我们在 Linux 或者 虚拟机上 打 jar 包运 行的 话,那么 他们是相互不隔离的,假设,我们启动一个 jar ,如何后台运行,在服务器上,我们在运行一个 ,这次我们在停止第二个jar,有的时候会出现的情况就是,停止第二个 jar的时候,同时会影响到 第一个jar的运行,假设项目在运行,用户去访问,这时候,停止一个 ,还会影响另一个,就算 jar 包,没挂,那也影响了用户的体验
我们现在知道了,直接在 虚拟机里, 运行jar包是多么蠢的事情了吧,虚拟机不是隔离的,一个进程的停止可能会影响到其他进程,而Docker是隔离的,并且两者在效率上也有很大的差别
而如果使用Docker后就变成了
一般形式docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
可能你还是不理解,当我们从 jar包转换成 镜像后,我们可以使用 运行容器(docker) 的命令,也就是docker run
这里 举几个 常见的 参数
具体大家自己去官网看,这里不在强调
效果
容器和实际的软件没有任何区别,好,现在jar包已经变成容器了,现在 咱们看看容器的好处和坏处,
是不是非常难管理,一般单体架构,只需要运行一个容器,和 分布式架构则需要运行多个容器,所以当容器越来越多管理也变得麻烦了起来,我们来看看市面上常见的 Docker 图形化管理界面DockerUI
Shipyard
portainer
这里小刘,说几句,简单的话,概括一下,就是说呀,我们随着业务的发展,容器越来越多,有前端容器
,后端容器
,中间件容器
但是这些 容器 ,我们到底要运行几个,这就很难说,代码进行迭代,我们需要升级,容器,扩缩容,都成了问题 ,所以 这时候
市面上,一大堆的 容器编排工具,就如春笋一般的冒出来了,下面举例 :Kubernetes
、Mesos
,Rancher
,Swarm
,其中图形管理工具包含Kubernetes
、Mesos
,Rancher
。swarm暂时不提供web界面。Docker swarm
,这个大家暂时理解为 Docker 的集群,说多大家理解不了 ,啥! 集群你不懂
高可用
HA ,类似 还要 Nacos
,主要就是 一台 挂了之后,另外的一台能够稳定运行,保证程序的 稳定性 ,好,讲到这里,咱们继续 回到 Kubernetes
不做实操哦!
上面这个是容器容器一切都很好
,那么,为什么我们需要另一项技术,如Kubernetes这样的容器协调器呢?容器太多,不好管理
问:我的前端容器在哪里,我要在其中运行多少个容器?使用容器协调器
就像我们的乐高积木一样,它不仅具有大规模运行容器协调器所需的组件,而且还具有使用自定义组件交换不同组件的灵活性。你可以plugin一个自定义的调度程序。当需要一个新的资源类型,你可以编写一个CRD(Custom Resource Definition客户资源定义)。此外,社区非常活跃,并且工具发展迅速。上面这句话抄的
没看懂还是让小刘,来告诉你,首先
玩 K8s 必须要有三个 节点
每个Kubernetes集群都有两种类型的节点(机器)。主节点(Master)和工作节点(Worker)。顾名思义,Master是在运行有效负载(应用程序)的地方控制和监视群集。
etcd:数据库,用于存储有关kubernetes对象,其当前状态,访问信息和其他集群配置信息的所有数据
以卡通的方式了解Kubernetes
kubelet:是工作程序节点的心脏。它与主节点API服务器通信并运行为其节点安排的容器
其他的 概念,俺就不抄了,简单点说,你通过 那些图里的关键字 ,去更好的管理与协调容器,以解决我们多个容器的 造成的问题,而 Kubernetes ,就能很好的解决这些问题,就行
SpringCloud 这个 标准能 解决 ,微服务 、分布式架构 诞生的一系列,问题,而 Kubernetes 就成了协调 微服务的容器,的关键, 所有也就是Kubernetes 的重点所在
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算