Kubernetes 开发相关汇总
k8s 开发
开发环境需求
- 4 CPU
- 8G 内存
- 50G 磁盘
- Ubuntu 20.04
软件包
- pkg
apt update
apt install build-essential jq curl lsb-release gnupg python3-pip openssl rsync gcc g++ gawk autoconf automake python3-cmarkgfm acl libacl1-dev libxxhash-dev liblz4-dev libssl-dev
pip install pyyaml- 安装 Docker
- 配置 Containerd 加速 Docker 镜像拉取加速器
- 安装 etcd:单节点部署
- 安装 Golang 1.8.x 并配置环境变量:Go 环境部署、常用开发工具介绍
- export GOROOT=/usr/local/go
- export PATH=$PATH:$GOROOT/bin
- export GOPATH=/usr/local/gopath
- Go Modules 代理仓库服务
- 安装 openssl 或 cfssl:cfssl 证书签发工具使用
- Clone 源码包,推荐放到
$GOPATH下
mkdir $GOPATH/src/k8s.io && cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes
git tag | grep v1.25
git check v1.25.0
// cmd 目录为函数入口,即 main 函数- 编译
// 编译一个,输出目录 ./_output/local/bin/linux/amd64/
sudo make WHAT="cmd/kube-apiserver"
// 编译所有
make all
// 本地提供服务
sudo ./hack/local-up-cluster.sh
// 可以通过 ./hack/lib/golang.sh 中 `gogcflags\goldflags` 参数调整 debug 模式
// 启动后,默认的 kubeconfig 文件在 /var/run/kubernetes/admin.kubeconfig
// 使用命令行工具:cluster/kubectl.sh get nodes
// 清理
sudo make clean相关软件包
- kubernetes/client-go Go client for Kubernetes
- kubernetes/apimachinery 针对 Kubernetes 和类 Kubernetes API 对象的Scheme, typing, encoding, decoding, and conversion packages
- kubernetes-sigs/controller-runtime 是一套用于构建控制器的 go 库。被 Kubebuilder 和 Operator SDK 所利用
- kubernetes/code-generator kube API 类型的生成器
- sigs.k8s.io/yaml 在 Golang 中对 YAML 进行编码和解编更好的方法
yaml.YAMLToJSON
k8s 扩展开发
Kubernetes 几种常见的二次开发模式:
client-go与普通的 SDK 使用一样,示例:- Operator:一套完善的 Kubernetes 扩展软件,用来管理 k8s 的原生应用
- 调度器的开发
- CNI 开发
- CSI 开发
- CRI 开发
示例
最近更新
最新评论