【K8S 基本概念】Kurbernetes的架构和核心概念
目录
一、Kurbernetes
1.1 简介
1.2、K8S的特性:
1.3、docker和K8S:
1.4、K8S的作用:
1.5、K8S的特性:
二、K8S集群架构与组件:
三、K8S的核心组件:
一、master组件:
1、kube-apiserver:
2、kube-controller-manager:
3、kube-scheduler:
4、ETCD组件:
二、node组件:
1、kubelet:
2、kube-proxy:
3、docker:
4、pod:
5、deployment:
6、replicaset:
7、daemonset:
8、statefulset:
9、job:
10、cronjob:
11、service:
12、label:
13、ingress:
14、namespace:
一、Kurbernetes
1.1 简介
K8S:kubernets中间8个字母省略就是K8S
K8S是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。可以以分布式和集群化的方式进行容器管理
能提供自动部署,自动扩展和管理容器化部署的应用程序的一个开源的系统
K8S是Google研发的borg系统作为原型,后期经go语言编写的开源软件
Kubernetes 官网
GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management 源码包
市面上的版本:
1.15、1.18、1.20
我们使用的是1.20
1.2、K8S的特性:
1、强大的容器编排能力
作为容器编排管理平台,拥有强大的容器编排能力。
Kubernetes 与 Docker 共同发展并且深度集成了 Docker,因此适应容器的特点,比如容器组合、标签选择和服务发现等,可以满足企业级的需求,具体表现如下:
以 Pod(容器组)为基本的编排和调度单元以及声明式的对象配置模型(控制器、configmap、secret 等)
资源配额与分配管理
健康检查、自愈、伸缩与滚动升级
2、轻量级
轻量级,对微服务架构有很好的支撑。
微服务架构的核心是将一个巨大的单体应用分解为很多小的互相连接的微服务,一个微服务可能由多个实例副本支撑,副本的数量可以随着系统的负荷变化进行调整。
整个系统划分出各个功能独立的组件,组件之间边界清晰、部署简单,以及很多功能实现了插件化,可以非常方便地进行扩展和替换:
服务发现、服务编排与内部路由支持
服务快速部署和自动负载均衡
提供对“有状态”服务的支持
3、便携性
无论公有云、私有云、混合云还是多云架构都全面支持,可以随时随地地将系统整体进行“搬迁”。
Kubernetes 架构方案中屏蔽了底层网络的细节,基于服务的虚拟 IP 地址的设计方式让架构和底层硬件无关,无需改变配置文件就可以将系统从物理机迁移到公有云上,并且谷歌云(GCE)、华为云(CCE)、阿里云(ACK)和腾讯云(TKE)都支持 Kubernetes 集群。
1.3、docker和K8S:
docker微服务,可以满足微服务使用,那么为什么还要使用K8S呢
- 传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护,需要专业的人员,如果出了故障还需要人工重新拉起来。而且如果业务量增大,只能水平的进行拓展,再部署一台
- 容器化,我们可以用dockerfile编写好我们自定义的容器,随时基于镜像都可以运行。数量少还能管的过来。数量一旦太多,管理起来太复杂。而且docker一般是单机运行,没有高可用
1.4、K8S的作用:
简单,高效的部署容器化应用
- 解决了docker的单机部署和无法集群化的特点
- 解决了随着容器数量的增加,对应增加的管理成本
- 容器的高可用,提供容器的自愈机制
- 解决了容器没有预设模版,以及无法快速、大规模部署。以及大规模的容器调度
- K8S提供了集中化配置管理的中心
- 解决了容器的生命周期的管理工具
- 提供了图形化工具,可以用图形化工具对容器进行管理
K8S是基于开源的容器集群管理系统,在docker容器技术的基础之上,为容器化的集群提供部署、运行、资源调度、服务发现、动态伸缩等一系列完整的功能(大规模容器)
- 对docker等容器技术从应用的包——部署——运行——停止——销毁,全生命周期管理
- 集群方式运行,可以跨机器管理容器
- 解决docker的跨机器运行的网络问题
- K8S可以自动修复,使得整个容器集群可以在用户期待的状态下运行。
1.5、K8S的特性:
- 弹性伸缩,基于命令,或者图形化界面,以及CPU的使用情况,自动的对部署的程序进行扩容和缩容。以最小的成本来运行服务
- 自我修复:节点故障时,他可以自动的重新启动失败的容器,替换和重新部署
- 服务发现和负载均衡(自带的):K8S为多个容器提供一个统一的访问入口(内部地址和内部DNS名称),自动负载均衡关联的所有容器
- 自动发布和回滚:K8S采用滚动的更新策略来更新应用。如果更新过程中出现问题,可以根据回滚点来进行回滚
- 集中化的配置管理和秘钥管理:K8S集群中的各个组件都是要进行密钥对验证的。但是K8S得安全性还是不够,核心的组件不建议部署(mysql和nginx不建议),适合部署自定义应用
- 存储编排
·自动化的把容器部署在节点上
·也可以通过命令行或者yml文件(自定义pod)来实现指定节点部署
·也可以通过网络存储,NFS GFS
任务进行批次处理。提供一次性的任务,提供定时任务,满足需要批量处理和分析的场景
二、K8S集群架构与组件:
三、K8S的核心组件:
Kubernetes 采用主从分布式架构,节点在角色上分为 Maste 和 Node。
Kubernetes Master 是控制节点,负责k8s集群的调度、管理等运维工作,组件有apiserver、controller-manager、scheduler、etcd。
Kubernetes Node 是运行节点,负责运行工作负载,即容器应用,组件有kubelet、kuber-proxy、容器引擎/容器运行时(docker、containerd)等。
一、master组件:
1、kube-apiserver:
K8S集群之中每个组件都是要靠密钥对进行验证,组件之间通信靠apiserver,API是应用接口服务,K8S的所有资源请求和调用操作都是kube-apiserver来完成,所有对象资源的增、删、改、查和监听的操作都是kubu-apiserver处理完之后交给etcd来进行
apiserver是K8S所有请求的入口服务,apiserver负责接收K8S的所有请求(命令行、图形化界面),然后根据用户的具体请求,通知对应的组件展示或者运行命令
apiserver相当于整个集群的大脑
2、kube-controller-manager:
运行管理控制器。是K8S集群中处理常规任务的后台线程。是集群中所有资源对象的自动化控制中心。一个资源对应一个控制器,controller-manager负责管理这些控制器
·node controller(节点控制器):负责节点的发现以及节点故障的发现和响应
·replication controller(副本控制器):控制关联pod的副本数,可以随时扩缩容
·endpoints controller(端点控制器):监听service和对应pod的副本变化。端点就是一个服务暴露出的访问点。要访问这个服务,必须要知道他的endpoints。就是每个服务的IP地址+端口
·service account和roken controller(服务账户和令牌控制):为命名空间创建默认账户和api访问令牌。访问不同的namespace命名空间
·resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制,也可以对pod的资源进行控制
·namespace controller(命名空间控制器):管理命名空间的生命周期
·service controller(服务节点控制器):K8S集群和外部的主机之间的接口控制器。
3、kube-scheduler:
资源调度组件,根据调度的算法为新创建的pod选择一个合适的node节点
可以理解为K8S的所有node节点的调度器,部署和调度node
预先策略:人工定制,指定node节点上部署
优先策略:有限制条件。根据调度算法选择一个合适的node,node节点的资源情况,node节点的资源控制的情况等等,选一个资源最富裕,负载最小的node来部署
4、ETCD组件:
是K8S的存储服务,etcd是分布式键值存储系统(key:value),存储K8S的关键配置和用户配置,先通过apiserver调用etcd当中的存储信息,然后再实施。在整个集群中,能对etcd存储进行读写权限的,只有apiserver
一般来说四大核心组件都部署在主节点上
二、node组件:
1、kubelet:
弄得节点的监视器,以及与master节点的通信器,也可以理解为master安装在node节点上的监控眼线。
kubelet会定时向api server汇报自己的node上运行服务的状态,api server会把节点状态保存在etcd存储中
能够接收来自master节点的调度命令。如果发现自己的状态和master节点的状态不一致,调用docker的接口,同步数据。
对接点上的生命周期进行管理,保证节点上的镜像不会占满磁盘空间,退出容器的资源,进行回收
2、kube-proxy:
实现每个node节点上pod的网络代理。负责节点上的网络规划和四层负载均衡工作。负责写入iptables(快淘汰了)、ipvs实现服务映射
kube-proxy:本身不直接给pod提供网络代理,proxy只是service资源的载体
访问:192.168.233.91:34943——10.299.96.10:80(proxy代理)——最后到每个集群nginx节点ip(负载均衡轮询)
kube-proxy:实际上代理的是pod的集群网络(虚拟网络)
K8S的每个node节点上都有一个kube-proxy组件
3、docker:
容器引擎,运行容器,负责本机的容器创建和管理
pod不是容器,是基于容器创建的pod
K8S要创建pod时,kube-scheduler调度到节点上(node节点),节点上的kubelet指示docker启动特定的容器。kubelet把容器的信息收集,发送给主节点。只需要在主节点发布指令,节点上的kubelet就会指示docker对容器进行拉取镜像、启动、停止容器
4、pod:
也是运行在节点上的。是K8S中创建部署的最小的也是最简单的基本单位,一个pod只代表集群上正在运行的进程。
同一个pod内每个容器就像是一颗颗豌豆子,pod就是豌豆
pod是由一个或多个容器组成,pod中的容器共享网络,存储和计算资源。可以部署在不同的docker主机上
一个pod里面可以运行多个容器,也可以是一个容器
在生产环境中,一般是单个容器或者具有关联关系的多个容器组成一个pod
容器是容器,pod是pod。pod是基于容器创建的
5、deployment:
无状态应用部署,作用就是管理和控制pod以及他的replicaset(副本数,表示运行几个容器)管控他的运行状态
6、replicaset:
保证pod的副本数据量,受控于deployment。
在K8S中部署服务,实际上就是pod,deployment部署的服务就是pod,replicaset就是来定义pod的容器数量
可以保证pod的不可重复性。在当前命名空间不能重复。不同命令空间名称可以重复
官方推荐使用deployment进行服务部署
7、daemonset:
确保所有节点运行同一类的pod
8、statefulset:
有状态应用部署。
9、job:
可以给pod中设置一个一次性任务,运行完即退出
10、cronjob:
一直在运行的周期性任务,默认就是cronjob
11、service:
在K8S集群中,创建一个pod之后,都会将其中运行的容器分配一个集群内的IP地址,由于业务的变更,容器可能会发生变化,IP地址也会发生变化,service的作用就是提供整个pod对外统一的IP地址(cluster-ip)
可以将service理解成一个网关(路由器),通过访问service就可以访问pod内部的容器集群
service能实现负载均衡和代理——kube-proxy——来实现负载均衡
service是K8S微服务的核心,屏蔽了服务的细节,统一的对外暴露的端口,真正实现了“微服务”
service的流量调度:userspace(用户空间,已经废弃了),iptables(即将废弃),ipvs(目前1.20都用ipvs来实现流量调度)
12、label:
标签,K8S的特色管理方式,分类管理资源对象
node pod service namespace
label标签可以用户自定义
lable选择器:等于,不等于,使用定义的标签名
13、ingress:
K8S集群对外暴露提供访问的接口
ingress在第七层属于应用层,七层代理,转发的是http请求,http/https。
service是四层转发,转发的是流量
https://www.test.com:80——>ingress——>service——pod——容器
14、namespace:
K8S上可以通过namespace命名空间的方式来实现资源隔离、项目隔离
通过namespace可以把集群划分为多个资源不可共享的虚拟集群组
不同命令空间里面的资源,名称可以重复
相关文章:
【K8S 基本概念】Kurbernetes的架构和核心概念
目录 一、Kurbernetes 1.1 简介 1.2、K8S的特性: 1.3、docker和K8S: 1.4、K8S的作用: 1.5、K8S的特性: 二、K8S集群架构与组件: 三、K8S的核心组件: 一、master组件: 1、kube-apiserve…...
WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法
问题描述 WPS是时下最流行的字处理软件之一,是目前唯一可以和微软office办公套件相抗衡的国产软件。然而,在使用WPS的过程中也会出现一些莫名其妙的错误,如利用WPS打开docx文件时,如果文件包含复选框,经常会出…...
对“企业数据资源相关会计处理暂行规定“的个人理解
附:2023年数据资源入表白皮书下载: 关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光…...
JavaScript:函数隐含对象arguments/剩余参数. . .c/解构赋值
除了this,在函数内部还存在着一个隐含的参数arguments arguments 是一个类数组对象(伪数组) 调用函数时传递的所有实参,都被存储在arguments中 arguments[0] 表示的是第一个实参 arguments[1] 表示的是第二个实参 以此类推..…...
MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题
文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单,只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了,甚至直接画…...
c++简易AI
今天小编一时雅兴大发,做了一个c的简易AI,还是很垃圾的! 题外话(每期都会有):我的蛋仔名叫酷影kuying,大家能加我好友吗? 上代码咯! #include<bits/stdc.h> #in…...
java获取两个List集合之间的交集、差集、并集
文章目录 方式一、jdk8 Stream求交集、并集、差集方式二、求交集方式三、collections4.CollectionUtils求交集、差集、并集 本文总结一下java中获取两个List之间的交集、补集、并集的几种方式。 最常用的通过for循环遍历两个集合的方式在这里就不整理了,主要整理一些…...
轻松实现iphone截图传电脑
目录 摘要 引言 用户登录工具和连接设备 生成截图 摘要 本篇博文介绍了克魔助手这款工具,解决了iPhone与Windows系统下图片传输的烦恼。通过连接同一Wi-Fi,使用克魔助手轻松实现了iPhone截图传输到电脑上的便捷操作。用户只需简单地下载并安装克魔助…...
【网络安全】upload靶场pass1-10思路
目录 Pass-1 Pass-2 Pass-3 Pass-4 Pass-5 Pass-6 Pass-7 Pass-8 Pass-9 Pass-10 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN…...
共享单车之数据存储
文章目录 第1关:获取工作簿中的数据第2关:保存共享单车数据 第1关:获取工作簿中的数据 相关知识 获取工作簿中的信息,我们可以使用Java POI(POI是一个提供API给Java程序对Microsoft Office格式档案读和写的功能&#…...
Flink(十一)【状态管理】
Flink 状态管理 我们一直称 Flink 为运行在数据流上的有状态计算框架和处理引擎。在之前的章节中也已经多次提到了“状态”(state),不论是简单聚合、窗口聚合,还是处理函数的应用,都会有状态的身影出现。状态就如同事务…...
【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)
系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…...
wefew
123212...
Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)
1、问题概述? Springboot对Thymeleaf支持的要更好一些,Springboot内嵌的Tomcat默认是没有JSP引擎,不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…...
Java核心知识点1-java和c++区别、隐式和显示类型转换
java和c区别 java通过虚拟机实现跨平台特性,但c依赖于特定的平台。java没有指针,它的引用可以理解为安全指针,而c和c一样具有指针。java支持自动垃圾回收,而c需要手动回收。java不支持多重继承,只能通过实现多个接口来…...
C++图论之强连通图
1. 连通性 什么是连通性? 连通,字面而言,类似于自来水管道中的水流,如果水能从某一个地点畅通流到另一个地点,说明两点之间是连通的。也说明水管具有连通性,图中即如此。 无向图和有向图的连通概念稍有差…...
SadTalker数字人增加视频输出mp4质量精度
最近在用数字人简易方案,看到了sadtalker虽然效果差,但是可以作为一个快速方案,没有安装sd的版本,随便找了个一键安装包 设置如上 使用倒是非常简单,但是出现一个问题,就是输出的mp4都出马赛克了 界面上却…...
swing快速入门(三十二)消息对话框
注释很详细,直接上代码 上一篇 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame n…...
《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》
基于Feign的声明式远程调用(代码更优雅),用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理:Nacos Config 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相…...
深入解析 Flink CDC 增量快照读取机制
一、Flink-CDC 1.x 痛点 Flink CDC 1.x 使用 Debezium 引擎集成来实现数据采集,支持全量加增量模式,确保数据的一致性。然而,这种集成存在一些痛点需要注意: 一致性通过加锁保证:在保证数据一致性时,Debez…...
060:vue中markdown编辑器mavon-editor的应用示例
第060个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…...
使用SCP在Linux中安全复制文件:参数详解
SCP(Secure Copy)是一个在Linux和其他类Unix系统中使用的命令行工具,用于在本地和远程主机之间安全地复制文件和目录。本文将详细介绍SCP的多个常用参数,并通过示例进行说明。 基本语法 scp [options] source destination其中&a…...
【动态规划精选题目】3、简单多状态模型
此动态规划系列主要讲解大约10个系列【后续持续更新】 本篇讲解简单多状态模型中的9道经典题,会在讲解题目同时给出AC代码 目录 1、按摩师 2、力扣198:打家劫舍1 3、打家劫舍II 4、删除并获得点数 5、 粉刷房子 6、力扣309:买卖股票的最佳时机含冷冻期 7、 买…...
软件测试/测试开发丨Python 虚拟环境及pip环境管理
venv 虚拟环境管理 venv 虚拟环境的优点 独立的 Python 环境,不会产生冲突有助于包的管理删除和卸载方便 venv 使用方法 创建虚拟环境 python3 -m venv test 激活虚拟环境 切换指定文件夹Windows:/Scripts/macOS:/bin/ 执行指令ÿ…...
Mybatis SQL构建器类 - SQL类
下面是一些例子: // Anonymous inner class public String deletePersonSql() {return new SQL() {{DELETE_FROM("PERSON");WHERE("ID #{id}");}}.toString(); }// Builder / Fluent style public String insertPersonSql() {String sql new…...
海云安亮相2023北京国际金融安全论坛,助力金融企业数字化转型降本增效
近日,2023北京国际金融安全论坛暨金融科技标准认证生态大会在北京金融安全产业园成功举办。深圳海云安网络安全技术有限公司(以下简称“海云安”)受邀参展亮相此次大会。海云安作为国内领先的金融科技服务商,展示了开发安全系列产…...
nodeJS搭建免费代理IP池爬取贴吧图片实战
之前用python写过爬虫,这次想试试nodeJS爬虫爬取贴吧图片,话不多说代码如下,爬取制定吧的前十页所有帖子里的图片 爬取贴吧图片脚本 你得提前创建一个images文件夹 const axios require("axios"); const cheerio require("…...
基于图搜索的自动驾驶规划算法 - BFS,Dijstra,A*
本文将讲解BFS,Dijstra,A*,动态规划的算法原理,不正之处望读者指正,希望有兴趣的读者能在评论区提出一些这些算法的面试考点,共同学习,一起进步 0 图论基础 图有三种:无向图、有向…...
Spring系列学习四、Spring数据访问
Spring数据访问 一、Spring中的JDBC模板介绍1、新建SpringBoot应用2、引入依赖:3、配置数据库连接,注入dbcTemplate对象,执行查询:4,测试验证: 二、整合MyBatis Plus1,在你的项目中添加MyBatis …...
HBase 创建不分裂的表 ( 禁止 Table Split )
注意:由于 HBase 版本众多,配置表的语法在不同版本上会有差异,本文介绍的配置方法是在 1.4.9 版本上测试的,使用 HBase 2.0 的版本需要核实并修改相关配置方法! 有时候,出于特殊需要,我们希望对…...
wordpress无法找到该页/刷网站排名软件
QQ自带了一个接口,只要是使用手机打开该网址,就会弹出QQ对话框: http://qm.qq.com/cgi-bin/qm/qr?k 使用手机打开该网址可以进行测试:http://qm.qq.com/cgi-bin/qm/qr?k2/5FwXkAy4/UqlMOaqSUVglaDn/RaVy 该脚本HTML源码如下&a…...
网站建设难做吗/百度推广的渠道有哪些
一.概念 列表视图;用来显示多个可滑动项列表的ViewGroup;需要适配器Adapter 将集合中数据和每一个Item所对应的布局动态适配到ListView中进行显示。 1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:andro…...
自考都到哪个网站找题做/如何优化搜索引擎的搜索功能
在判断电脑系统前,我们先要知道版本号,通过函数调用返回的信息,就可以知道是什么系统。下面这图是官方提供的关于Windows版本对应的号码我们可以通过系统Windows的API中GetVersionEx这个函数获取win8.1下的版本。(这里我只稍微解释下…...
字体/宁波seo教学
最近在使用yocto添加自己的编译代码时,遇到了一个问题。报错如下: ERROR: zm-bsp-0.1-r0 do_package: QA Issue: zm-bsp: Files/directories were installed but not shipped in any package: 网上查了很多信息,都没有解决我的问题…...
物流网站建设可行性分析/网站排名点击工具
SVBVERSION & SVNSVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。本案例要求先快速搭建好…...
织梦做中英文企业网站/俄罗斯搜索引擎入口
1环境 Win10,ANACONDA3(64-bit),Python3.6.2。ANACONDA Prompt中不能用pip命令安装包,并且是在安装了TensorFlow后才发生的。 TypeError: parse() got an unexpected keyword argument ‘transport_encoding’ 2错误信息 报错如下&#…...