Kubernetes 核心概念

kubernetes的对象

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

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

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

●Pod
Pod是 Kubernetes 创建或部署的最小/最简单的基本单位,一个 Pod 代表集群上正在运行的一个进程。
可以而同一 Pod 内把 Pod 理解成豌豆荚,的每个容器是一颗颗豌豆

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


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

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

 


●Pod 控制器

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

K8S 内提供了众多的 Pod 控制器,常用的有以下几种:
•Deployment:无状态应用部署。Deployment 的作用是管理和控制 Pod 和 ReplicaSet,管控它们运行在用户期望的状态中。

•ReplicaSet(rs):确保预期的 Pod 副本数量。ReplicaSet 的作用就是管理和控制 Pod,管控他们好好干活。但是,ReplicaSet 受控于 Deployment

可以理解成 Deployment 就是总包工头,主要负责监督底下的工人 Pod 干活,确保每时每刻有用户要求数量的 Pod 在工作。如果一旦发现某个工人 Pod 不行了,就赶紧新拉一个 Pod 过来替换它。而ReplicaSet 就是总包工头手下的小包工头。
从 K8S 使用者角度来看,用户会直接操作 Deployment 部署服务,而当 Deployment 被部署的时候,K8S 会自动生成要求的 ReplicaSet 和 Pod。用户只需要关心 Deployment 而不操心 ReplicaSet。


资源对象 Replication Controller(副本控制器) 是 ReplicaSet 的前身,官方推荐用 Deployment 取代 Replication Controller 来部署服务。

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

Statefulset:有状态应用部署

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

•Cronjob:周期性计划性任务
 

 

有状态:数据库,需要实时数据需要存储

无状态:nginx  tomcat  apache  不需要实时存储数据

 

●Label

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

与 Label 类似的,还有 Annotation(注释)。
区别在于有效的标签值必须为63个字符或更少,并且必须为空或以字母数字字符([a-z0-9A-Z])开头和结尾,中间可以包含横杠(-)、下划线(_)、点(.)和字母或数字。注释值则没有字符长度限制。

●Label 选择器(Label selector)
给某个资源对象定义一个 Label,就相当于给它打了一个标签;随后可以通过标签选择器(Label selector)查询和筛选拥有某些 Label 的资源对象。
标签选择器目前有两种:基于等值关系(等于、不等于)和基于集合关系(包含某个键就行)(属于、不属于、存在)。

 

●Service

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

Service 就是用来解决这个问题的核心概念。
K8S 中的 Service 并不是我们常说的“服务”的含义,而更像是网关层,可以看作一组提供相同服务的Pod的对外访问接口、流量均衡器。
Service 作用于哪些 Pod 是通过标签选择器来定义的。
在 K8S 集群中,Service 可以看作一组提供相同服务的 Pod 的对外访问接口。客户端需要访问的服务就是 Service 对象。每个 Service 都有一个固定的虚拟 ip(这个 ip 也被称为 Cluster IP),自动并且动态地绑定后端的 Pod,所有的网络请求直接访问 Service 的虚拟 ip,Service 会自动向后端做转发。(clusterIP 只能在k8s集群内部被访问到)
Service 除了提供稳定的对外访问方式之外,还能起到负载均衡(Load Balance)的功能自动把请求流量分布到后端所有的服务上,Service 可以做到对客户透明地进行水平扩展(scale)
而实现 service 这一功能的关键,就是 kube-proxy。kube-proxy 运行在每个节点上,监听 API Server 中服务对象的变化, 可通过以下三种流量调度模式 userspace(废弃)、iptables(濒临废弃)、ipvs(推荐,性能最好)来实现网络的转发。

Service 是 K8S 服务的核心,屏蔽了服务细节,统一对外暴露服务接口,真正做到了“微服务”。比如我们的一个服务 A,部署了 3 个副本,也就是 3 个 Pod; 对于用户来说,只需要关注一个 Service 的入口就可以,而不需要操心究竟应该请求哪一个 Pod。
优势非常明显:一方面外部用户不需要感知因为 Pod 上服务的意外崩溃、K8S 重新拉起 Pod 而造成的 IP 变更, 外部用户也不需要感知因升级、变更服务带来的 Pod 替换而造成的 IP 变化。

 ●Ingress

Service 主要负责 K8S 集群内部的网络拓扑,那么集群外部怎么访问集群内部呢?这个时候就需要 Ingress 了。Ingress 是整个 K8S 集群的接入层,负责集群内外通讯。
Ingress 是 K8S 集群里工作在 OSI 网络参考模型下,第7层的应用,对外暴露的接囗,典型的访问方式是 http/https。
Service 只能进行第四层的流量调度,表现形式是 ip+port。Ingress 则可以调度不同业务域、不同URL访问路径的业务流量。
比如:客户端请求 http://www.kgc.com:port  ---> Ingress ---> Service ---> Pod


●Name

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


●Namespace

随着项目增多、人员增加、集群规模的扩大,需要一种能够逻辑上隔离 K8S 内各种 “资源” 的方法,这就是 Namespace。
Namespace 是为了把一个 K8S 集群划分为若干个资源不可共享的虚拟集群组而诞生的。
不同 Namespace 内的 “资源” 名称可以相同,相同 Namespace 内的同种 “资源”,“名称” 不能相同。
合理的使用 K8S 的 Namespace,可以使得集群管理员能够更好的对交付到 K8S 里的服务进行分类管理和浏览。
K8S 里默认存在的 Namespace 有:default、kube-system、kube-public 等。
查询 K8S 里特定 “资源” 要带上相应的 Namespace。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA进阶篇教学】第十三篇:Java中volatile关键字讲解

博主打算从0-1讲解下java进阶篇教学,今天教学第十三篇:volatile关键字讲解。 在 Java 中,volatile关键字是一种轻量级的同步机制,用于确保变量的可见性和禁止指令重排序。本文将详细解释volatile关键字的工作原理、可见性保证以及…

对称加密介绍

一、什么是对称加密 对称密钥算法(Symmetric-key algorithm),又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。 对称加密的特点是,在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。 这…

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-overlay设计

目录 1. 简介 2. Overlay 设计 2.1 总体设计 2.2 MIPI 子系统 2.3 去马赛克 2.4 AXI_IIC 3. 注意事项 4. 总结 1. 简介 本文是关于《Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)-CSDN博客》的博客文章,涉及了overlay设计的Vivado工程细节。在使用PYN…

iZotope RX 11 for Mac 激活版:让您的音频焕发生机!

在追求音频完美的道路上,iZotope RX 11 for Mac是您的得力助手。它凭借先进的音频修复技术和丰富的音频增强工具,让您的音频作品焕发出前所未有的生机与活力。无论您是专业的音频工程师,还是业余的音乐爱好者,都能在这款工具中找到…

【Spring】验证 @ServerEndpoint 的类成员变量线程安全

文章目录 前言猜想来源验证方法Controller 的情况ServerEndpoint 的情况 后记 前言 最近有 websocket 的需求。探索 ServerEndpoint 的类成员变量特点。 这里类比 Controller 讨论 ServerEndpoint 类成员变量是否线程安全。 猜想来源 网上的教程大多数都这么展示程序&#…

OBS插件--音频采集

音频采集 音频采集是一款 源 插件,类似于OBS的win-capture/game-capture,允许从特定应用程序捕获音频,而不是捕获整个系统的音频。避免了因为特定音频的采集而需要引入第三方软件,而且时延也非常低。 下面截图演示下操作步骤: 首…

HCIP-Datacom-ARST自选题库_06_排障【28道题】

一、单选题 1.如果面对复杂的网络故障,并经过评估认为短时间内无法完成排障,而此时用户又急需恢复网络的可用性,那么正确的做法是? 告诉用户这是不可能实现的 不通知客户的情况下,直接搭建替代的网络环境 始终尝试排除故障&a…

前端AJAX与后台交互技术知识点及案例(续2)

以下笔记均为学习哔站黑马程序员AJAX视频所得!!! AJAX作用:浏览器和服务器之间通信,动态数据交互 axios函数 先引入axios库,可在bootcdn中寻找相关js文件或者对应的script标签 axios({url:http://hmajax…

最大子矩阵:前缀和、动态规划

最近在学习动态规划,在牛客上刷题时碰到了这一题。其实最初的想法是暴力和前缀和,但是时间复杂度极高,需要套4层循环。后来去网上搜了一下相关的题解和做法,进而了解到了前缀和+线性动态规划的做法。但是在成功做出这题…

【爬虫基础1.1课】——requests模块上

目录索引 requests模块的作用:实例引入: 特殊情况:锦囊1:锦囊2: 这一个栏目,我会给出我从零开始学习爬虫的全过程。感兴趣的小伙伴可以关注一波,用于复习和新学都是不错的选择。 那么废话不多说&#xff0c…

接搭建仿美团、代付系统源码搭建教程

最近很多粉丝催更、分享一下地球号:xiaobao0214520(WX) 现在大家都很流行搞网恋,我们搭建一个跟美团相似的系统 然后开发一个好友代付,我们在点单的时候转发链接让网恋对象付钱 若只是单点外卖的话,能榨出的油水还是太少。 所以…

Redis的数据淘汰策略——Java全栈知识(19)

Redis的数据淘汰策略 什么是数据淘汰策略 数据过期策略是 redis 中设置了 TTL 的数据过期的时候 Redis 的处理策略。数据淘汰策略是 Redis 内存不够的时候, 数据的淘汰策略:当 Redis 中的内存不够用时,此时在向 Redis 中添加新的 key, 那么…

免费思维13招之八:跨行业思维

免费思维13招之八:跨行业思维 免费思维的另一大战略思维——跨行业型思维。 跨行业型思维有两种:一种是通过跨行业,把自己的产品免费掉,从而赚取其他行业的利润。另一种是通过跨行业,把别人的主流产品免费掉,从而增大自己产品的销量。 第一种,把自己的产品免费,从而赚…

ONES 功能上新 | 近期产品新功能一览

支持在 ONES Project 中通过弹窗查看、编辑 ONES Wiki 页面。 应用场景: 当需要在 ONES Project 中查看 ONES Wiki 的页面内容时,可以直接点击工作项关联的 ONES Wiki 页面或项目文档组件中的页面,即可在 ONES Project 中通过弹窗查看 ONES W…

问题解决记录 | 内存溢出

报错截图: 处理方式: 增大PDI工具的内存 打开Spoon.bat配置文件 修改配置

【Linux 网络】网络编程套接字 -- 详解

⚪ 预备知识 1、理解源 IP 地址和目的 IP 地址 举例理解:(唐僧西天取经) 在 IP 数据包头部中 有两个 IP 地址, 分别叫做源 IP 地址 和目的 IP 地址。 如果我们的台式机或者笔记本没有 IP 地址就无法上网,而因为…

与 Apollo 共创生态:Apollo 七周年大会带我体会自动驾驶技术的发展

前言 自动驾驶技术作为当今科技领域的热门话题,吸引着无数开发者和企业的目光。而在这个风起云涌的行业中,Apollo开放平台作为自动驾驶领域的领军者之一,扮演着不可或缺的角色。七年前,当Apollo开放平台刚刚起步时,也…

STM32串口通信入门

文章目录 一、串口协议和RS-232标准,以及RS232电平与TTL电平的区别1.串口通信协议2.RS-232标准3.RS232电平与TTL电平的区别4.USB/TTL转232“模块(CH340芯片为例) 二、补充实验(一)几个常见的库函数、结构体1.时钟配置函…

java入门-面向对象的三大特性

面向对象三大特性 封装 什么是封装 封装 是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。 封装的作用 访问控制符 方法传参-值传递 传参类型是基本类型 程序案例: public static void main(St…

Spring Boot 自动装配

本篇主要介绍Spring Boot 自动装配的相关内容。 目录 一、什么是自动装配 二、Bean的扫描方式 ComponentScan Import ImportSelector接口 三、Spring Boot自动装配原理 一、什么是自动装配 在我们在创建Spring Boot项目时往往会根据项目需求,引入很多第三方…