docker geovis_GitHub - ThinkBlue1991/cronjob-operator
使用operator-sdk 创新crd
安装operator-sdk
下载
RELEASE_VERSION=v0.11.0
curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu
curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc
gpg --verify operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu.asc
如果本机没有安装公钥,会报错如下:
$ gpg --verify operator-sdk-${RELEASE_VERSION}-x86_64-apple-darwin.asc
$ gpg: assuming signed data in 'operator-sdk-${RELEASE_VERSION}-x86_64-apple-darwin'
$ gpg: Signature made Fri Apr 5 20:03:22 2019 CEST
$ gpg: using RSA key
$ gpg: Can't check signature: No public key
执行如下脚本:
gpg --recv-key "$KEY_ID"
gpg --keyserver keyserver.ubuntu.com --recv-key "$KEY_ID"
安装
$ chmod +x operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu && sudo mkdir -p /usr/local/bin/ && sudo cp operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu /usr/local/bin/operator-sdk && rm operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu
创建新的工程
## 初始化工程
mkdir -p $GOPATH/example/
cd $GOPATH/example
export GO111MODULE=on
operator-sdk new cronjob-operator --repo github.com//ThinkBlue1991/cronjob-operator
cd cronjob-operator
## 添加CRD的api
operator-sdk add api --api-version=cache.example.com/v1alpha1 --kind=CronJob
定义Status和spec
修改pkg/apis/cache/v1alphal/cronjob_types.go
修改types后,针对resource进行更新和生成代码
operator-sdk generate k8s
openapi验证
operator-sdk generate openapi
查看deploy/crds/cache.example.com_cronjob_crd.yaml 其中根据spec定义了crd参数的属性
增加新的Controller
operator-sdk add controller --api-version=cache.example.com/v1alpha1 --kind=CronJob
会在pkg/controller/cronjob/下出现cronjob_controller.go文件
修改cronjob_controller.go文件,主要关心函数func (r *ReconcileMemcached) Reconcile(request reconcile.Request) (reconcile.Result, error)
编译运行operator
kubectl create -f deploy/crds/cache.example.com_cronjob_crd.yaml
operator-sdk build hub.geovis.io/zhangjx/cronjob-operator:v0.1
docker push hub.geovis.io/zhangjx/cronjob-operator:v0.1
Note: hub.geovis.io是本地的私有仓库;dockerhub:docker pull zhangjx1991/cronjobs:v0.1
修改operator.yaml文件
sed -i 's|REPLACE_IMAGE|hub.geovis.io/zhangjx/cronjob-operator:v0.1|g' deploy/operator.yaml
执行其他的yaml文件
# Setup Service Account
$ kubectl create -f deploy/service_account.yaml
# Setup RBAC
$ kubectl create -f deploy/role.yaml
$ kubectl create -f deploy/role_binding.yaml
# Deploy the app-operator
$ kubectl create -f deploy/operator.yam
创建新的cronjob
kubectl create -f deploy/crds/cronjob.yaml
查看结果
crd
operator
job
Note:执行4次job任务,cronjob任务结束
docker geovis_GitHub - ThinkBlue1991/cronjob-operator相关推荐
- 基于Docker的Consul服务发现集群搭建
在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架 ...
- 基础设施即代码(IAC),Zalando Postgres Operator 简介
Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群.它仅通过 Postgres 清单 (CRD ...
- docker 问题集
宿主如果和容器系统不同的话,那不是和虚拟机一样,一层层的调用,那么 Docker 和虚拟机还有什么差别? 要把 Windows 和 Linux 分清楚,更要把内核(kernel)和用户空间(userl ...
- 【零基础搭建Docker和Minio】
从零使用docker搭建Minio服务 为什么使用docker Docker搭建 使用Docker安装Minio 为什么使用docker 在云时代,开发者创建的应用必须是"任何时间任何地点& ...
- 《Kubernetes部署篇:基于docker使用kubespray工具部署高可用K8S集群(国内互联网方案四)》
文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...
- 《Kubernetes部署篇:基于docker使用kubespray工具离线部署高可用K8S集群(国内专网方案)》
文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...
- 《Kubernetes部署篇:基于docker使用kubespray工具部署高可用K8S集群(国内互联网方案三)》
文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...
- 三分钟Docker-镜像、容器实战篇
本文主要内容: Docker 镜像.容器 常用命令整理 使用Docker常见命令,搭建Consul集群 通过创建自定义镜像,把.NetCore Api运行在Docker中 1.镜像.容器命令 镜像 序 ...
- 《Kubernetes权威指南:从Docker到Kubernetes实践全接触》读书笔记
写在前面 之前简单的了解过,但是机器的原因,只有单机,因为安装Docker的原因,本机VM上的红帽节点起不来了.懂得不多,视频上都是多节点的,所以教学视屏上的所以Demo没法搞. 前些时间公司的一个用 ...
最新文章
- WPF:Input and Commands输入和命令(1)
- 整理下java六种单例模式
- 成为Java流大师–第6部分:使用流创建新的数据库应用程序
- wpf项目中类库内新建用户控件和自定义控件的问题
- orm2 中文文档 8. 聚合
- Markdown中插入图片及图注
- 二十一天学通C语言:使用const声明指针变量
- mysql添加值_怎么给mysql添加值?
- 数字电子技术课程设计用单片机实现数字电子钟
- C语言从入门到放弃2022年8月3号
- Mac配置allure环境变量
- power bi数据分析_设置Power BI数据网关
- python如何导入datetime包
- 如何使用计算机计算平方面积,尺平方米换算计算器(面积单位换算器)
- python evn安装模块pip
- linux 用户 组区别吗,Linux用户组之主组和附加组
- 自从IDEA配上这个插件开发速度快了N倍
- 三角形的几何公式大全_高中数学公式、定理大全,你所需要的这里都有!
- 计算机桌面分区,明基XL2430T如何使用桌面分区?
- MATLAB 三维立体绘图