Kubernetes的介绍

news2024/11/22 23:11:58

目录

Kubernetes概述

1、作用

2、官网

3、K8S的主要功能

Kubernetes 集群架构与组件

1、核心组件

1)Kube-apiserver

2)Kube-controller-manager

3)Kube-scheduler

4)etcd

5)Kubelet

6)Kube-Proxy

7)docker 或 rocket

2、k8s核心概念

1)Pod

2)Pod 控制器

3)Lable

4)Lable选择器(Lable select)

5)Service

6)Ingress

7)Name

8)Namespace


Kubernetes概述

Kubernetes在国内有个缩写叫“ k8s ”,为什么叫k8s,是因为Kubernetes中开头的k与结尾的s之间有8个字母,所以叫k8s。

K8S是Google开源的容器集群管理系统,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

1、作用

用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。

可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

2、官网

https://kubernetes.ioicon-default.png?t=N7T8https://kubernetes.io也可以从Github中获取k8s的安装包及相关文件

GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and ManagementProduction-Grade Container Scheduling and Management - GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Managementicon-default.png?t=N7T8https://github.com/kubernetes/kubernetes

3、K8S的主要功能

  • 跨主机编排容器。
  • 更充分地利用硬件资源来最大化地满足企业应用的需求。
  • 控制与自动化应用的部署与升级。
  • 为有状态的应用程序挂载和添加存储器。
  • 线上扩展或缩减容器化应用程序与它们的资源。
  • 声明式的容器管理,保证所部署的应用按照我们部署的方式运作。
  • 通过自动布局、自动重启、自动复制、自动伸缩实现应用的状态检查与自我修复。
  • 为多个容器提供服务发现和负载均衡,使得用户无需考虑容器IP问题。

Kubernetes 集群架构与组件

K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运算工作负载节点。

在 K8S 中,主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,每个 Node 都会被 Master 分配一些工作负载。

Master 组件可以在群集中的任何计算机上运行,但建议 Master 节点占据一个独立的服务器。因为 Master 是整个集群的大脑,如果 Master 所在节点宕机或不可用,那么所有的控制命令都将失效。除了 Master,在 K8S 集群中的其他机器被称为 Worker Node 节点,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

1、核心组件

1)Kube-apiserver

用于暴露 Kubernetes API,任何资源请求或调用操作都是通过 kube-apiserver 提供的接口进行

以 HTTP Restful API 提供接口服务,所有对象资源的增删改查和监听操作都交给 API Server 处理后再提交给 Etcd 存储。

可以理解成 API Server 是 K8S 的请求入口服务。API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行工具), 然后根据用户的具体请求,去通知其他组件干活。可以说 API Server 是 K8S 集群架构的大脑。

2)Kube-controller-manager

运行管理控制器,是 K8S 集群中处理常规任务的后台线程,是 K8S 集群里所有资源对象的自动化控制中心。

在 K8S 集群中,一个资源对应一个控制器,而 Controller manager 就是负责管理这些控制器的。

由一系列控制器组成,通过 API Server 监控整个集群的状态,并确保集群处于预期的工作状态,比如当某个 Node 意外宕机时,Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

控制器主要包括:

控制器作用
Node Controller(节点控制器)负责在节点出现故障时发现和响应。
Replication Controller(副本控制器)负责保证集群中一个 RC(资源对象 Replication Controller)所关联的 Pod 副本数始终保持预设值。可以理解成确保集群中有且仅有 N 个 Pod 实例,N 是 RC 中定义的 Pod 副本数量。
Endpoints Controller(端点控制器)填充端点对象(即连接 Services 和 Pods),负责监听 Service 和对应的 Pod 副本的变化。 可以理解端点是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的 endpoint。
Service Account & Token Controllers(服务帐户和令牌控制器)为新的命名空间创建默认帐户和 API 访问令牌。
ResourceQuota Controller(资源配额控制器)确保指定的资源对象在任何时候都不会超量占用系统物理资源。
Namespace Controller(命名空间控制器)管理 namespace 的生命周期。
Service Controller(服务控制器)属于 K8S 集群与外部的云平台之间的一个接口控制器。

3)Kube-scheduler

负责资源调度的进程,根据调度算法为新创建的 Pod 选择一个合适的 Node 节点

可以理解成 K8S 所有 Node 节点的调度器。当用户要部署服务时,Scheduler 会根据调度算法选择最合适的 Node 节点来部署 Pod。
• 预选策略(predicate)
• 优选策略(priorities)

4)etcd

K8S 的存储服务。etcd 是分布式键值存储系统,存储了 K8S 的关键配置和用户配置,K8S 中仅 API Server 才具备读写权限,其他组件必须通过 API Server 的接口才能读写数据。

5)Kubelet

Node 节点的监视器,以及与 Master 节点的通讯器。Kubelet 是 Master 节点安插在 Node 节点上的“眼线”,它会定时向 API Server 汇报自己 Node 节点上运行的服务的状态,并接受来自 Master 节点的指示采取调整措施。

从 Master 节点获取自己节点上 Pod 的期望状态(比如运行什么容器、运行的副本数量、网络或者存储如何配置等), 直接跟容器引擎交互实现容器的生命周期管理,如果自己节点上 Pod 的状态与期望状态不一致,则调用对应的容器平台接口(即 docker 的接口)达到这个状态。

管理镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源。

6)Kube-Proxy

在每个 Node 节点实现 Pod 网络代理,是 Kubernetes Service 资源的载体,负责维护网络规则四层负载均衡工作。 负责写入规则至iptables、ipvs实现服务映射访问的。

Kube-Proxy 本身不是直接给 Pod 提供网络,Pod 的网络是由 Kubelet 提供的,Kube-Proxy 实际上维护的是虚拟的 Pod 集群网络。
Kube-apiserver 通过监控 Kube-Proxy 进行对 Kubernetes Service 的更新和端点的维护。

在 K8S 集群中微服务的负载均衡是由 Kube-proxy 实现的。Kube-proxy 是 K8S 集群内部的负载均衡器。它是一个分布式代理服务器,在 K8S 的每个节点上都会运行一个 Kube-proxy 组件。

7)docker 或 rocket

容器引擎,运行容器,负责本机的容器创建和管理工作

当 kubernetes 把 pod 调度到节点上,节点上的 kubelet会指示 docker 启动特定的容器。接着,kubelet 会通过 docker 持续地收集容器的信息, 然后提交到主节点上。docker 会如往常一样拉取容器镜像、启动或停止容器。不同点仅仅在于这是由自动化系统控制而非管理员在每个节点上手动操作的。

2、k8s核心概念

Kubernetes 包含多种类型的资源对象:Pod、Label、Service、Replication Controller 等。

所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。

Kubernets其实是一个高度自动化的资源控制系统,通过跟踪对比etcd存储里保存的资源期望状态与当前环境中的实际资源状态的差异,来实现自动控制和自动纠错等高级功能。

1)Pod

Pod是 Kubernetes 创建或部署的最小/最简单的基本单位,一个 Pod 代表集群上正在运行的一个进程。

一个 Pod 由一个或多个容器组成,Pod 中容器共享网络、存储和计算资源,在同一台 Docker 主机上运行。

一个 Pod 里可以运行多个容器,又叫边车模式(SideCar)。而在生产环境中一般都是单个容器或者具有强关联互补的多个容器组成一个 Pod。

同一个 Pod 之间的容器可以通过 localhost 互相访问,并且可以挂载 Pod 内所有的数据卷;但是不同的 Pod 之间的容器不能用 localhost 访问,也不能挂载其他 Pod 的数据卷。

2)Pod 控制器

Pod 控制器是 Pod 启动的一种模版,用来保证在K8S里启动的 Pod 应始终按照用户的预期运行(副本数、生命周期、健康状态检查等)。

k8s内Pod控制器,常用的有以下几种:

Deployment:无状态应用部署

Deployment 的作用是管理和控制 Pod 和 ReplicaSet,管控它们运行在用户期望的状态中。

Replicaset:确保预期的Pod副本数量

ReplicaSet 的作用就是管理和控制 Pod,管控他们好好干活。但是,ReplicaSet 受控于 Deployment。

Daemonset:确保所有节点运行同一类Pod

保证每个节点上都有一个此类 Pod 运行,通常用于实现系统级后台任务。

Statefulset:有状态应用部署

Job:一次性任务

根据用户的设置,Job 管理的 Pod 把任务成功完成就自动退出了。

Cronjob:周期性计划任务

3)Lable

标签,是 K8S 特色的管理方式,便于分类管理资源对象。

Label 可以附加到各种资源对象上,例如 Node、Pod、Service、RC 等,用于关联对象、查询和筛选。
一个 Label 是一个 key-value 的键值对,其中 key 与 value 由用户自己指定。
一个资源对象可以定义任意数量的Label同一个Label 也可以被添加到任意数量的资源对象中,也可以在对象创建后动态添加或者删除
可以通过给指定的资源对象捆绑一个或多个不同的 Label,来实现多维度的资源分组管理功能。

4)Lable选择器(Lable select)

给某个资源对象定义一个 Label,就相当于给它打了一个标签;随后可以通过标签选择器(Label selector)查询和筛选拥有某些 Label 的资源对象。

标签选择器目前有两种:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在)。

5)Service

在K8S的集群里,虽然每个Pod会被分配一个单独的IP地址,但由于Pod是有生命周期的(它们可以被创建,而且销毁之后不会再启动),随时可能会因为业务的变更导致这个 IP 地址也会随着 Pod 的销毁而消失

在 K8S 集群中,Service 可以看作一组提供相同服务的 Pod 的对外访问接口。客户端需要访问的服务就是 Service 对象。每个 Service 都有一个固定的虚拟 ip(这个 ip 也被称为 Cluster IP),自动并且动态地绑定后端的 Pod,所有的网络请求直接访问 Service 的虚拟 ip,Service 会自动向后端做转发。

Service 除了提供稳定的对外访问方式之外,还能起到负载均衡(Load Balance)的功能,自动把请求流量分布到后端所有的服务上,Service 可以做到对客户透明地进行水平扩展(scale)。

而实现 service 这一功能的关键,就是 kube-proxy。kube-proxy 运行在每个节点上,监听 API Server 中服务对象的变化, 可通过以下三种流量调度模式 userspace(废弃)、iptables(濒临废弃)、ipvs(推荐,性能最好)来实现网络的转发。

目前大多选择ipvs实现网络的转发,主要是因为ipvs相对于iptables有更多的调度策略

Service 是 K8S 服务的核心,屏蔽了服务细节统一对外暴露服务接口,真正做到了“微服务”。

Service的优势非常明显:外部用户不需要感知因为 Pod 上服务的意外崩溃、K8S 重新拉起 Pod 而造成的 IP 变更, 外部用户也不需要感知因升级、变更服务带来的 Pod 替换而造成的 IP 变化。

6)Ingress

Ingress 是整个 K8S 集群的接入层,负责集群内外通讯。Ingress 是 K8S 集群里工作在 OSI 网络参考模型下,第7层的应用,对外暴露的接囗,典型的访问方式是 http/https。

Service 只能进行四层的流量调度,表现形式是 ip+port。Ingress 则可以调度不同业务域、不同URL访问路径的业务流量。

说白了,ingress相当于dns,对域名进行解析成IP和端口,然后转发给service,实现通讯。

7)Name

由于 K8S 内部,使用 “资源” 来定义每一种逻辑概念(功能),所以每种 “资源”,都应该有自己的 “名称”。
“资源” 有 api 版本(apiversion)、类别(kind)、元数据(metadata)、定义清单(spec)、状态(status)等配置信息。
“名称” 通常定义在 “资源” 的 “元数据” 信息里。在同一个 namespace 空间中必须是唯一的。

8)Namespace

Namespace 是为了把一个 K8S 集群划分为若干个资源不可共享的虚拟集群组而诞生的。

不同 Namespace 内的 “资源” 名称可以相同,相同 Namespace 内的同种 “资源”,“名称” 不能相同。

合理的使用 K8S 的 Namespace,可以使得集群管理员能够更好的对交付到 K8S 里的服务进行分类管理和浏览。

K8S 里默认存在的 Namespace 有:default、kube-system、kube-public 等。

查询 K8S 里特定 “资源” 要带上相应的 Namespace。
 

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

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

相关文章

FAN7391MX 高压600V 用于高压、高速驱动 MOSFET和IGBT 半桥栅极驱动器IC

FAN7391MX是单片高侧和低侧栅极驱动 IC,可驱动工作在高达 600 V 电压的高速 MOSFET 和 IGBT。它具有缓冲输出级,所有 NMOS 晶体管设计用于实现高脉冲电流驱动能力和最低交叉传导。Fairchild 的高压工艺和共模噪声消除技术可使高侧驱动器在高 dv/dt 噪声环…

amd Ubuntu opencl 安装

amd cpugpu 安装amd显卡驱动,下载地址: https://www.amd.com/en/support/linux-drivers //eg: sudo apt install ./amdgpu-install_5.4.50403-1_all.deb amdgpu-install安装成功之后可输入 glxinfo | grep rendering,显示 yes 则显卡驱动安…

浙江大学漏洞报送证书

获取来源:edusrc(教育漏洞报告平台) url:主页 | 教育漏洞报告平台 兑换价格:20金币 获取条件:提交浙江大学任意中危或以上级别漏洞

财务自由纲领

一、大道至简 抓住事物的要害和根本,剔除那些无效的、非本质的东西,化繁为简 二、空杯心态 空杯心态象征意义是做事的前提是先要有好心态。如果想学到更多学问,先要把自己想象成“一个空着的杯子”,而不是骄傲自满。有一句话说&a…

【更新公告】AirtestIDE更新至1.2.16版本

1. 前言 本次更新为AirtestIDE、Airtest、Poco更新。 AirtestIDE更新至1.2.16版本,Airtest更新为1.3.1版本,Poco更新为1.0.92版本,主要为iOS内容更新、新增Android剪切板功能、poco问题修复等。更多更新内容详见下文。 2. 更新内容 1&…

易基因:cfDNA甲基化诊断和监测肿瘤的研究进展与展望:胰腺癌|深度综述

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 胰腺癌因其病死率高而成为目前最具挑战性的恶性肿瘤之一。考虑到目前的治疗方案诊断较晚,生存获益有限,优化早期检测、预后和治疗反应预测势在必行。近年来大量研…

Git设置显示中文

git config --global i18n.comitencoding utf-8 git config --global i18n.logoutputencoding utf-8 export LESSCHARSETutf-8

不会平面设计软件,如何做好一本精美的产品画册?

想要制作一本优秀精美的产品画册,还是有一定难度的,一本好的产品画册不仅需要好的内容,同时也需要一个美观、方便阅读的呈现形式。 那很多人都会问,这么多要求的产品画册,像我这种不会平面设计软件的,要如…

Promise链式调用改写成async/await

首先,Promise链式调用和async/await都是用来解决异步调用层层嵌套的问题。 promise解决了回调地狱的问题,把异步任务完成后的处理函数换个位置放:传给then方法,并支持链式调用,避免层层回调。用catch方法捕获错误。 …

sd-wan专线异地组网|分支机构与总部间外贸MES系统高速访问解决方案

随着全球化的快速发展,国际市场对于企业的重要性日益增加,很多外贸企业都会选择在海外建立工厂,以求更好的发展国际市场,但是,海外建立工厂必然会在当地招聘新的公司人员,如何做好异地管理和监控海外工厂的…

培训心得怎么写?CHAT帮你解决问题

问CHAT:请写一篇入职教师的培训心得 CHAT回复:作为一名新入职的教师,我非常感谢学校给予的这次培训机会。此次培训让我收获颇丰,无论是在教学理念、教学技巧上,还是在如何与学生、家长建立良好关系方面,都有…

【高分快刊】Elsevier旗下,中科院2区SCI,2个月19天录用!

计算机类 • 高分快刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读,如有相关领域作者有意向投稿,可作为重点关注!后文有真实发表案例,供您投稿参考~ 01 期刊简介 ☑️出版社:Elsevier ☑️影响因子&#xf…

双11观察:给用户的越多,用户给予的更多

这几年,双11风向倏然转变。 一个明显趋势在于,各大平台商家不再唯销量论,转而更关注消费者。今年,天猫提出要“办一届快乐的天猫双11,让用户开心地来、快乐地逛”;京东也联合了全国超40万实体门店&#xf…

【MySQL】嵌套查询—数据之旅:解析层层嵌套的迷思

🎊专栏【MySQL】 🌺每日一句:宝剑锋从磨砺出,梅花香自苦寒来 ⭐欢迎并且感谢大家指出我的问题 文章目录 嵌套查询 (1)不相关子查询(带有IN谓词的子查询) 🍔定义 🍔使用说明 🍔特点 🍔实际…

【python海洋专题三十八】海洋指数画法--折线图样式二

【python海洋专题三十八】海洋指数画法–折线图样式二 数据:AMO_index 图像展示: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像…

Centos7利用tftp与shell备份H3C设备配置

二、TFTPH3C TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,通常用于在计算机网络中传输小文件,如配置文件、固件和其他小型数据文件。TFTP被设计成一种轻量级的协议,因此相对于其他文件传输协议&…

win7电脑怎么录屏?教你一键捕捉电脑屏幕

在Win7操作系统中,录制屏幕活动是一项重要且有用的功能。不仅可以用于制作教程和演示文稿,还可以用于记录游戏过程或视频会议。可是win7电脑怎么录屏呢?在本文中,我们将介绍三种流行的Win7电脑录屏方法。通过本文,您将…

浅谈余压监控系统在某高层住宅的应用方案

【摘要】: 本文介绍了余压监控系统的基本架构和功能,结合某高层住宅建设实例分析了高层民用建筑中设置此系统的优点与必要性,总结了余压监控系统的功能用于高层建筑物中楼梯间和前室、前室和走道之间的余压的监控与调节,使监控区域…

3D可视化字母出现频率_vtkLinearExtrusionFilter

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:统计输入文本中字母出现的频率,不区分大小写,使用3D可是化方式进行显示&…

Floor报错注入理论及实战

rand()函数:随机返回0-1之间的小数 floor()函数:小数向下取证书。向上取整数ceiling() concat_ws函数:将括号内数据用第一个字段连接起来 group by子句:分组语句,常用语结合统计函数,根据一个或多个列&a…