当前位置: 首页 > news >正文

1.k8s:架构,组件,基础概念

目录

一、k8s了解

1.什么是k8s

2.为什么要k8s

(1)部署方式演变

(2)k8s作用

(3)Mesos,Swarm,K8S三大平台对比

二、k8s架构、组件

1.k8s架构

2.k8s基础组件

3.k8s附加组件

三、k8s基础概念

1.服务的分类

(1)无状态

(2)有状态

2.资源的分类

(1)元数据型

*1)Horizontal Pod Autoscaler(HPA)

*2)Pod Template

*3)LimitRange

(2)集群级

*1)Namespace

*2)Node

*3)ClusterRole

*4)ClusterRoleBinding

(3)命名空间级pod型资源

*1)适用于无状态服务的pod型资源

^1) 副本

^2)Replication Controller (RC)

^3)ReplicaSet(RS)

^4)Deployment controller

*2)适用于有状态服务的pod型资源(StatefulSet )

^1) 主要特点

^2) Headless Service

^3)volumeClaimTemplate

^4)注意事项

*3)守护进程(DaemonSet)

*4)任务/定时任务

3.服务发现

(1)service

(2)Ingress

4.存储

(1)Volume

(2)CSI

5.特殊类型配置

(1)ConfigMap

(2)Secret

(3)DownwardAPI

(4)Role

(5)RoleBinding

6.规约(spec)

7.状态(Status)

四、感谢支持


前面我们有了解过一些k8s,但是那个版本比较老,因此会产生很多的bug和不兼容的问题以及依赖或者链接丢失的问题,我们用比较新的版本重头学一遍k8s。

一、k8s了解

1.什么是k8s

k8s是管理容器化应用的平台,且能够管理云平台多主机,能让我们容器化部署更高效更容易。

2.为什么要k8s

(1)部署方式演变

传统服务:

环境不隔离,并发修改,内存、cpu、带宽资源争抢

虚拟化部署:

虚拟机占用过多,扩展也不大好扩展

容器化部署:

大大缩短容器生命周期

(2)k8s作用

当容器生命周期大大缩短之后,ip、数据可能就会不稳定就需要k8s去管理他们:

  • 自我监控,自我修复
  • 弹性伸缩
  • 自动部署和回滚
  • 服务发现、负载均衡
  • 配置管理
  • 存储编排:存储资源抽象成虚拟磁盘,然后虚拟磁盘映射物理磁盘
  • 批处理

(3)Mesos,Swarm,K8S三大平台对比

Mesos:

主要用于资源管理,发布最早,能管理5W+机器。主要面向节点,而非面向容器。

Docker Swarm:

docker官方都不用了,无缝集成docker,用于节点不多,简单的业务场景。

k8s:

复杂容器管理。

二、k8s架构、组件

1.k8s架构

一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。

master:集群的控制平面,负责集群的决策 ( 管理 )

  • ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
  • Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上
  • ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等。
  • Etcd :负责存储集群中各种资源对象的信息

node:集群的数据平面,负责为容器提供运行环境 ( 干活 )

  • Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
  • KubeProxy : 负责提供集群内部的服务发现和负载均衡
  • Container runtime:负责镜像管理以及 Pod 和容器的真正运行

下面,以部署一个nginx服务来说明kubernetes系统各个组件调用关系:

  1. 首先要明确,一旦kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中
  2. 一个nginx服务的安装请求会首先被发送到master节点的apiServer组件
  3. apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上
  4. 在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知apiServer
  5. apiServer调用controller-manager去调度Node节点安装nginx服务
  6. kubelet接收到指令后,会通知docker,然后由docker来启动一个nginx的pod
  7. pod是kubernetes的最小操作单元,容器必须跑在pod中
  8. 至此,一个nginx服务就运行了,如果需要访问nginx,就需要通过kube-proxy来对pod产生访问的代理
  9. 这样,外界用户就可以访问集群中的nginx服务了

2.k8s基础组件

  • Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控
  • Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行
  • Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
  • Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等
  • Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod
  • Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
  • NameSpace:命名空间,用来隔离pod的运行环境

3.k8s附加组件

  • kube-dns:负责为整个集群提供 DNS 服务
  • Ingress Controller: 为服务提供外网入口
  • Prometheus :提供资源监控
  • Dashboard :提供 GUI
  • Federation :提供跨可用区的集群
  • Fluentd-elasticsearch :提供集群日志采集、存储与查询

三、k8s基础概念

1.服务的分类

(1)无状态

代表应用:Nginx、Apache

优点:对客户端透明,无依赖关系,可以高效实现扩容、迁移

缺点:不能存储数据,需要额外的数据服务支撑

(2)有状态

代表应用:MySQL、Redis

优点:可以独立存储数据,实现数据管理

缺点:集群环境下需要实现主从、数据同步、备份、水平扩容复杂

2.资源的分类

(1)元数据型

*1)Horizontal Pod Autoscaler(HPA)

用于Pod 自动扩容:可以根据 CPU 使用率或自定义指标(metrics)自动对 Pod 进行扩/缩容

  • 每隔30s查询metrics的资源使用情况
  • 支持的metrics:预定义metrics、自定义的Pod metrics、自定义的object metrics
  • metrics查询方式:Heapster、自定义的REST API

*2)Pod Template

控制器通过 Pod Template 信息来创建 Pod。

*3)LimitRange

批量设置了某一个范围内(某个命名空间)的 Pod 的资源使用限制

(2)集群级

*1)Namespace

用于实现多团队/环境的资源隔离。

*2)Node

Node 本质上不是Kubernetes 来创建的,Kubernetes 只是管理 Node 上的资源。

*3)ClusterRole

ClusterRole 是一组权限的集合,可以进行鉴权。

*4)ClusterRoleBinding

将 Subject 绑定到 ClusterRole、使规则在所有命名空间中生效。

(3)命名空间级pod型资源

*1)适用于无状态服务的pod型资源
^1) 副本

一个 Pod 可以被复制成多份,每一份可被称之为一个副本

^2)Replication Controller (RC)

RC 可以保证在任意时间运行的 Pod 的副本数量总是可用的,它实现了 Pod 的高可用性。

^3)ReplicaSet(RS)

RS主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。

注:​Kubernetes 官方建议使用 RS替代 RC进行部署

^4)Deployment controller

Deployment 为 Pod 和 RS 提供声明式更新,你只需要在 Deployment 中描述你想要的目标状态是什么,Deployment controller 就会帮你将 Pod 和 Replica Set 的实际状态改变到你的目标状态。

Deployment controller可以用来创建 Replica Set / Pod

*2)适用于有状态服务的pod型资源(StatefulSet )
^1) 主要特点
  • 稳定的持久化存储

  • 稳定的网络标志

  • 有序部署,有序扩展。有序收缩,有序删除

^2) Headless Service

用于定义网络标志(DNS domain)。

Domain Name Server:域名服务,将域名与 ip 绑定映射关系
 

^3)volumeClaimTemplate

用于创建 PersistentVolumes

^4)注意事项
  • 有状态的pod型,kubernetes v1.5 版本以上才支持
  • 所有Pod的Volume必须使用PersistentVolume或者是管理员事先创建好

  • 为了保证数据安全,删除StatefulSet时不会删除Volume

  • StatefulSet 需要一个 Headless Service 来定义 DNS domain,需要在 StatefulSet 之前创建好

*3)守护进程(DaemonSet)

DaemonSet 保证会在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用

*4)任务/定时任务

有一次性任务和定时任务。

3.服务发现

(1)service

Pod 不能直接提供给外网访问,而是应该使用 service。Service 就是把 Pod 暴露出来提供服务

(2)Ingress

Ingress 可以提供外网访问 Service 的能力。可以把某个请求地址映射、路由到特定的 service。

ingress 需要配合 ingress controller 一起使用才能发挥作用,ingress 只是相当于路由规则的集合而已,真正实现路由功能的,是 Ingress Controller,ingress controller 和其它 k8s 组件一样,也是在 Pod 中运行。

4.存储

(1)Volume

数据卷,共享 Pod 中容器使用的数据。用来放持久化的数据,比如数据库数据。

(2)CSI

CSI 规范定义了存储提供商实现 CSI 兼容的 Volume Plugin 的最小操作集和部署建议,是一种规范

5.特殊类型配置

(1)ConfigMap

用来放配置, ConfigMap 放的是明文的数据

(2)Secret

用来放配置, Secret放的是密文的数据

(3)DownwardAPI

让 pod 里的容器能够直接获取到这个 pod 对象本身的一些信息。

(4)Role

Role 是一组权限的集合

(5)RoleBinding

Subject 绑定到 Role,RoleBinding 使规则在命名空间内生效。

6.规约(spec)

描述了对象的期望状态(Desired State)—— 希望对象所具有的特征。当创建 Kubernetes 对象时,必须提供对象的规约,用来描述该对象的期望状态,以及关于对象的一些基本信息

7.状态(Status)

k8s 会通过一系列的控制器对对应对象进行管理,让对象尽可能的让实际状态与期望状态重合。

四、感谢支持

感谢各位大佬支持,如果觉得满意可以请喝一杯咖啡吗:

相关文章:

1.k8s:架构,组件,基础概念

目录 一、k8s了解 1.什么是k8s 2.为什么要k8s (1)部署方式演变 (2)k8s作用 (3)Mesos,Swarm,K8S三大平台对比 二、k8s架构、组件 1.k8s架构 2.k8s基础组件 3.k8s附加组件 …...

动态规划基础练习

我们需要先从数组较大的开始进行处理&#xff0c;每次考察上下左右的&#xff0c;比较当前存储的最大值和转移来的值&#xff0c;哪一个大一点 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;int n, m; int a[105][105]; int addx[] { 0,…...

基于Java的地方废物回收机构管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;MIS的总体思想&#xff0c;MySQL数据库 工具&#xff1a;Eclipse&#xff0c;…...

Leetcode 450:删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a; 首先…...

Go 中使用map时注意的问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

english-works

前奏&#xff08;prelude&#xff09;&#xff1a; To build up our body, our school sports meeting was held on our play ground last Thursday. All the students in my class took an active part in sports meeting. It began with an opening ceremony on the play g…...

Kubernetes面试整理-如何利用PodSecurityPolicies来提高集群的安全性?

PodSecurityPolicy (PSP) 是 Kubernetes 中用于定义和控制 Pod 安全配置的策略。通过 PSP,可以设置对 Pod 的一些安全约束条件,从而提高集群的安全性。虽然 PSP 从 Kubernetes 1.21 开始已被弃用,并在 1.25 版本中移除,但在一些旧版 Kubernetes 集群中,PSP 仍然是一个重要…...

YOLO网络结构特点收录

YOLO网络结构特点收录 YOLO&#xff08;You Only Look Once&#xff09;网络结构随着版本迭代不断进化&#xff0c;以下是一些关键版本的网络结构特点概述&#xff1a; YOLOv1 输入&#xff1a;将图像调整至固定尺寸&#xff0c;如448x448像素。骨干网络&#xff1a;初期版本…...

人生最有力,最棒的十句话!

人生最有力&#xff0c;最棒的十句话 1、允许一切事发生&#xff0c;所有一切发生的事不是你能阻挡了的&#xff0c;你接受&#xff0c;他也发生&#xff0c;你不接受&#xff0c;他也发生&#xff0c;你还不如坦然面对接受现实。 2、你焦虑的时候千万不要躺着啥也不干&#xf…...

ASUS华硕A豆14笔记本电脑I421EAYB,I421EQYB_ADOL14EA工厂模式原厂Win11系统安装包下载

适用型号&#xff1a;ADOL14EA笔记本I421EAYB、I421EQYB 链接&#xff1a;https://pan.baidu.com/s/1krU8m_lbApyUfZQo5E4cCQ?pwd0ewl 提取码&#xff1a;0ewl 华硕原装WIN11系统工厂安装包&#xff0c;带有MyASUS WinRE RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系…...

丙酮传感器TGS1820在呼吸气体丙酮含量分析检测中的应用

随着科技的进步&#xff0c;无创检测技术逐渐成为医疗保健领域的新宠。其中&#xff0c;基于呼吸气体的分析检测技术以其独特的优势受到了广泛关注。呼吸气中的挥发性有机化合物&#xff08;VOCs&#xff09;不仅为研究者们提供了关于人体健康状态的宝贵信息&#xff0c;而且它…...

全国今日油价查询-全国今日油价查询接口-API接口

关于油价的信息&#xff0c;以下是详细的分点表示和归纳&#xff1a; 最新油价调整&#xff1a; 时间&#xff1a;2024年6月28日0时 调整内容&#xff1a;汽油价格上调210元/吨&#xff0c;柴油价格上调200元/吨。 涨幅&#xff1a;加油站油价上涨0.16元/升-0.20元/升。 具体油…...

MT1568 学生成绩

题目 有3个学生&#xff0c;每个学生有3门课的成绩&#xff0c;从键盘输入数据&#xff0c;包括学号、姓名、三门课成绩&#xff0c;学号整型&#xff0c;姓名字符型&#xff0c;成绩实型&#xff0c;计算3门课程总平均成绩&#xff0c;以及平均分最高的学生信息。不考虑非法成…...

医院消防设施设备管理系统

医院为人员密集场所&#xff0c;且多为各类病患及其陪护人员&#xff0c;一旦发生火灾&#xff0c;人员疏散逃生困难&#xff0c;容易造成较严重的生命与财产损失。为规范医院的消防设施设备管理&#xff0c;通过凡尔码系统对医院消防设施设备进行信息化管理&#xff0c;提高医…...

[Go 微服务] go-micro + consul 的使用

文章目录 1.go-micro 介绍2.go-micro 的主要功能3.go-micro 安装4.go-micro 的使用4.1 创建服务端4.2 配置服务端 consul4.3 生成客户端 5.goodsinfo 服务5.1 服务端开发5.2 客户端开发 1.go-micro 介绍 Go Micro是一个简化分布式开发 的微服务生态系统&#xff0c;该系统为开…...

嵌入式网页服务实现

嵌入式网页服务的实现方式主要可以归纳为以下几种&#xff1a; 单片机Webchip网关&#xff1a; Webchip&#xff1a;作为专用网络接口芯片&#xff0c;独立于单片机与网关&#xff0c;通过SPI接口与MCU进行指令交互&#xff0c;并通过RS232、USB、Modem等接口与PC作为网关进行通…...

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--&#xff08;最大外接矩形&#xff09; 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法&#xff08;这个很好玩&#xff0c;可以识别在动的物体&#xff09; 边…...

java TCP服务器与客户端通信示例

目录 背景: TCP服务代码解析: TCP服务器的代码: 服务器程序的工作流程: TCP客户端代码解析 : TCP客户端代码: 客户端工作流程: 总结: 背景: 如何使用Java编程语言实现一个简单的TCP服务器和客户端。那么TCP是什么?TCP&#xff08;Transmission Control Protocol&…...

【C++】构造函数和析构函数

目录 对象初始化-构造函数构造函数的分类构造函数的调用拷贝构造的应用构造函数调用规则深拷贝和浅拷贝初始化列表类对象作为类成员静态成员 对象释放-析构函数 对象初始化-构造函数 构造函数是类实例化的时候会自动调用的初始化函数&#xff0c;如果用户不写编译器会提供一个…...

Docker Compose:多容器应用的管理利器

在现代应用开发中&#xff0c;微服务架构已成为主流。管理和编排多个容器应用变得至关重要。Docker Compose 是一个强大的工具&#xff0c;通过一个简单的 YAML 文件定义和运行多容器应用。本文将详细介绍 Docker Compose 的基本概念、安装、用法以及一个实际的示例&#xff0c…...

Leetcode - 133双周赛

目录 一&#xff0c;3190. 使所有元素都可以被 3 整除的最少操作数 二&#xff0c;3191. 使二进制数组全部等于 1 的最少操作次数 I 三&#xff0c;3192. 使二进制数组全部等于 1 的最少操作次数 II 四&#xff0c;3193. 统计逆序对的数目 一&#xff0c;3190. 使所有元素都…...

C++总结

...

汽车免拆诊断案例 | 2016 款吉利帝豪EV车无法加速

故障现象 一辆2016款吉利帝豪EV车&#xff0c;累计行驶里程约为28.4万km&#xff0c;车主反映车辆无法加速。 故障诊断 接车后路试&#xff0c;行驶约1 km&#xff0c;踩下加速踏板&#xff0c;无法加速&#xff0c;车速为20 km/h左右&#xff0c;同时组合仪表上的电机及控制…...

前端开发之webpack

安装与入门超详细&#xff01;webpack入门教程(一)-腾讯云开发者社区-腾讯云...

将内容复制到剪贴板?分享 1 段优质 JS 代码片段!

大家好&#xff0c;我是大澈&#xff01; 本文约 600 字&#xff0c;整篇阅读约需 1 分钟。 每日分享一段优质代码片段。 今天分享一段 JS 代码片段&#xff0c;使用 Clipboard API 实现将内容复制到剪贴板。 老规矩&#xff0c;先阅读代码片段并思考&#xff0c;再看代码解析…...

MAS0902量产工具分享,MAS0902A开卡教程,MAS0901量产工具下载

MAS0902和MAS1102都是基于SATA3.2技术开发的DRAM-less SSD控制芯片&#xff0c;简单来说就是SATA协议无缓存主控。下面是我摸索的麦光黑金300 240G SSD开卡修复简易教程&#xff0c;也就是MAS0902量产过程&#xff1a; 注意&#xff1a;开卡转接线必须要用ASM1153E或JMS578主控…...

从我邮毕业啦!!!

引言 时间过的好快&#xff0c;转眼间就要从北邮毕业了&#xff0c;距离上一次月度总结又过去了两个月&#xff0c;故作本次总结。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络&#xff0c;欢迎Star&#xff01; 毕业&#x1f393; 6月1号完成了自己的…...

gemini 1.5 flash (node项目)

https://www.npmjs.com/package/google/generative-ai https://ai.google.dev/pricing?hlzh-cn https://aistudio.google.com/app/apikey https://ai.google.dev/gemini-api/docs/models/gemini?hlzh-cn#gemini-1.5-flash https://ai.google.dev/gemini-api/docs/get-started…...

在线字节大端序小端序转换器

具体请前往&#xff1a;在线字节大端序小端序转换器...

css_17_背景属性鼠标属性

一.背景属性 -属性值&#xff1a;background-color&#xff08;设置背景颜色&#xff09; 默认背景颜色是 transparent。 -属性值&#xff1a;background-image&#xff08;设置背景图片&#xff09; url&#xff08;图片的地址&#xff09; -属性值&#xff1a;background-re…...