用k8s资源方式创建k8s-clusterapi
cluster-api是k8s的一个子项目隶属于SIG Cluster Lifecycle,主要使用类似k8s风格的资源对象来管理k8s集群的生命周期
k8s的部署比较复杂,且每个发行版本稍微有些不应,cluster api则致力于通过k8s得资源对象来创建,管理k8s集群
安装
- clustar api的命令工具为
clusterctl
# m1 macos
curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.3.1/clusterctl-darwin-arm64 -o clusterctl
初始化管理集群服务端
- infrastructure参数指定基础架构供应商
clusterctl init --infrastructure vcluster
使用clusterctl部署集群
export HELM_VALUES="service:\n type: NodePort"
kubectl create namespace ${CLUSTER_NAMESPACE}
# 生成cluster-api的cr并应用
clusterctl generate cluster ${CLUSTER_NAME} \
--infrastructure vcluster \
--kubernetes-version ${KUBERNETES_VERSION} \
--target-namespace ${CLUSTER_NAMESPACE} | kubectl apply -f -
- 查看集群发现已经部署好了
❯ vcluster list
NAME NAMESPACE STATUS CONNECTED CREATED AGE CONTEXT
capi-test clusterapi-test Running 2022-12-19 15:40:46 +0800 CST 3m22s minikube
- 查看集群详情
clusterctl describe cluster capi-test
- 获取创建的集群的kube-config
clusterctl get kubeconfig capi-test
- 删除管理集群
# 删除 供应商 创建的命名空间和crd
clusterctl delete --infrastructure aws --include-namespace --include-crd
# 删除所有
clusterctl delete --all
命令补全
- zsh
# 已经有了此配置可以忽略
echo "autoload -U compinit; compinit" >> ~/.zshrc
clusterctl completion zsh > "${fpath[1]}/_clusterctl"