分类 服务器技术 下的文章

什么是Kubebuilder

Kubebuilder 是一个基于 CRD(Custom Resource Definitions,自定义资源定义)构建 Kubernetes API 的框架。它允许开发者使用 CRD 来构建 Kubernetes API、Controller 和 Admission Webhook。Kubebuilder 的主要目的是简化 Kubernetes API 和工具的构建过程,减少样板代码的编写,使得开发者可以更专注于业务逻辑的实现。

Kubebuilder 的工作流程大致如下:

创建一个新的工程目录。 创建一个或多个资源 API CRD 并将字段添加到资源中。 在控制器中实现协调循环(reconcile loop),watch 额外的资源。 在集群中运行测试(自动安装 CRD 并自动启动控制器)。 更新引导集成测试测试新字段和业务逻辑。 使用用户提供的 Dockerfile 构建和发布容器。

什么是code-generator

Kubernetes code-generator 是一个代码生成工具集合,它位于 Kubernetes 代码库中的 staging/src/k8s.io/code-generator 包中,这个工具的主要目的是自动化生成与 Kubernetes 相关的客户端库、API 服务器(API server)和其他与 Kubernetes 相关的代码,以提高代码的可维护性和一致性,减少重复代码的开发工作。

code-generator 的主要功能包括:

自动生成客户端库 clientset:通过定义自定义资源的 API 规范,code-generator 可以自动生成用于访问和操作这些自定义资源的客户端库。 自动生成 API 服务器代码:可以根据自定义资源的 API 规范,自动生成与之对应的 API 服务器代码,使得开发者可以快速构建自己的自定义资源的 API 服务器,并将其部署到 Kubernetes 集群中。 自动生成 DeepCopy 方法:对于 Kubernetes 对象,深拷贝是一种常见的操作,用于创建对象的副本。 自动生成其他辅助代码:除了上述功能外,code-generator 还可以生成其他与 Kubernetes 相关的辅助代码,如列表(List)、转换器(Converter)等。 code-generator 包含多个生成工具(gen tools),例如:

deepcopy-gen:为每个类型生成 DeepCopy 方法。 client-gen:生成类型化客户端集合(typed client sets)。 informer-gen:生成基于 Kubernetes API 资源的 Informer。 lister-gen:生成 Kubernetes API 资源的 Lister。 register-gen:自动生成 API 资源类型的注册表代码。 conversion-gen:用于生成 Kubernetes 对象之间的转换器(Converter)。 openapi-gen:用于生成 Kubernetes API 的 OpenAPI 规范。

综上,这两个工具都可以提升我们管理CRD的效率。首先我们使用Kubebuilder生成我们想要的crd对应的type和对应的crd文件。code-generator可以帮助我们生成与api交互需要的资源,比如lister。

接下来老高会讲解如何使用kubebuilder和code-generator构建你的crd套件。

阅读剩余部分

老高的测试环境中机器很多,每次登录都要输入密码很烦人,下面的脚本可以批量导入公钥到指定多个ip中,使用后记得把文件删除掉!

sshpass在macos下可能不好搞定,brew因为安全问题默认不给安装,可以通过别人写好的脚本来安装,其他系统自己想办法!很简单。 brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

阅读剩余部分

alpine

注:如果有@test或者@edge,可以先add后在sed

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

ubuntu

sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
     sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

感谢ustc

brew 以及 homebrew-core

# 替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

# 替换homebrew-core.git:

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

bottles

# 对于bash用户:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

# 对于zsh用户
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

重置

# 重置brew.git:
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git

# 重置homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git

老高才入坑qnap(威联通),在ssh到NAS后,发现没有常用的zsh、git、sudo,这可让用惯了centos,debian系统的老高情何以堪。

一番查阅后,老高发现原来QNAP所使用的系统QTS可以使用Entware,也就是opkg最为包管理系统,这不就简单了,老高以前在OpenWrt上用的就是这个玩意儿!

本篇内容可以让你学会如何在QNAP上安装Entware-ng,以及zsh,git,sudo还有ohmyzsh等常用工具,并且保证他们不会被系统还原!

阅读剩余部分

老高于今年(2019)初收到了搬瓦工要停止OPENVZ的旧版服务器,同时列表中auto renew的选项被强制置灰。9.9刀的绝版服务器就这样被印上了大大的字,而且还是两台!😂

跑数据库的那台机器4月到期,于是把数据库先迁移了,跑在一台内存1G的机器上,由于上面还跑了一个git服务和ss,剩余内存也就400MB左右。下来就剩web服务器了,一看8月到期,先就这样吧!

于是就一晃到了今天。。。

阅读剩余部分