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,一经查实,立即删除!

相关文章

为什么要用Elasticsearch

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

赶紧看一下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的实现原理以及平时有没有见过哪些地方用到了。 我当时初入职场,还是一个大菜鸟,所以直接就被干蒙了,至今还记忆犹新。 闲来…

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),是一种…

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

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

@JsonFormat失效解决

先说结论 JsonFormat失效,换成JSONField就好了 问题经过和原理 JsonFormat作为Date类型的属性值,返回前端格式化处理,很方便。 比如: JsonFormat(pattern "yyyy/MM/dd HH:mm:ss")private Date updateTime;返回给前端…

如何在摆摊经济中脱颖而出

最近,摆摊经济开始火了起来,于是各路诸侯纷纷举起大旗开始摆摊。我周围也不乏有亲朋好友蠢蠢欲动,有的甚至已经初有规模。但这波摆摊风是否真的可行,对谁可行,有哪些风口,有哪些坑,我们慢慢分析…

java 实现 生成短链接服务

java实现短链接转换服务 类似上图这种短信,对应的就是一个短链接。 看到原理也不难,于是先写个最简易版的玩玩,以后有需求了再补充吧 下面是一个简易版的短链接生成代码 搭个spring-boot服务,复制这两个controller,就…

[转载] --- Fastjson1.2.68版及以下全版本远程代码执行漏洞通告

再这样&#xff0c;真的要放弃fastjson了 【安全通告】Fastjson <1.2.68全版本远程代码执行漏洞通告 尊敬的腾讯云用户&#xff0c;您好&#xff01;近日&#xff0c;腾讯云安全运营中心监测到&#xff0c;Fastjson <1.2.68版本存在远程代码执行漏洞&#xff0c;漏洞被利…

数据库选型经验汇总

数据库选型 下面这些都是免费开源的。 暂且不考虑数据量&#xff0c;大致的选型方案。 一般分析型数据库&#xff0c;都是可以支持GB到TB级别。 上面的分类都不是一定的&#xff0c;只是大体上的推荐。具体还得结合实际场景调整。 数据处理大致可以分成两大类&#xff1a; 联…

RabbitMQ和Kafka选型用哪个

作为一个有丰富经验的微服务系统架构师&#xff0c;经常有人问我&#xff0c;“应该选择RabbitMQ还是Kafka&#xff1f;” 基于某些原因&#xff0c; 许多开发者会把这两种技术当做等价的来看待。的确&#xff0c;在一些案例场景下选择RabbitMQ还是Kafka没什么差别&#xff0c…

【FPGA】分享一些FPGA视频图像处理相关的书籍

在做FPGA工程师的这些年&#xff0c;买过好多书&#xff0c;也看过好多书&#xff0c;分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

错误记录:Current request is not a multipart request

springboot 报错&#xff1a;Current request is not a multipart request 这个一般是controller是带有上传文件的服务&#xff0c;类似RequestParam MultipartFile[] file 解决&#xff1a; 首先检查请求头中的Content-Type是否设置对&#xff0c;如果把Content-Type设置成a…

java 使用gzip压缩和解压 传输文件必备

java gzip 压缩解压工具类&#xff0c;开箱即用 gzip原理看我另外一篇介绍 压缩效果直接看图&#xff1a; package com.yeahmobi.datacheck.util;import java.io.*; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream;public class CompressUtil…

spring boot maven项目返回值乱码的解决方法

spring boot maven项目返回值乱码的解决方法 1、先看乱码效果&#xff1a; spring boot maven项目&#xff0c;返回值乱码&#xff0c;如下图&#xff1a; 控制台打印log乱码&#xff0c;如下图&#xff1a; 有swagger的话&#xff0c;swagger文档乱码&#xff0c;如下图&…

【错误记录】Invalid character found in method name. HTTP method names must be tokens

错误日志 [2020-08-14 10:47:11.262] [http-nio-8093-exec-7] [INFO] [o.a.c.h.Http11Processor] [Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.] java.lang.IllegalArgumentException: Invali…

redis 常见基础面试题

1、在项目中缓存是如何使用的&#xff1f;为什么要用缓存&#xff1f;缓存使用不当会造成什么后果&#xff1f; 面试官心理分析 这个问题&#xff0c;互联网公司必问&#xff0c;要是一个人连缓存都不太清楚&#xff0c;那确实比较尴尬。 只要问到缓存&#xff0c;上来第一个…