Kubernetes Operator开发

news2025/1/16 8:08:19

Kubernetes Operator开发

1.kubebuilder 创建项目

2.Crontroller开发与部署

开发环境准备
kubebuilder 介绍
CRD的开发与部署
Crontroller开发与部署

Operator功能设计
借助operator完成 和企业内部注册中心打通
这里以Traefik+etcd的模式为例进行演示说明

在这里etcd provider注册中心可以换成eruka

 流程

1. watch Pods

2.动态注册Pods的Endponit到Traefik

Operator 开发工具选择
Operator 开发SDK有2个选择:
kubebuilder
operator sdk

本质上他们都是在k8s控制器运行时上进行的封装,主要都是脚手架的生成,使用体验相差不大
kubebuilder
维护方: kubernetes-sigs
基于 k8s控制器运行时 封装
包含CRD和Controller开发
operator sdk
维护方: coreOS
基于 k8s控制器运行时封装
早期不包含CRD开发,在往kubebuilder方向进行融合

环境

go v1.18.3

kubernetes v1.24.1

kubebuilder v3.6.0

安装kubebuilder

https://objects.githubusercontent.com/github-production-release-asset-2e65be/125275487/35d09c97-2992

https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.6.0/kubebuilder_linux_amd64

[root@k8s-worker02 ~]# kubebuilder version
Version: main.version{KubeBuilderVersion:"3.6.0", KubernetesVendor:"1.24.1", GitCommit:"f20414648f1851ae97997f4a5f8eb4329f450f6d", BuildDate:"2022-08-03T11:47:17Z", GoOs:"linux", GoArch:"amd64"}

 kubebuilder介绍

[root@k8s-worker02 ~]# kubebuilder -h
CLI tool for building Kubernetes extensions and tools.

Usage:
  kubebuilder [flags]
  kubebuilder [command]

Examples:
The first step is to initialize your project:
    kubebuilder init [--plugins=<PLUGIN KEYS> [--project-version=<PROJECT VERSION>]]

<PLUGIN KEYS> is a comma-separated list of plugin keys from the following table
and <PROJECT VERSION> a supported project version for these plugins.

                              Plugin keys | Supported project versions
------------------------------------------+----------------------------
                base.go.kubebuilder.io/v3 |                          3
         declarative.go.kubebuilder.io/v1 |                       2, 3
  deploy-image.go.kubebuilder.io/v1-alpha |                          3
                     go.kubebuilder.io/v2 |                       2, 3
                     go.kubebuilder.io/v3 |                          3
               go.kubebuilder.io/v4-alpha |                          3
          grafana.kubebuilder.io/v1-alpha |                          3
       kustomize.common.kubebuilder.io/v1 |                          3
 kustomize.common.kubebuilder.io/v2-alpha |                          3

For more specific help for the init command of a certain plugins and project version
configuration please run:
    kubebuilder init --help --plugins=<PLUGIN KEYS> [--project-version=<PROJECT VERSION>]

Default plugin keys: "go.kubebuilder.io/v3"
Default project version: "3"


Available Commands:
  alpha       Alpha-stage subcommands
  completion  Load completions for the specified shell
  create      Scaffold a Kubernetes API or webhook
  edit        Update the project configuration
  help        Help about any command
  init        Initialize a new project
  version     Print the kubebuilder version

Flags:
  -h, --help                     help for kubebuilder
      --plugins strings          plugin keys to be used for this subcommand execution
      --project-version string   project version (default "3")

Use "kubebuilder [command] --help" for more information about a command.

创建一个Operator项目

kubebuilder提供了一个init命令用来初始化一个新的Operator工程目录,具体用法如下:

[root@k8s-worker02 ~]# kubebuilder init -h
Initialize a new project including the following files:
  - a "go.mod" with project dependencies
  - a "PROJECT" file that stores project configuration
  - a "Makefile" with several useful make targets for the project
  - several YAML files for project deployment under the "config" directory
  - a "main.go" file that creates the manager that will run the project controllers

Usage:
  kubebuilder init [flags]

Examples:
  # Initialize a new project with your domain and name in copyright
  kubebuilder init --plugins go/v3 --domain example.org --owner "Your name"

  # Initialize a new project defining a specific project version
  kubebuilder init --plugins go/v3 --project-version 3


Flags:
      --component-config         create a versioned ComponentConfig file, may be 'true' or 'false'
      --domain string            domain for groups (default "my.domain")
      --fetch-deps               ensure dependencies are downloaded (default true)
  -h, --help                     help for init
      --license string           license to use to boilerplate, may be one of 'apache2', 'none' (default "apache2")
      --owner string             owner to add to the copyright
      --project-name string      name of this project
      --project-version string   project version (default "3")
      --repo string              name to use for go module (e.g., github.com/user/repo), defaults to the go package of the current working directory.
      --skip-go-version-check    if specified, skip checking the Go version

Global Flags:
      --plugins strings   plugin keys to be used for this subcommand execution

关键参数说明:
--plugins,指定生成代码的插件, 默认使用“go.kubebuilder.io/v3”。

--project-version 支持的项目版本有2,3 默认3

--repo module path,就是 go mod init 指定的go module的名称·

--domain,组织名称 用于API Group等
--owner,operater所有者,一般填写开发者邮箱

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

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

相关文章

现在学习云计算,还有出路吗?

现在学习云计算&#xff0c;还有出路吗&#xff1f; 当然有出路&#xff0c;现在正是学习云计算的好时机。只要你专业技术过关&#xff0c;有一定的项目经验&#xff0c;有的企业甚至接受应届生&#xff1b;其次是具备一定的职业素养&#xff0c;学历在大专及以上&#xff0c;年…

潇洒郎: git配置、拉取、提交代码

git配置拉取代码 git 配置全局变量 git config --global user.name "xuxiaosa" git config --global user.email "xuxiaosamigu.cn" 配置ssh key 1、打开git-bash 输入ssh-keygen 一直回车&#xff0c;会提示文件保存的地址 id_rsa,id_rsa.pub两个文…

谷粒商城二十二订单服务支付

我们支付暂时只开发支付宝&#xff0c; 按照正规的流程&#xff0c;我们的系统要接入支付宝&#xff0c;肯定是需要大量的审核过程&#xff0c;而且需要我们的项目上线。 那现在我们就想测试该怎么办&#xff1f;支付宝为我们提供了沙箱环境&#xff0c;我们可以在应用未上线之…

易观千帆 | 2023年3月银行APP月活跃用户规模盘点

易观&#xff1a;2023年3月手机银行服务应用活跃人数53289.05万&#xff0c;环比增长2.15%&#xff0c;同比增长8.87%。 2023年3月信用卡服务应用活跃人数10800.71万&#xff0c;环比增长1.87%&#xff0c;同比增长18.64%。 2023年3月城商行手机银行服务应用活跃人数3827.43万&…

【项目篇1】一个在线OJ系统

目录 一、前言&#xff1a;项目背景 功能1&#xff1a;能够管理题目 功能2&#xff1a;可以展示题目列表 功能3&#xff1a;题目详情页 功能4&#xff1a;可以令用户提交代码&#xff0c;并验证提交的情况 注意事项&#xff1a; 功能5&#xff1a;反馈运行的结果 二、项…

不同的场景上线时钟同步系统需要注意些什么

时钟同步系统一般都是用在学校或者医院的环境当中&#xff0c;一般时钟同步系统由硬件和软件相组成。对于局域网部署&#xff0c;通常使用NTP协议。对于广域网部署&#xff0c;通常需要考虑网络延迟和安全性等因素。此外&#xff0c;时钟同步系统在不同的使用场景当中的需求也不…

Vite详解

目录 前言一、Vite简介1. Vite组成2.为什么选 Vite? 二、Vite的优缺点1.vite优点2.vite缺点 三、使用Vite创建Vue3项目1. 创建 vite 的项目2.项目的结构 前言 构建工具 Vite&#xff0c;目前只有vue3才可以使用Vite&#xff0c;如果本文对你有所帮助请三连支持博主。 一、V…

雷达人体存在感应器成品,静止存在感控方案,雷达触发联动技术应用

随着社会经济的不断发展和科技水平的不断提高&#xff0c;智能感应类产品越来越多的应用到我们生产与生活之中。 小到家里边的感应灯、单位里的自动门&#xff0c;大到安防报警等诸多领域&#xff0c;都能体验到它给我们带来的便利性与安全性。 雷达人体感应器可以精准探测人体…

fs文件系统模块

一、什么是 fs 文件系统模块 fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性&#xff0c;用来满足用户对文件的操作需求。 例如&#xff1a; fs.readFile() 方法&#xff0c;用来读取指定文件中的内容 fs.writeFile() 方法&#xff0c;用来…

计算机网络模型、网络传输、封装分用的详细讲解

文章目录 计算机网络前言1. 初始网络2. 网络通信相关知识2.1 TCP/IP五层网络模型2.2 OSI七层模型 3. 网络传输3.1 封装3.2 分用3.3 数据传输的中间过程 计算机网络 前言 在互联网诞生之前&#xff0c;人们通过发电报等方式进行通信&#xff0c;这种方式是非常不稳定的&#x…

读写锁的原理与实现

文章目录 什么是读写锁生产消费模型 VS 读写模型 读写锁的pthread库接口读者&&写者模式 模拟实现读写锁思路1——用两个锁来实现&#xff08;读者优先&#xff09;模拟实现 思路2——两个条件变量一个锁&#xff08;写者优先&#xff09;模拟实现 可以看看之前写的文章…

d2l Nadaraya-Waston核回归

注意力机制里面的非参数注意力汇聚 目录 1.目标任务 2.数据生成 2.1构造原始数值 3.非参数注意力汇聚 4.对注意力机制的理解 1.目标任务 使用y_train(有噪声),拟合y_truth(没噪声)。给你所有的y_train&#xff0c;构造注意力权重生成拟合曲线。 2.数据生成 n_train 50…

五款高效易用的项目管理软件,提升团队工作效率

项目管理软件是为了协助团队或公司便捷和高效地完成工作任务和管理项目而专门设计的软件工具。有了它&#xff0c;团队成员可以共享资源&#xff0c;跟踪项目进度和成果&#xff0c;识别问题并及时解决。与传统的手工方式相比&#xff0c;项目管理软件可以提高工作效率和生产力…

Centos7上安装vscode和ssh

Centos7上安装vscode和ssh 一.前言二.Centos7上安装vscode三&#xff0c;Centos7上配ssh3.1 查看是否安装ssh环境3.2 配置ssh配置文件3.3 启动ssh服务 一.前言 在用linux环境编译项目的时候&#xff0c;比较习惯用ubuntu环境&#xff0c;而对centos环境的一些命令工具使用的比…

外链是什么意思,什么是外链

外链就是指在别的网站导入自己网站的链接。导入链接对于网站优化来说是非常重要的一个过程。导入链接的质量间接影响了我们的网站在搜索引擎中的权重。外链是互联网的血液&#xff0c;是链接的一种。没有链接的话&#xff0c;信息就是孤立的&#xff0c;结果就是我们什么都看不…

计算机网络笔记(方老师408课程)(持续更新)

文章目录 前言互联网概述互联网发展的三个阶段互联网标准化机构 互联网的组成边缘部分的通信方式核心部分的交换方式 我国计算机网络的发展计算机网络的类别计算机网络的性能速率、带宽、吞吐量时延时延带宽积往返时间RTT&#xff08;Round-Trip Time&#xff09;利用率非性能特…

SpringCloud分布式配置中心——Config

Config 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 由于微服务越来越多&#xff0c;项目越来越庞大&#xff0c;每一个项目都至少有两三个不同环境的application.properties文件&#xff0c;不易管理&#xff0c;假设我们数据库迁移&#xff…

笔记--java sort() 方法排序

背景 最近在刷一道算法题 《字符串重新排序》时&#xff0c;发现自己有思路但是写代码的时候就无从下手了 而且看了答案之后还没看懂 关键就是基础不好 对于排序没有理解&#xff08;虽然我学过常用的排序算法 但是都是理念 实践少&#xff09; 目的 从实践和原理出发 重点是从…

参数处理、查询语句

一、Mybatis参数处理 1、数据准备 pojo类&#xff1a; public class Student {private Long id;private String name;private Integer age;private Double height;private Character sex;private Date birth;// constructor// setter and getter// toString }2、单个简单类型…

设计模式 -- 命令模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…