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

news2024/10/7 5:52:34

目录

一、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 会通过一系列的控制器对对应对象进行管理,让对象尽可能的让实际状态与期望状态重合。

四、感谢支持

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

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

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

相关文章

基于springboot+vue的梦幻玩具乐园的设计与实现(在线购物平台)

需要源码和论文的小伙伴可以私信博主(有偿) ​​​​​课题目的与意义 随着互联网的不断普及与在线销售平台的迅猛发展,在线购物日益受到广大消费者的青睐与追捧。通过构建基于Spring BootVue的在线玩具商城,可以为玩具制造商、…

STM32之三:中断外部中断

目录 1. 什么是中断 1.1 中断概念 1.2 中断优先级 1.3 中断嵌套 2.STM32中断 2.1 NVIC中断优先级 3 外部中断 3.1 EXTI简介 3.2 EXTI中断/事件线 3.3 EXTI功能框图 3.4 中断和事件的区别? 3.5 什么时候用外部中断? 3.怎么使用STM32中断 3.…

1、Python编程入门:从硬件基础到解释器类型

Python是一种免费、开源、跨平台、动态、面向对象的编程语言。它以其简洁易读的语法和强大的功能而闻名,广泛应用于各种领域,如Web开发、数据分析、人工智能等。本文将介绍Python的基本概念、执行方式以及常用的Linux命令,帮助初学者快速入门…

用英文介绍伦敦:London The Empire MEGACITY

London: The Empire MEGACITY Link: https://www.youtube.com/watch?vZM7TBKD3a5U London is the capital of the United Kingdom and was the world’s largest city until 1925. Once the center of the massive British Empire, it is now a mature, well-planned metrop…

基于高度的纹理混合shader

基于高度的纹理混合shader 原文:基于高度的纹理混合shader - 知乎 (zhihu.com) 最近支持一个使用unity2021的项目,发现urp自带的Terrain/Lit shader已经自带高度混合了,看了下和我当初写的那个基本差不多,感觉稍微要比我的严谨一…

刷代码随想录有感(118):动态规划——打家劫舍II

题干&#xff1a; 代码&#xff1a; class Solution { public:int solve(vector<int>& nums, int start, int end){if(start end)return nums[start];if(nums.size() 0)return 0;if(nums.size() 1)return nums[0];vector<int>dp(nums.size(), 0);dp[start]…

vscode连接SSH

1、安装Remote-SSH插件 2、点击左下角&#xff0c;选择SSH 3、点击连接到主机后&#xff0c;添加新的SSH主机&#xff0c;示例ssh 用户ip 4、点击服务器&#xff0c;输入密码登录服务器 5、可在远程资源管理器选项卡中查看 6、可以在ssh设置中打开ssh配置文件 config中的文件…

Bad attr `class` with message: unexpected ```

小程序不支持模板字符串吗&#xff1f; | 微信开放社区 小程序不支持模版字符串。。。

一个项目学习Vue3---创建一个 Vue 应用

步骤1&#xff1a;安装符合要求的node版本 目前官网要求使用的node.js版本为18.3及其以上 所以我们要安装node.js 18.3及其以上版本 NVM安装教程&#xff1a;一个项目学习Vue3---NVM和NPM安装-CSDN博客 若不想安装NVM&#xff0c;可以直接下载适合自己的node版本Node.js — …

3D资产爆发,轻量化需求再度冲高,见证下一代3D崛起!

数字经济不断发展&#xff0c;3D资产和实体经济迎来深度融合的窗口期&#xff0c;3D资产应用外延催生大量新场景、新业态&#xff0c;一个3D资产构建的数字世界正出现在我们眼前。 数字经济不断发展&#xff0c;3D资产和实体经济迎来深度融合的窗口期&#xff0c;3D资产应用外…

django restframework 多对多模型 —— python

模型 图书和作者是多对多关系 class Book(models.Model):book_namemodels.CharField(max_length40)pricemodels.DecimalField(max_digits4,decimal_places2)publishmodels.ForeignKey(to"Publish",on_deletemodels.CASCADE,related_name"publish")authorm…

odoo 去掉在线聊天的删除和编辑内容

描述 odoo在线聊天功能中,在原有的聊天记录中是可以进行编辑和删除的 这使得产生很多不可控原因,乱改,乱删等 所以要进行屏蔽此功能 优化前 优化后 升级 mail 模块刷新即可。 <Dropdown t-if="messageActions.actions.length gt quickActionCount"onStateCha…

英伟达连跌3日,传字节与博通合作研发AI芯片,讯飞星火V4.0周四发布

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 每日行业新闻 1、英伟达单日下跌6.7%&#xff0c;拖累标普500指数和纳指走低 昨夜&#xff0c;英伟达暴跌6.7%&#xff0c;创两个月以来最大单日跌幅&#xff0c;为连续三个交易日下跌&#xff0c;市…

Spring的jar包下载(最新版6.0版本)

1.在Spring官网的projects下面点击spring-framework 2.进入github官网 3.进入github后往下滑&#xff0c;点击Spring Framework Artifacts 4.往下滑找到 点击 5.在左边先点击Artifacts&#xff0c;在右边找到 libs-snapshot&#xff0c;展开libs-snapshot&#xff08;之前其他…

1变3裂变营销,七星创客模式,推三返一模式解析

推三返一模式的出现让我们看到&#xff0c;在商业竞争中&#xff0c;创新的商业模式与良好的产品服务相结合&#xff0c;才能真正赢得市场和消费者的心。 推三返一又称为“三三循环”模式&#xff0c;是一种简单粗暴的营销模式&#xff0c;消费者通过直接推荐三个新用户到平台消…

AI软件革新文本操作体验:从自动粘贴文本到一键提取保存手机号码

在当今数字化时代&#xff0c;AI技术的快速发展为各行各业带来了革命性的变革。特别是在文本处理领域&#xff0c;AI软件通过其强大的自动粘贴文本功能以及一键提取并保存手机号码的便捷操作&#xff0c;极大地提高了工作效率&#xff0c;为用户带来了全新的体验。本文将深入探…

【探索Linux】P.35(传输层 —— UDP协议)

阅读导航 引言一、UDP协议端格式二、UDP的特点三、UDP的缓冲区四、基于UDP的应用层协议温馨提示 引言 在上一篇文章中&#xff0c;我们深入探讨了网络协议的应用层&#xff0c;揭示了各种协议如何协同工作以确保信息在网络中正确、高效地传递。从HTTP到FTP&#xff0c;每一层协…

在 PMP 考试中,项目管理经验不足怎么办?

在项目管理的专业成长之路上&#xff0c;PMP认证如同一块里程碑&#xff0c;标志着从业者的专业水平达到了国际公认的标准。然而&#xff0c;对于那些项目管理经验尚浅的考生来说&#xff0c;这座里程碑似乎显得有些遥不可及。那么&#xff0c;在PMP考试准备中&#xff0c;项目…

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用 基本页面&#xff1a; 分为上传文件和编辑的页面 代码实现要点&#xff1a; 上传文件页面&#xff1a; 点开选择范围弹窗&#xff0c;三个radio单选框都为可选状态&#xff0c;默认显示的是第一个单选框&#xff08;按…

邮件推送怎么设计吸引邮件内容?有何策略?

邮件推送在营销策略中的作用&#xff1f;如何评估邮件推送效果&#xff1f; 设计吸引人的邮件内容不仅可以提高打开率&#xff0c;还能促进用户的积极参与和转换。AokSend将探讨如何设计吸引人的邮件推送内容&#xff0c;以确保您的邮件不被忽略&#xff0c;并能够有效传达您的…