k8s,声明式API对象理解

news2024/12/26 14:59:05

命令式API
比如:
在这里插入图片描述
先kubectl create,再replace的操作,我们称为命令式配置文件操作
kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一个对原有API对象的PATCH操作。
kube-apiserver在响应命令式请求(比如,kubectl replace)的时候,一次只能处理一个写请求,否则会有产生冲突的可能。而对于声明式请求(比如,kubectl apply),一次能处理多个写操作,并且具备Merge能力。
在这里插入图片描述

什么是API对象

要快速掌握 Kubernetes (k8s) 中 API 对象的核心知识,以下是最重要的20%,这将帮助你理解和操作80%的 k8s 功能:

  1. API对象的概念

    • API对象是 k8s 集群中的管理操作单元,每支持一项新功能,就会引入对应的API对象。
    • API对象具有三大类属性:元数据(metadata)、规范(spec)和状态(status)
      • 元数据(metadata):用于标识API对象,包括namespace、name和uid,以及用于匹配不同对象的标签(labels)。
      • 规范(spec):描述对象的期望状态(Desired State),即用户希望对象所具有的特征。
      • 状态(status):描述对象的实际状态(Actual State),由 Kubernetes 系统提供和更新。
  2. API对象的管理方式

    • 使用 kubectl 工具,可以通过命令式命令、命令式对象配置和声明式对象配置三种方式管理API对象。
  3. 标签(Label)和选择器(Selector)

    • 标签是识别 Kubernetes 对象的标签,以 key/value 的方式附加到对象上。
    • 选择器用于选择具有特定标签的一组对象。
  4. API 组和版本

    • Kubernetes API 遵循 OpenAPI 规范,并以端点 /openapi/v2 提供 API 规范。
    • API 组和版本是 Kubernetes API 的重要概念,不同的功能模块被划分为不同的 API 组。
  5. 核心API对象

    • Pod:k8s中的基本部署单元,可以包含一个或多个容器。
    • Node:k8s中的工作节点,负责运行Pod。
    • Master:集群控制节点,负责整个集群的管理和控制。
    • Deployment:用于描述应用的部署状态,包括应用的副本数、更新策略等。
    • Service:定义了一种访问Pod的方式,可以是ClusterIP、NodePort、LoadBalancer等。
  6. API 交互

    • Kubernetes 支持 application/jsonapplication/yaml 媒体类型用于请求和响应。
    • 客户端可以通过设置 Accept 头部来请求服务器以表格形式返回对象。

掌握这些核心概念和操作,将为你在 Kubernetes 中管理复杂的应用和服务打下坚实的基础。


Istio项目

  • 困难
    当一个Pod或者任何一个API对象被提交给APIServer之后,总有一些“初始化”性质的工作需要在它们被Kubernetes项目正式处理之前进行。比如,自动为所有Pod加上某些标签
    “初始化”操作的实现,借助的是一个叫作Admission的功能。它其实是Kubernetes项目里一组被称为Admission Controller的代码,可以选择性地被编译进APIServer中,在API对象创建之后会被立刻调用到
    如果你现在想要添加一些自己的规则到Admission Controller,就会比较困难。因为,这要求重新编译并重启APIServer

  • Istio流程
    在它对应的API对象里自动加上Envoy容器的配置
    编写一个用来为Pod“自动注入”Envoy容器的Initializer
    ConfigMap的data部分,正是一个Pod对象的一部分定义
    Initializer要做的工作,就是把这部分Envoy相关的字段,自动添加到用户提交的Pod的API对象
    在Initializer更新用户的Pod对象的时候,必须使用PATCH API来完成
    Istio将一个编写好的Initializer,作为一个Pod部署在Kubernetes中
    事先编写好的“自定义控制器”(Custom Controller)
    Kubernetes还允许你通过配置,来指定要对什么样的资源进行这个Initialize操作:InitializerConfiguration
    这也就意味着,当你在Initializer里完成了要做的操作后,一定要记得将这个metadata.initializers.pending标志清除掉。这一点,你在编写Initializer代码的时候一定要非常注意

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

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

相关文章

【北京迅为】iTOP-4412全能版使用手册-第三十五章 WEB控制LED

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github),也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制,导致难以回答类似"How does the rise of electric vehi…

分布式cap

P(分区安全)都能保证,就是在C(强一致)和A(性能)之间做取舍。 (即立马做主从同步,还是先返回写入结果等会再做主从同步。类似的还有,缓存和db之间的同步。&am…

AD7606使用方法

AD7606是一款8通道最高16位200ksps的AD采样芯片。5V单模拟电源供电,真双极性模拟输入可以选择10 V,5 V两种量程。支持串口与并口两种读取方式。 硬件连接方式: 配置引脚 引脚功能 详细说明 OS2 OS1 OS2 过采样率配置 000 1倍过采样率 …

[VUE]框架网页开发02-如何打包Vue.js框架网页并在服务器中通过Tomcat启动

在现代Web开发中,Vue.js已经成为前端开发的热门选择之一。然而,将Vue.js项目打包并部署到生产环境可能会让一些开发者感到困惑。本文将详细介绍如何将Vue.js项目打包,并通过Tomcat服务器启动运行。 1. 准备工作 确保你的项目能够正常运行,项…

服务器与普通电脑有什么区别?

服务器和普通电脑(通常指的是个人计算机,即PC)有众多相似之处,主要构成包含:CPU,内存,芯片,I/O总线设备,电源,机箱及操作系统软件等,鉴于使用要求…

2.2 线性表的顺序表示

2.2.1 顺序表的定义 一、顺序表的基本概念 线性表的顺序存储又称顺序表。 它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的连个元素在物理上也相邻。 第1个元素存储在顺序表的起始位置,第i个元素存储位置后面紧接着存…

游戏引擎学习第30天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中,重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾:在第30天,回顾了前一天的工作,并提到今天的任务是继续从第29天的代码开始&#xff0c…

探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧

路由的选择 HarmonyOS提供两种路由实现的方式,分别是 Router 和 NavPatchStack。两者使用场景和特效各有优劣。 组件适用场景特点备注Router模块间与模块内页面切换通过每个页面的url实现模块间解耦NavPathStack模块内页面切换通过组件级路由统一路由管理 什么时候使…

每日计划-1203

1. 完成 236. 二叉树的最近公共祖先 ​ /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution {public:TreeNode* lowe…

【AI系统】Auto-Tuning 原理

Auto-Tuning 原理 在硬件平台驱动算子运行需要使用各种优化方式来提高性能,然而传统的手工编写算子库面临各种窘境,衍生出了自动生成高性能算子的的方式,称为自动调优。在本文我们首先分析传统算子库面临的挑战,之后介绍基于 TVM…

多组学数据如何发表高分SCI论文,以RNA-Seq数据为例

随着高通量测序以及生物信息学的发展,R语言在生物大数据分析以及数据挖掘中发挥着越来越重要的作用。想要成为一名优秀的生物数据分析者与科研团队不可或缺的人才,除了掌握对生物大数据挖掘与分析技能之外,还要具备一定的统计分析能力与SCI论…

攻防世界-easyupload-新手训练区域

赛前回顾 1.文件上传绕过方式 1.mime:可以通过关闭浏览器js,浏览器f12切断点,burp抓包该文件类型来绕过 2.双写php绕过pphphp或者phpphp 3.使用ptml来绕过,phtml也是通过php来解析的 4..htaccess绕过,这个是apache的解…

位图的学习

一,位图介绍 位图(Bitmap)是一种用于存储图像的方式,它通过二维矩阵(由像素组成)来表示图像的每一个细节。每个像素通常对应一个特定的颜色值,位图的每个“位”就代表了图像的一个像素。 位图…

正则化(Regularization)

正则化(Regularization)是机器学习和统计建模中用来防止过拟合的一种技术。当模型过于复杂,例如拥有过多的参数或层级时,它可能会在训练数据上表现得非常好,但对未见过的数据(即测试数据或真实世界的数据&a…

集成网关 -- 新节点的开发说明

在node-red中,nVisual节点可以帮助我们更快快简捷的完成新的功能,今天我来分享一下关于node-Red中关于nVisual新节点开发基础教程。 首先来看一下基本node-red节点文件目录,当前新开发的7个节点都放在了“node-red\packages\node_modulesno…

小程序入门学习(六)之本地生活案例

效果图如下: 关键代码如下: app.json {"pages": ["pages/home/home","pages/message/message","pages/contact/contact"],"window": {"backgroundTextStyle": "light","n…

ArcGIS对地区进行筛选提取及投影转换

首先我们需要对坐标系和投影这些概念做进一步的解释。 1、基本概念: 想要理解坐标系和投影的概念,首先我们需要先理解什么是坐标。顾名思义,坐标就是指我们所在的位置,比如我在离旗杆东北部50m处,其实就是离旗杆东边…

MFC图形函数学习13——在图形界面输出文字

本篇是图形函数学习的最后一篇,相关内容暂告一段落。 在图形界面输出文字,涉及文字字体、大小、颜色、背景、显示等问题,完成这些需要系列函数的支持。下面做简要介绍。 一、输出文本函数 原型:virtual BOOL te…

Mysql如何实现原子性(MVCC实现原理)

Mysql如何实现原子性(MVCC实现原理) Mysql实现原子性主要通过一下机制 锁MVCC多版本并发控制 MVCC的实现原理 在介绍MVCC的实现原理之前需要先介绍一下Mysql表中的隐藏字段 , 以及undo_log版本链以及readview 1. Mysql中的隐藏字段 Mysql在创建表的时候除了我们所定义的字…