首页 > 编程语言 >Kubernetes编程—— 编写 Operator 的方案 —— 2、基于 sample-controller

Kubernetes编程—— 编写 Operator 的方案 —— 2、基于 sample-controller

时间:2023-08-21 17:44:20浏览次数:29  
标签:added Kubernetes sample controller github go com

编写 Operator 的方案 —— 2、基于 sample-controller

https://github.com/kubernetes/sample-controller

  首先我们将基于 k8s.io/sample-controller 来实现 cnat,通过直接使用 client-go 完成。

  sample-controller 使用 k8s.io/code-generator 来生成强类型的客户端、Informer、Lister 和深拷贝函数。如果你的自定义控制器中的 API 发生了变化,比如在自定义资源中添加了一个新的字段,你需要运行 update-codegen.sh 脚本来重新生成先前提到过的源代码文件。

  我们开始基于 sample-controller 使用 client-go 来实现我们的 cnat Operator 吧。

  1、首先,运行 go get k8s.io/sample-controller 获取相关的源代码及依赖并安装到系统中。

 

[root@JumperServer:zuoyang] # mkdir -pv sample-controller
mkdir: created directory 'sample-controller'
[root@JumperServer:zuoyang] # cd sample-controller/
[root@JumperServer:sample-controller] # ll
total 0
[root@JumperServer:sample-controller] # go mod init sample-controller
go: creating new go.mod: module sample-controller
[root@JumperServer:sample-controller] # ll
total 4
-rw-r--r-- 1 root root 36 Aug 21 17:38 go.mod
[root@JumperServer:sample-controller] # go get k8s.io/sample-controller
go: added github.com/davecgh/go-spew v1.1.1
go: added github.com/emicklei/go-restful/v3 v3.9.0
go: added github.com/go-logr/logr v1.2.4
go: added github.com/go-openapi/jsonpointer v0.19.6
go: added github.com/go-openapi/jsonreference v0.20.2
go: added github.com/go-openapi/swag v0.22.3
go: added github.com/gogo/protobuf v1.3.2
go: added github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
go: added github.com/golang/protobuf v1.5.3
go: added github.com/google/gnostic-models v0.6.8
go: added github.com/google/go-cmp v0.5.9
go: added github.com/google/gofuzz v1.2.0
go: added github.com/google/uuid v1.3.0
go: added github.com/imdario/mergo v0.3.6
go: added github.com/josharian/intern v1.0.0
go: added github.com/json-iterator/go v1.1.12
go: added github.com/mailru/easyjson v0.7.7
go: added github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
go: added github.com/modern-go/reflect2 v1.0.2
go: added github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: added github.com/spf13/pflag v1.0.5
go: added golang.org/x/net v0.13.0
go: added golang.org/x/oauth2 v0.8.0
go: added golang.org/x/sys v0.10.0
go: added golang.org/x/term v0.10.0
go: added golang.org/x/text v0.11.0
go: added golang.org/x/time v0.3.0
go: added google.golang.org/appengine v1.6.7
go: added google.golang.org/protobuf v1.30.0
go: added gopkg.in/inf.v0 v0.9.1
go: added gopkg.in/yaml.v2 v2.4.0
go: added gopkg.in/yaml.v3 v3.0.1
go: added k8s.io/api v0.28.0
go: added k8s.io/apimachinery v0.28.0
go: added k8s.io/client-go v0.28.0
go: added k8s.io/klog/v2 v2.100.1
go: added k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9
go: added k8s.io/sample-controller v0.28.0
go: added k8s.io/utils v0.0.0-20230406110748-d93618cff8a2
go: added sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
go: added sigs.k8s.io/structured-merge-diff/v4 v4.2.3
go: added sigs.k8s.io/yaml v1.3.0
[root@JumperServer:sample-controller] #

 

  

 

标签:added,Kubernetes,sample,controller,github,go,com
From: https://www.cnblogs.com/zuoyang/p/17646664.html

相关文章

  • SpringBoot复习:(37)自定义ErrorController
    所有接口统一返回的数据格式packagecn.edu.tju.domain;publicclassMyResponse{privateintcode;privateStringmessage;privateStringexception;privateStringstack;publicintgetCode(){returncode;}publicvoidse......
  • Kubernetes编程—— 编写 Operator 的方案 —— 1、准备工作
    编写Operator的方案——1、准备工作 1、安装好并完成正确配置的Go1.12或以上版本:Go是Golang的开发工具包,需要安装并配置正确的环境变量,以便在命令行中编译、构建和运行Go程序。确保已从官方网站或中文社区网站下载并安装了适合自己操作系统的Go版本,并将相关的bin目录添加......
  • @ControllerAdvice 的介绍及三种用法
    感谢:参考文章:https://blog.csdn.net/qq_36829919/article/details/101210250@ControllerAdvice的介绍及三种用法浅析@ControllerAdvice首先,ControllerAdvice本质上是一个Component,因此也会被当成组建扫描,一视同仁,扫扫扫。然后,我们来看一下此类的注释:这个类是为那些声......
  • 如何快速在 Kubernetes 集群中新建用户
    如何快速在Kubernetes集群中新建用户Se7en 奇妙的Linux世界 2023-08-1911:59 发表于重庆收录于合集#Kubernetes274个#云原生261个#Docker197个#程序员421个公众号关注 「奇妙的Linux世界」设为「星标」,每天带你玩转Linux! Kubernetes中的用户K8S中......
  • Kubernetes 服务发布 Service labels和selector
    上节讲了创建无状态应用统一使用deployment的方式来去创建应用通过rs挂载你响应的pod,但是有一个问题不管是deployment还是replicaSet他们没有一个统一的ip地址,只有在每个pod上有IP,那我们要去访问一个对应的功能的时候,只能通过单个ip地址的方式去访问,这种方式会有问题,他无法实......
  • 谷歌云 | 最大限度地提高可靠性&降低成本:调整 Kubernetes 工作负载的大小
    【本文由CloudAce整理发布。CloudAce是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。】您知道通过调整工作负载请求以更好地代表其实......
  • Kubernetes hostPort 使用
    1、概述在Kubernetes中,hostPort是一种用于将主机上的特定端口映射到运行在Pod内部容器的端口的配置选项。通过使用hostPort,你可以在主机上暴露容器的服务,从而允许外部网络通过主机的IP地址和指定的端口访问容器内的应用程序。如:apiVersion:apps/v1kind:Deploymentm......
  • 使用kube-bench检测Kubernetes集群安全
    目录一.系统环境二.前言三.CIS(CenterforInternetSecurity)简介四.什么是Kube-Bench?五.使用kube-bench检测不安全的设置5.1手动设置不安全的参数5.2安装kube-bench5.3kube-bench检测etcd组件5.4kube-bench检测master节点5.5kube-bench检测worker节点六.总结七.附加信息......
  • Kubernetes Service中的 external-traffic-policy 是什么?
    【摘要】external-traffic-policy,顾名思义“外部流量策略”,那这个配置有什么作用呢?以及external是指什么东西的外部呢,集群、节点、Pod?今天我们就来学习一下这个概念吧。1、什么是external-traffic-policy在k8s的Service对象(申明一条访问通道)中,有一个“externalTrafficPolicy”......
  • [kubernetes]二进制部署k8s集群-基于containerd
    0.前言k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。除了containerd,比较流行的容器运行时还有podman,但是podm......