Kubernetes核心概念

news2024/9/20 20:52:36

Kubernetes是一个工业级的容器编排平台。

Kubernetes核心功能

  • 服务发现和负载均衡。
  • 容器的自动装箱,调度(scheduling),按照容器的规格(需要的cpu和内存等)确定一个容器存放到集群中的哪一个机器上。
  • 进行自动化的容器恢复,在集群中,因为宿主机出现问题导致容器不可用,k8s会自动对不可用的容器进行恢复。
  • 应用的自动发布与应用的回滚,以及与应用相关的配置密文的管理。
  • 对job类任务做批量的执行。
  • 为了让这个集群,这个应用更富有弹性,Kubernetes 也支持水平的伸缩。

Kubernetes架构

Kubernetes架构是一个比较典型的二层架构和server-client架构 。Master作为中央管控节点,会与Node进行连接。UI和cli只和Master进行连接下发想要执行的命令和希望的状态,然后Master会把这些命令或状态下发给相应的节点,进行最终的执行。

Master

Master包含4个主要的组件:API Server、Controller、Scheduler以及etcd。

  • API Server:顾名思义是用来处理 API 操作的,Kubernetes 中所有的组件都会和 API Server 进行连接,组件与组件之间一般不进行独立的连接,都依赖于API Server进行消息的传送;
  • Controller:是控制器,它用来完成对集群状态的一些管理。比如对容器进行修复和水平扩张,是由Kubernetes中的Controller来进行完成;
  • Scheduler:是调度器,完成调度的操作, 负责把一个用户提交的 Container,依据它对CPU、对memory请求大小,找一台合适的节点,进行放置;
  • etcd:是一个分布式的一个存储系统,API Server 中所需要的这些原信息都被放置在etcd中,etcd 本身是一个高可用系统,通过 etcd保证整个Kubernetes的Master组件的高可用性。

Node

Node是真正运行业务负载的,每个业务负载会以Pod的形式运行,一个Pod中运行一个或多个容器。Node不会直接和user进行交互,只会通过Master进行交互。

  • Kubelet:运行node中Pod的组件,它通过 API Server 接收到所需要 Pod 运行的状态。
  • Container Runtime:配置容器和容器的运行环境
  • Storage Plugin:负责配置存储
  • Network Plugin:负责网络
  • Kube-proxy:进行service组网

部署一个Pod的流程:

  1. 用户可通过UI或CLI提交一个Pod给Kubernetes进行部署,首先Pod会被CLI或UI提交给Kubernetes API Server。
  2. API Server会把这个信息写入到存储系统etcd中。
  3. 之后Scheduler会通过API Server的watch或者叫做notification机制得到这个信息:有一个Pod需要被调度。
  4. 这个时候Scheduler会根据它的内存状态进行一次调度决策,在完成这次调度之后,它会向 API Server report 说:“OK!这个Pod需要被调度到某一个节点上。”
  5. API Server接收到这次操作之后,会把这次的结果再次写到etcd 中,然后API Server会通知相应的节点进行这次Pod真正的执行启动。
  6. 相应节点的kubelet会得到这个通知,kubelet就会去调Container runtime来真正去启动配置这个容器和这个容器的运行环境,去调度Storage Plugin来去配置存储,network Plugin去配置网络。

Kubernetes的核心概念和API

  • Pod 是 Kubernetes的一个最小调度以及资源单元。Pod简单来说是对一组容器的抽象,它里面会包含一个或多个容器。Pod中的多个容器共享运行环境和网络环境,Pod与Pod之间,是互相隔离的。
  • Volume是声明在Pod中的容器可访问的文件目录,可以被挂载在Pod中的一个或者多个容器的指定路径下。支持本地存储、分布式存储、云存储等多种后端存储的抽象。
  • Deployment定义一组Pod的副本数目、版本等。通过控制器自动恢复失败的Pod来维持Pod的数目,通过控制器指定的策略控制版本。
  • Service提供访问一个或多个Pod实例的稳定访问地址,支持多种访问方式实现,包括Cluster IP、nodePort、 LoadBalancer等。
  • Namespace是用来做一个集群内部的逻辑隔离的,它包括鉴权、资源管理等。
  • Kubernetes API是由HTTP+JSON组成

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

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

相关文章

创建vue3项目并引用elementui

1.创建vu3项目&#xff1a; 执行命令 npm create vuelatest 2.终端会出现如下选项&#xff0c;不确定的直接enter键进入下一步&#xff1b; 3.然后再执行下方命令&#xff1a; cd <your-project-name> npm install4.安装依赖成功后引入elementui,执行命令&#xff1a…

高压电容器的内部结构是什么样的?

高压电容器的内部结构取决于其具体的设计和用途&#xff0c;但通常包括以下主要组件&#xff1a; 电介质&#xff1a;电介质是高压电容器内部的核心部分。它通常由绝缘材料制成&#xff0c;如聚丙烯薄膜、聚酯薄膜、陶瓷或其他高绝缘性材料。电介质的选择取决于电容器的电压等级…

盘点那些有高级客服分配功能的软件系统

过去&#xff0c;很多企业虽然有服务意识&#xff0c;但并不强烈&#xff0c;现在客户需求以及团队运营的发展推动着企业在客户管理的方式上采用更有效的服务方式来应对实际的变化&#xff0c;尤其是客服行业&#xff0c;所以很多企业在客服的管理和分配上下尽了功夫&#xff0…

Unity的UI管理器

1、代码 public class UIManager {private static UIManager instance new UIManager();public static UIManager Instance > instance;//存储显示着的面板脚本&#xff08;不是面板Gameobject&#xff09;&#xff0c;每显示一个面板就存入字典//隐藏的时候获取字典中对…

【自动化测试】之PO模式介绍及案例

目录 概念 PO三层模式&#xff1a; 1. 构建基础的 BasePage 对象层 2. 构建首页的 Page 层&#xff08;操作层&#xff09; 3.构建业务层 常用断言方法&#xff1a; 4. 构建用例集&#xff0c;执行文件&#xff0c;输出自动化测试报告 测试报告模板 概念 PO&#xff08…

【C++】详解红黑树并模拟实现

前言&#xff1a; 上篇文章我们一起学习了AVL树比模拟实现&#xff0c;我们发现AVL树成功地把时间复杂度降低到了O(logN)。但是同时我们不难发现一个问题&#xff0c;在构建AVL树中我们也付出了不小的代价&#xff0c;频繁的旋转操作导致效率变低。为了解决这个问题&#xff0c…

使用Fastchat部署vicuna大模型

FastChat是一个用于训练、提供服务和评估基于大型语言模型的聊天机器人的开放平台。其核心特点包括&#xff1a; 最先进模型&#xff08;例如 Vicuna&#xff09;的权重、训练代码和评估代码。一个分布式的多模型提供服务系统&#xff0c;配备 Web 用户界面和与 OpenAI 兼容的…

算法通关村第十七关:黄金挑战-跳跃游戏问题

黄金挑战-跳跃游戏问题 1. 跳跃游戏 LeetCode 55 https://leetcode.cn/problems/jump-game/ 思路分析 关键是判断能否到达终点&#xff0c;不用管每一步跳跃到哪里&#xff0c;而是尽可能的跳跃到最远的位置 看最多能覆盖到哪里&#xff0c;只要不断更新能覆盖的距离&#x…

【狂神】Spring5笔记(一)之IOC

目录 首页&#xff1a; 1.Spring 1.1 简介 1.2 优点 2.IOC理论推导 3.IOC本质 4.HelloSpring ERROR 5.IOC创建对象方式 5.1、无参构造 这个是默认的 5.2、有参构造 6.Spring配置说明 6.1、别名 6.2、Bean的配置 6.3、import 7.DL依赖注入环境 7.1 构造器注入 …

[JAVA] byte与int的类型转换案例剖析

总结&#xff1a; ①没有byte的字面值&#xff0c;赋值时需要强制转换类型 ②涉及运算&#xff0c;系统自动进行类型升级&#xff0c;由此用final修饰&#xff0c;代表这是一个不会更改值的常量&#xff0c;通过编译 感受&#xff1a;还是用int吧&#xff0c;自动类型转换太复…

VB:顺序查找

VB&#xff1a;顺序查找 Private Sub Command1_Click()Dim i%, m%Dim x(1 To 10) As SingleFor i 1 To 10x(i) Val(InputBox("请输入"))Next im seqSearch(x, 10)If (m 1) ThenPrint "已找到"ElsePrint "未找到"End If End Sub Function se…

为什么在线客服系统的消息撤回功能是有必要的?

如今在日常工作和沟通中&#xff0c;很多企业都在使用在线客服系统跟客户进行线上交流和协作。然而有时候客服可能会不小心发送错误的消息或包含敏感信息的消息&#xff0c;人们在现实的沟通交流中是不会真实存在“说出去的话还能收回来”的情况&#xff0c;但这是在网络上&…

thinkphp开启定时任务的三种办法(最全)

第一种方法 使用think-cron类库 //composer 安装 composer require yunwuxin/think-cron github文档地址 https://github.com/yunwuxin/think-cron 1.创建任务类 <?php namespace app\task; use yunwuxin\cron\Task; class DemoTask extends Task { public function …

【从入门到起飞】JavaSE—File的使用,构造方法,成员方法

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【The truth that you leave】 &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &#x1f354;File概述&#x1f354;File构造方法⭐根据文件路径…

el-carousel-item轮播一个swiper显示多个卡片数据

效果图&#xff1a; 图片路径均为假地址&#xff0c;需自行替换&#xff0c;1rem100px&#xff0c;可自行转换成px <template><div class"exhibitors page-item-blue-bg"><comItemTitle :titleInfo"titleInfo"> </comItemTitle>…

如何评估需求优先级?

项目的需求来源有很多方面&#xff0c;最终由产品经理整理出来哪些要做&#xff0c;哪些不做。我前面说过需求评审时&#xff0c;要讲清楚这次版本的目的是什么。这些要做的功能就是达成目的的手段。 一般情况下&#xff0c;我们都默认产品或技术总监给需求定优先级。比如优先…

微信小程序被坑记录

web-view组件 你想要使用它&#xff0c;必须必须要配置 开发管理->开发设置->业务域名 线上版本 wx.saveImageToPhotosAlbum 调用失败 前几天还能用&#xff0c;今天一试&#xff0c;妈耶&#xff0c;除了线上版本都能用。真的头大&#xff0c;线上版本咋看报错嘛 线…

Ei Scopus检索 | 2024年第四届能源与环境工程国际会议(CoEEE 2024)

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间&#xff1a;2023年5月22日-24日 召开地点&#xff1a;意大利米兰 大会官网&#xff1a;www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开&#xff0c;为研究人员、…

深度学习Tensorflow: CUDA_ERROR_OUT_OF_MEMORY解决办法

目前在用深度学习训练&#xff0c;训练中设置batch size后可以正常跑通&#xff0c;但是在训练一轮save_model时&#xff0c;总出现这个错误&#xff0c;即使我调batch size到1也依旧会报错。 发现是在 调用logger时出现问题。 查询后了解到是因为TensorFlow中的eager_executi…

VSCode学习笔记一:添加代码模板

一目了然 1 简述2 设置模板3 Global Snippets file示例 1 简述 问&#xff1a;为什么要设置代码模板&#xff1f; 答&#xff1a;编程语言是有个性的&#xff0c;不同语言的演讲风格是不一样的。 旁白&#xff1a;我不懂&#xff1f;&#xff01; 问&#xff1a;为什么要设置…