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

这篇具有很好参考价值的文章主要介绍了Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

了解网站控制器的功能

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

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

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

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

通过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服务器。

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

 3、验证自定义对象

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

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

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

API服务器聚合

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

每个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文章来源地址https://www.toymoban.com/news/detail-496998.html

到了这里,关于Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes API Server源码学习(二):OpenAPI、API Resource的装载、HTTP Server具体是怎么跑起来的?

    本文基于Kubernetes v1.22.4版本进行源码学习 6、OpenAPI 1)、OpenAPI的作用 OpenAPI是由Swagger发展而来的一个规范,一种形式化描述Restful Service的语言,便于使用者理解和使用一个Service。通过OpenAPI规范可以描述一个服务: 提供哪些Restful服务 各服务接收的输入以及输出对象格式 支持

    2024年02月11日
    浏览(20)
  • 01-k8s学习笔记之认识 Kubernetes

    应用部署的三大阶段 k8s 的特点 Apache Mesos Docker Swarm Google Kubernetes

    2024年01月16日
    浏览(49)
  • Kubernetes学习笔记-在多个集群中使用kubectl 20230623

    一、在Minikue和Google Kubernetes引擎之间切换 切换到Minikube $minikube start Starting local kubernetes cluster... ... Setting up kubeconfig... kubectl is now configured to use the cluster 从Minikube切换到GKE后,可以通过停止Minikube并重新切换回来。这时kubectl会被再次重新设置以适用于Minikube集群 切换到GKE $gcl

    2024年02月10日
    浏览(25)
  • Docker学习(五)-Kubernetes 集群搭建 - Spring Boot 应用

    kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes是Google开源的一个容器

    2024年02月19日
    浏览(20)
  • SpringCloud Kubernetes 集群扩展

    作者:禅与计算机程序设计艺术 因此,本文旨在系统全面地学习、掌握和应用Spring Cloud Kubernetes项目。希望通过文章,能对读者有所帮助。 在阅读完本文章后,读者应该可以清楚地理解Spring Cloud Kubernetes项目的核心概念、架构及实现原理,并掌握相应的操作方法和工具,通过

    2024年02月07日
    浏览(27)
  • Kubernetes学习笔记-计算资源管理(4)监控pod的资源使用量20230219

    前面学了设置资源的requests和limits,这节课学习如何监控资源,根据监控资源使用情况,对requests和limits进行合理配置。 kubelet包含一个agent,名为cAdvisor,它会收集整个节点上运行的所有单独容器的资源消耗情况,这些信息可以通过一个附加组件Heapster来集中统计整个集群的监

    2024年02月05日
    浏览(35)
  • kubernetes--kubernetes审计日志(api访问日志)

    目录 一、审计日志介绍: 二、事件和阶段: 三、Kubernetes审计日志: 四、审计日志的启用: 五、收集审计日志方案:        在Kubernetes集群中,API Server的审计日志记录了哪些用户、哪些服务请求操作集群资源,并且可以编写不通规则,控制忽略、存储的操作日志。    

    2024年02月10日
    浏览(33)
  • Kubernetes API Aggregation API聚合

    Kubernetes API Aggregation - Kubernetes - Wiki.Shileizcc.com API 聚合机制 是 Kubernetes 1.7 版本引入的特性, 能够将用户扩展的 API 注册到 kube-apiserver 上, 仍然通过 API Server 的 HTTP URL 对新的 API 进行访问和操作。为了实现这个机制, Kubernetes 在 kube-apiserver 服务中引入了一个 API 聚合层(API

    2024年02月13日
    浏览(33)
  • 如何实现高可用性、灵活性、扩展性?了解 Kubernetes 优势

    Kubernetes是一种用于自动化部署、扩展和管理容器化应用程序的开源平台。它能够自动化地执行许多手动部署和管理容器的任务,包括容器的自动部署、负载均衡、自动伸缩、故障发现和自愈等。Kubernetes是一个强大、灵活且高可用的平台。 Kubernetes最初由谷歌开发,并于2014年

    2024年02月05日
    浏览(29)
  • 【探索 Kubernetes|作业管理 Deployment 篇 系列 12】水平扩展 / 收缩、滚动 / 回滚更新

    大家好,我是秋意零。 在上一篇中,我们介绍了控制器的基本设计思想:控制器模式。通过这个 “控制器模式” 我们来看看 Deployment 是如何依靠它来实现的。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持! 获取方式: 1.在我主页推广区域,如图

    2024年02月11日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包