Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622

news2024/10/5 14:03:03

1、CustomResourceDefinitions介绍

开发者只需要只需向kubernetes api服务器提交CRD对象,即可定义新的资源类型。成功提交CRD之后,就能通过API服务器提交JSON清单或者YAML清单的方式创建自定义资源,以及其他kubernetes资源实例

创建一个CRD对象

website-crd.yaml

apiVersion:apiextensions.k8s.io/v1beta1

kind:CustomResourceDefinition

metadata:

        name:websites.extensions.example.com

spec:

        scope:Namespaced

group:extensions.example.com

version:v1

names:

        kind:Website

        singular:website

        plural:website

命令行创建crd

$kubectl create -f website-crd-definition.yaml

创建自定义资源实例

一个自定义网站资源:kubia-website.yaml

apiVersion:extensions.example.com/v1

kind:Website

metadata:

        name:kubia

spec:

        gitRepo:https://github.com/luksa/kubia-website-example.git

 这个自定义资源的kind是website,而apiversion是由api组和你在crd中定义的版本号两部分组成的。

创建网站对象:

$kubectl create -f kubia-website.yaml 

检索自定义资源实例

$kubectl get websites

删除自定义资源实例

$kubectl  delete website kubia

注意:删除的是网站实例,而不是网站CRD资源。

2、使用自定义控制器自动定制资源

为了让你的网站对象运行在一个通过服务暴露的web服务器pod,需要构建和部署一个网站控制器,它能查看api服务器创建网站对象的过程,然后为每一个对象创建服务和web服务器pod

控制器将创建Deployment资源,而不是直接创建非托管pod,这样就能确保pod既能被管理,还能在遇到节点故障时继续正常工作。

使用网站控制器创建网站对象并创建Deployment和Service

了解网站控制器的功能

启动后,控制器立即开始通过以下URL 请求查看网站对象:

http://localhost:8080/apis/extensions.example.com/v1/websites?watch=true

通过识别主机名和端口,控制器不直接连接到API服务器,而是连接到kubectl proxy进程。该进程在同一个po中的sidecar容器中运行,并充当API服务器的ambassador。代理将请求转发给API服务器,并同时处理TLS加密认证。

通过HTTP GET请求打开链接,API服务器将针对任何网站对象的每个更改发送监听事件(watch event) 

每次创建新的网站对象时,API服务器都会发生ADDED监听事件。当控制器收到这样的事件时,就会在该监听事件所包含的网站对象中提取网站名称和Git存储库的url,然后将他们的json清单发布到api服务器,来创建Deployment和Service对象

Deployment资源包含一个具有两个容器的pod模版:其中一个容器运行nginx服务器,另一个容器则运行gitsync进程,用来保持本地目录与Git仓库的内容同步。本地目录通过一个emptyDir卷与nginx容器共享。作为一个NodePort Service,他通过每个节点上的随机端口公开你的web服务器pod(所有节点使用相同的端口)。这样,当Deployment对象创建一个pod时,用户既可以通过节点端口访问该网站。

当网站资源实例被删除时,API服务器还会发送DELETED监听事件。在收到监听事件厚,控制器就会删除之前创建的Deployment资源和Service资源。与此同时,控制器也会关闭并删除该网站提供服务的web服务器。

 3、验证自定义对象

在kubernetes1.8版本中,自定义对象的验证作为alpha特性被引入。如果想要让API服务器验证自定义对象,需要再API服务器中启用CustomResoureceValidation特性,并在CRD中指定一个JSON schema。

4、为自定义对象提供自定义API服务器

如果想要更好的支持在kubernetes中添加自定义对象,最好的方式是使用你自己的API服务器,并让他直接与客户端进行交互。

API服务器聚合

每个API服务器会负责存储他自己的资源,如上图,它可以云自己的etcd实例(或整个etcd集群),也可以通过创建CRD实例将其资源存储在核心API服务器的ectd存储中。在这种情况下,就需要先创建一个CRD对下,然后才能创建CRD实例。

注册一个自定义API服务器 

想要自定义API服务器添加到集群中,可以将其部署为一个pod并通过Service暴露。下一步,为了将它集成在主API服务中,需要部署一个描述APIService资源的YAML列表,如下代码:

APIService YAML定义

apiVersion:apiregistration.k8s.io/vbeta1

kind:APIService

metadata:

        name:v1alpha1.extensions.example.com

spec:

        group:extensions.example.com

        version:v1alpha1

        priority:150

        service:

                name:website-api

                namespace:default

创建以上代码 列表中的APIService资源后,被发送到主API服务器的包含extensions.example.com API组任何资源的客户端请求,会和v1alpha1版本号一起被转发到通过website-api Service公开的自定义API 服务器pod

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

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

相关文章

SpringCloud Alibaba入门6之Nacos配置

一、基本概念 1.命名空间 用于区分环境,开发、测试、生产环境等。 2.配置分组 多个配置文件放在一起,形成组。 3.配置集 一般指一个配置文件 4.配置集ID 这个配置文件全局唯一ID 5.配置项 配置的键值对 二、引入Nacos配置中心 我们在用户模块…

探索安卓内容提供者:构建、访问和管理数据【复习】

文章目录 一 ContentProvider1.1 数据模型- **ContentProvider 使用基于数据库模型的简单表格来提供需要共享的数据**,在该表格中,每一表示一条记录,而每一列代表特定类型和含义的数据,并且其中每一条数据记录都包含一个名为“_ID…

团体程序设计天梯赛-练习集L1篇⑤

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

概率论与数理统计教程第五章节笔记

参考书籍:概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明:如有错误还望批评指正 文章目录 ξ 5.1 \xi5.1 ξ5.1总体与样本 ξ 5.2 \xi5.2 ξ5.2样本数据的整理与显示Python绘制直方图Python绘制茎叶图 ξ 5.3 \xi5.3 ξ5.3统计量及其分…

非煤电子封条系统 yolov7

非煤电子封条系统通过yolov7python网络模型技术,非煤电子封条系统利用智能化AI视频分析,实时监测分析矿井出入井人员人数变化、非煤及煤矿生产作业状态等情况,自动生成、推送报警信息,提示相关人员采取应急措施。Python是一种由Gu…

最火的几款STM32 F系列对比

最火的几款STM32 F系列对比 最常用且相对热门STM32F103系列STM32F407系列STM32F429系列STM32F746系列 最常用且相对热门 在STM32F系列中,以下是一些最常用且相对热门的芯片: STM32F103系列:这个系列是STM32F系列中最受欢迎的型号之一。它基于…

二进制安装K8S(单Master集群架构)

目录 一、安装K8S1、单Master集群架构2、操作系统初始化配置3、部署docker引擎4、部署 etcd 集群5、部署 Master 组件6、部署 Worker Node 组件7、部署 CNI 网络组件7.1 部署 flannel7.2 Flannel udp 模式的工作原理(必备面试题)7.3 Flannel vxlan 模式的…

Nexus如何导入jar以及批量导入Maven的本地库目录

前言 本篇基于 Nexus 的版本是 nexus-3.55.0-01本方法适用Linux和WindowsWindows 需要安装Git , 使用Git Bash执行 Nexus上传依赖包的方式 上传依赖包到Nexus 服务器的方式有多种, 包含: 单个jar上传: 在Nexus管理台页面上传单个jar源码编…

springboot高级教程基于 redis 通过注解实现限流

Spring Boot整合Redis有一种方便的方式是使用注解方式实现限流。 可以通过自定义注解的方式来标注需要限流的方法,在方法执行前进行限流的检查。 以下是具体实现方式: 1. 自定义注解RedisLimit,并定义注解元素,如限流的时间、限流…

MIT 6.S081 Lab Four

MIT 6.S081 Lab Four 引言trapsRISC-V assembly (easy)代码解析 Backtrace(moderate)代码解析 Alarm(Hard)test0: invoke handler(调用处理程序)test1/test2(): resume interrupted code(恢复被中断的代码)代码解析issue解答 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作…

「端午记忆,AI绘梦」微信群AI绘图比赛

点击上方「蓝字」,关注我们 01 活动介绍 亲爱的朋友们, 端午节即将来临,让我们一起用AI唤醒记忆,回忆古老传统的魅力。 这次活动,我们邀请大家进入一个微信群,一起用AI画出你记忆中端午的样子。 无论你是画…

一文通关Spring MVC

目录 🐳今日良言:少年负壮气,奋烈自有时 🐳一、Spring MVC的相关介绍 🐕1.Spring MVC的定义 🐕2.MVC 和 Spring MVC的关系 🐳二、Spring MVC的创建及使用 🐯1.Spring MVC项目创…

Spring Boot 如何使用 Log4j2 进行日志记录

Spring Boot 如何使用 Log4j2 进行日志记录 在开发 Java 应用程序时,日志记录是非常重要的一环。Spring Boot 提供了多种日志输出方式,其中 Log4j2 是一种比较常用的日志框架。本文将介绍如何在 Spring Boot 应用程序中使用 Log4j2 进行日志记录。 为什…

Verilog基础:标识符的向上向下层次名引用

相关文章 Verilog基础:表达式位宽的确定(位宽拓展) Verilog基础:表达式符号的确定 Verilog基础:数据类型 Verilog基础:位宽拓展和有符号数运算的联系 Verilog基础:case、casex、ca…

基于阿尔法均值滤波的FPGA图像系统(工程+原理图+PCB+仿真)

目录 前言一、研究背景及意义二、本文研究内容三、硬件系统框架设计1、总框架设计2、原理图&PCB设计3、实物设计4、电路介绍 三、中值滤波算法研究及改进1、图像噪声的产生及危害2、中值滤波算法3、高斯滤波算法4、改进的中值滤波算法(α均值滤波算法&#xff0…

【跑实验05】利用CLIP中的图像编码器,如何遍历文件夹中的图像,将图像文件改为28*28的尺寸,然后输出到excel中的每一列,最后一列全都标记为0

文章目录 一、初步实现二、警告信息的解决 一、初步实现 要遍历文件夹中的图像并将其尺寸调整为28x28,并将结果输出到Excel中,可以按照以下步骤进行操作: 首先,确保您已经安装了Pandas库,用于处理Excel文件。可以使用…

简单认识Nginx主配置文件及实操模拟

文章目录 一、Nginx主配置文件1、全局配置2、添加 I/O事件配置4.HTTP配置 实操模拟部分一、Nginx虚拟主机配置1.1基于域名1.2.基于IP1.3.基于端口 二、Nginx访问状态统计三、Nginx配置访问控制1.基于授权的访问控制2.基于客户端的访问控制 一、Nginx主配置文件 位置&#xff1…

【机器学习】sklearn数据集的使用,数据集的获取和划分

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 sklearn数据集 二、安装sklearn二、获取数据集三、…

python第三方库概览

目录 第三方库的获取和安装 脚本程序转变为可执行程序的第三方库PyInstaller jieba库(必选)、wordcloud库(可选) 知识导图: 1.Python第三方库的获取和安装 Python第三方库依照安装方式灵活性和难易程度有三个方法:pip工具安装…

树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项

下面来总结一下远程操控树莓派用到的三种方式及其注意事项,其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…