Kubernetes operator(一)client-go篇

云原生学习路线导航页(持续更新中)

  • 本文是 Kubernetes operator学习 系列第一篇,主要对client-go进行学习,从源码阅读角度,学习client-go各个组件的实现原理、如何协同工作等
  • 参考视频:Bilibili 2022年最新k8s编程operator篇,UP主:白丁云原生

在这里插入图片描述

1.kubernetes简单介绍

1.1.kubernetes的内置资源

  • Pod:K8S最小的调度单元,可以将一组密切关联的容器组成一个逻辑单元,在这个单元里容器之间可以更好的共享资源。
  • Deployment:主要用于无状态应用,用来部署多个副本的Pod,并且在Pod出现异常时帮助应用及时恢复正常。
  • Statefulset:主要用于有状态应用,可以控制Pod的启动顺序,为Pod绑定不同的存储等。
  • Job/CronJob:用于一次性和周期性的任务。
  • Daemonset:通常用来部署后台常驻任务,会在每台Worker节点启动。
  • Service:应用的访问入口,通过selector选择具有指定label的Pod,为其提供服务发现和负载均衡的功能,每个Service都可以通过CoreDNS获取到其对应的IP。
  • Ingress:提供K8S集群外部访问应用。
  • Configmap、Secret:描述应用的配置和密钥等数据。
  • PV、PVC、HostPath、EmptyDir:描述应用的各类存储。

1.2.kubernetes的扩展点

  • 为了适应更多的业务场景,k8s提供了很多的扩展点,用于满足更复杂的需求
  • K8s的扩展点如下:
    在这里插入图片描述
  • ① kubectl
    • 用户通过kubectl与ApiServer进行交互,kubectl提供了插件,可以扩展kubectl的行为,但是这些插件只能影响用户本地的环境
  • ② API Server
    • 处理所有的请求,可以对用户请求进行 身份认证、基于其内容阻止请求、编辑请求内容、处理删除操作等等。
    • 这个扩展点应该说的是:用户可以 自定义 API Server
  • ③ k8s提供的内置资源
    • 我们无法修改,只能通过 annotation、label 控制他们
  • ④ CRD
    • 自定义资源,配合 自定义控制器Custom Controller,扩展k8s的特定业务场景
  • ⑤ scheduler
    • 调度器,决定k8s把Pod放到哪个节点执行。k8s提供了多种方式扩展调度行为
  • ⑥ Controller Manager
    • 实际上也是k8s的一个客户端,通过与API Server交互。k8s的每种资源都有对应的控制器,都属于ControllerManager
    • client-go本质上就是一个与apiserver交互的库,所以Controller Manager也是通过 client-go 库与 API Server交互的
  • ⑦ Custom Controller
    • 自定义控制器,可以控制 内置资源,也可以控制自定义资源CRD
  • ⑧ kubelet
    • 使用CNI:使得k8s可以使用不同技术,连接Pod网络
    • 使用CSI:使得k8s可以支持不同的存储类型
    • 使用CRI:使得k8s可以支持不同的容器运行时
  • ⑨ client-go
    • 一个通用的Golang库,用于和 apiserver 交互
    • 不管是k8s的各个组件,还是我们自己为CRD开发Custom Controller,都需要使用 client-go 与 API Server 进行通信

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 设置每5分钟同步系统时间

在我们本地电脑使用的虚拟机中,经常电脑睡眠导致系统时间总是不正确,从而导致应用程序的时间不正确 下面简单操作几步,让系统定时同步远程时间 先确保同步时间的软件安装了 yum install ntp # 安装 ntp ntpdate ntp3.aliyun.com # 同步…

Vue前端环境搭建以及项目搭建

安装node.js 安装node.js主要是为了安装npm工具,用于管理js包等,类似于java的maven。 去官网下载安装。 配置新的镜像源 npm config set registry https://registry.npmmirror.com安装webpack webpack是前端项目打包工具。 命令: npm…

ATFX汇市:本周重磅经济数据前瞻(0122~0126)

ATFX汇市:本周的数据、事件重要性由高到低分别为:美国12月核心PCE物价指数年率、日本央行开年首个利率决议、加拿大央行1月份利率决议。我们来逐一分析解读: ▲ATFX图 本周五21:30, 美国商务部将公布美国12月核心PCE物价指数年率…

【修改idea推送代码的远程仓库地址】

公司部门调整,git地址变了,对于一个新手来说真的不知道从哪下手,后来整明白了怎么修改idea推送代码的远程仓库地址 第一步:打开idea中的terminal第二步:输入命令 git remote -vv(查看远程仓库的地址&#x…

线程同步--生产者消费者模型--单例模式线程池

文章目录 一.条件变量pthread线程库提供的条件变量操作 二.生产者消费者模型生产者消费者模型的高效性基于环形队列实现生产者消费者模型中的数据容器基于生产者消费者模型实现单例线程池 一.条件变量 条件变量是线程间共享的全局变量,线程间可以通过条件变量进行同步控制条件…

API 测试- Postman Vs Rest Assured

介绍: 创新和现代化的目标已经从简单的市场差异化转变为更有道德地追求整个社会的进步。提出了新的要求服务器端软件是持续数字中断和创新移动的结果技术。因此,服务器端编程现在必须适应笔记本电脑,智能手机和硬件平台(如 IoT&a…

肠道微生物组对卵巢衰老的影响

谷禾健康 卵巢的衰老发生在其他器官系统的衰老之前,可以看作是多个器官衰老过程的“起搏器”。随着预期寿命的延长,预防卵巢衰老已成为促进女性延长生殖功能、改善与卵巢衰老相关的骨骼和泌尿生殖系统状况的重要目标。 卵巢衰老是指卵巢功能随着年龄的增…

【Linux】第三十三站:日志

文章目录 一、实现一个简单的日志1.简介2.可变参数3.错误等级4.时间5.打印每一条参数6.与前面的一些代码搭配使用 二、完整代码 一、实现一个简单的日志 1.简介 我们运行代码的时候,我们希望有各种各样的运行时候的一些信息。这也就是日志 它一半有日志时间&…

亚信安慧AntDB全链路实时化的未来之选

近年来,随着数字化时代的到来,企业对实时数据的需求日益增长。在复杂的商业环境中,企业需要实时了解市场变化、实时响应客户需求,以保持竞争力。为了满足这一需求,亚信安慧AntDB应运而生,成为企业实时数据处…

Python 算法交易实验67 第一次迭代总结

说明 在这里对第一次迭代(2023.7~ 2024.1)进行一些回顾和总结: 回顾: 1 实现了0~1的变化2 在信息隔绝的条件下,无控制的操作,导致被套 总结: 思路可行,在春暖花开的时候&#x…

【5G 接口协议】N2接口协议NGAP(NG Application Protocol)介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

AI企业知识库:企业智慧之源,引领未来发展

AI企业知识库作为优秘智能的核心技术(shuziren06),具有许多引人注目的功能和特点。接下来让我们深入探讨一下AI企业知识库如何在实际应用中助力企业。以下是对AI企业知识库的更详细介绍: 1. 强大的知识整合能力 AI企业知识库能够…