kubernetes(k8s)

应用部署演进过程

在这里插入图片描述
我们从上图可以看到,应用越来越看重应用本身了,慢慢的不受物理机的差异,不受操作系统的差异,开发者可以花更多精力去到应用本身。

k8s概念

简单理解,k8s就是传统的云平台上的linux。

kubernetes是一个以Google Borg(google内部容器管理平台)为原型,重新设计和实现的容器管理和调度编排工具。
2014年由谷歌开源。
同样功能的工具还有docker公司的Swarm和apache的Mesos,但目前kubernetes好像笑到了最后。

容器编排管理平台

k8s可以以容器组pod为基本编排和调度单位
k8s提供资源分配管理功能
k8s提供健康检查,伸缩,滚动升级功能
k8s提供声明式的对象配置模型

微服务架构平台

k8s提供服务发现与内部路由
k8s提供对服务的快速部署和自动的负载均衡

可移植云平台

k8s被各大云厂商承认并支持,在各个云平台之上,又搞了一层通用平台,即可实现跨云移植

k8s架构

在这里插入图片描述
k8s集群是由一群节点(node)组成,这些节点可能部署在物理服务器或云服务器上。
每个节点都安装了node组件,node组件是真正运行负载的组件
另外有个特殊节点上安装了master组件,那这个节点也就是master节点

master组件

集群的控制中心,每个集群至少一个master组件,
高可用就多个master节点装多个master组件

master组件包含:apiserver,etcd数据库,controller manager,scheduler
apiserver是master组件的核心,提供各种api接口,是整个集群的唯一入口,其他master组件都通过调用api接口实现各自的功能
scheduler通过apiserver接口监听新建pod副本信息,通过调度算法为该pod选择一个最合适的node节点,调度算法包括先预选出一批预选节点,再优选处一个积分最高的节点,调度算法也可自定义配置
controller manager是集群内各种controller资源的核心管理者,controller资源有集群内的node,pod副本,服务端点,命名空间,服务账号,资源配额等。当某个node宕机时,controller manager就会及时发现并执行修复流程,保证集群始终可用。
etcd数据库是一个高效的k-v数据库,存储着集群中所有的对象和状态。一般和master组件安装在同一个node上,高可用模式需要部署数据量集群

node组件

通过code controller可以动态的在集群中添加或删除node资源
node组件包含:kubelet,kube-proxy
kubelet组件是node中唯一一个以非容器形式进程组件,节点启动就被自动拉起,常驻节点中,也称节点管家,管理节点使用状况,定期向master汇报,是master node和worker node连接的桥梁。
kube-proxy组件就是个代理,主要是负责将到达的请求负载均衡的转发到后端的多个pod实例上。
一个node组件管着一批pod在执行任务

pod

pod是集群的调度基本单元。
是一个有特定关系的容器的集合。
一个pod就代表集群中的一个进程。
pod一般不由用户创建,pod的ip也是不稳定的。

kubectl工具

最左边的kubectl是一个k8s的命令行工具,用户使用命令行的方式与集群交互

k8s概念

k8s对象:

一种持久化用于表示集群状态的实体,一般使用yaml文件描述对象,对象信息包括有哪些容器在运行,运行在哪个node上,有哪些可用资源,应用的各种策略(重启策略,容错策略等)。
所有k8s对象状态的集合,就是整个k8s集群的状态。
通过kubectl工具或者api可以直接管理k8s对象。

可以类比java中的对象的概念,k8s对象,也有属性,方法,另外还有状态信息

class k8s{// 对象的类型,包括Pod,Service,Deployment等Kind kind;//对象的元数据,包括name,namespace,labels,annotationsMetadata metadata;//对象的规格信息,比如replicas(表示副本信息),selector(标签匹配)等Spec spec;//增删改查等方法public Return method(){...}//对象状态,保存在etcd数据库中Status status;
}
Name和UID

集群中的所有k8s对象,都是由name和UID明确标识。
不同类型对象的name可以是一样的。
UID是每个实例化的对象唯一一个,而且是整个集群的生命周期内唯一。
可以用api通过对象的name访问到该对象:
/api/{version}/namespaces/{namespace}/{kind}/name

namespace

namespace不仅仅是个属性,本身也是一个对象
作用是将物理集群划分为多个虚拟集群
namespace直接完全隔离,常用作隔离不同的用户权限
k8s集群内置3个namespace:default,kube-system,kube-public。

label

label标签是用于建立集群对象直接的灵活的,松耦合的多维关联关系。
本质上就是k-v键值对。
一个对象上可以有多个标签
不同类型的对象,可以通过相同的标签建立关联关系
作用:为了标识对象,选择出对象

annotations

annotations注解,可以将任意非标识性元数据附加到对象上
annotations本质也是k-v键值对
一般存对象的版本信息,时间戳等。

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

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

相关文章

jenkins+k8s实现持续集成

持续集成(CI) 集成是指开发人员将代码提交到git或svn 持续集成是指让开发人员持续提交代码,写一点就提交一点,这样就会更早的发现代码差异 每次集成,都可以通过自动化的构建来验证 自动化构建包括:编译&am…

为什么要用Elasticsearch

概念 Elasticsearch 简称ES,是一个分布式全文检索引擎。 比如github的代码检索就是用了ES,百度也有用ES。 由于Lucene的api相对比较复杂,所以ES其实是对Lucene的封装简化,并且提供了一套比较简单的api文档。 es官网 使用场景 主…

[设计模式] ------ 建造者模式(对比模板模式)

建造者模式 建造者模式,是为了构建一类具有相同执行顺序的但实现不一样,最后产生不一样的东西的效果。 举个例子,比如写作文。 每次写作文,我们大致有写标题,写开头,写内容,写结尾这些步骤。…

[设计模式] ------ 观察者模式和他的升级版发布订阅模式

概念 观察者模式,原理很简单,把A类的子类分别注入到B类中,通过用B类调用方法,循环调用A类的方法,就是所谓观察者模式 伪代码如下,最快的速度理解观察者模式: 接口 A{// 观察者接口notify(); …

[设计模式] ------ 工厂方法模式

工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品。 假设有一大类对象A1,A2,A3,A4…他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂… (下面例子的A1Factory就是手机厂,A2Factory就是肥皂厂&#x…

[设计模式] ------ 抽象工厂模式

抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了。 其实就是相当于将创建哪个工厂的权利再次放给调用端。 调用端在调用的时候,指定用哪个工厂…

[设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式

三个概念: 简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。 工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。 抽…

[设计模式] ------ 原型模式(浅拷贝和深拷贝)

原型模式 原型模式就是使用复制对象,创建出新的对象,并且不需要知道创建的细节(比如类的属性的赋值等等)。 基本使用(浅拷贝) 常见的就是使用Object的clone方法。需要让类实现Cloneable并重写clone方法&…

机器学习笔记(了解)

1、概念 机器学习,就是通过历史数据找出一定的规律,并使用这些规律对将来不确定的场景进行决策。 机器学习VS数据分析 数据分析,是人为的从历史交易数据中找规律,从而决策。 机器学习,是机器使用算法,从…

机器学习笔记(常见算法)

C4.5 属于决策树算法,既可以解决分类问题,也可以解决回归问题,属于有监督算法。 现在基本不用这个算法了。 K-Means 属于聚类算法,属于无监督算法 SVM(*) 支持向量机。 曾经一度认为是分类效果最好的算…

赶紧看一下mysql8.0版本的新特性,你的数据库是不是该升级了

这里写目录标题前言mysql8.0的新特性1、账户安全2、优化器索引2.1、隐藏索引(invisible)2.2、降序索引2.3、函数索引3、SQL语句增强4、新增数据分析函数5、InnoDB增强5.1、优化了一些元数据文件5.2、将系统表mysql和数据字典表,全部改为InnoD…

ThreadLocal不仅要应付面试,更要真的理解,真的会用

前言 记得我几年前第一次面试的时候,就是被问了这个,记得面试官直接就让我说说ThreadLocal的实现原理以及平时有没有见过哪些地方用到了。 我当时初入职场,还是一个大菜鸟,所以直接就被干蒙了,至今还记忆犹新。 闲来…

秒杀业务的基础点

秒杀的是一个很常见的业务了。就是在某个时刻,让大量用户抢购少量的优惠的商品,从而达到商品曝光和电商网站的曝光,增大用户流量,从而提升整体销售额。 比如今年疫情下,各大电商网站,就针对口罩开展了秒杀…

随想,产品思维和开发思维

有时候,产品思维和开发思维,由于出发点的不同,会产生较大的分歧。 作为一个开发,不仅要有自己的思维,也要了解产品的思维,这样才能在和产品的撕逼的战斗中所向披靡,百战百胜。 举个例子&#x…

Base64编码的原理与常用实现

这篇主要是为了后面好介绍加密算法,做的铺垫。 这个是基础,什么是一个程序员的涵养,这些基础就是涵养。 平时可能用不到,但必须得会。 如果连这个原理都说不上来,就别玩王者荣耀绝地求生英雄联盟和平精英了&#xff0c…

MD5算法原理与常用实现

目录定义MD5特点常见应用场景1、校验文件的完整性2、存储用户密码原理1、填补信息2、拿到初始值3、真正的计算MD5为什么不可逆java实现和使用定义 MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法 MD家族有MD2、MD3、MD4、MD5&#…

SHA算法原理与常用实现

看本文前,最好先看看之前的这一篇关于MD5算法的介绍。 MD5算法原理与常用实现 本文目录定义MD5和SHA-1的碰撞问题常见应用场景1、类似MD5的应用场景2、比特币3、https签名算法会用到SHA-256算法原理1、填补信息2、拿到初始值3、真正的计算java实现和使用定义 SHA算…

MAC算法原理与常用实现

看本文前,最好先看看之前的对于MD5算法和SHA算法的介绍。 本文目录定义常见应用场景1、linux客户端:SecureCRT2、Google身份验证器3、银联pos机终端原理java实现和使用定义 MAC(Message Authentication Codes),是一种…

对称加密算法原理与常用实现

目录定义常用对称加密算法DES3DESAESPEB常用对称加密算法的java实现DES实现3DES实现AES实现PEB实现定义 原文通过加密秘钥生成密文,密文通过解密秘钥得到原文。 对于加密秘钥和解密秘钥是相同的算法,就叫对称加密算法。 常用对称加密算法 DES Data E…

面试 HTTP ,99% 的面试官都爱问这些问题

HTTP 和 HTTPS 的区别HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范HTTP 主要内容分为三部分,超文本(Hypertext)、传输…