KubeKey 一个开源的轻量级工具,用于部署 Kubernetes 集群。
KubeKey
提供了灵活、快速、方便的方式来安装 Kubernetes
/K3s
和KubeSphere
,以及相关的云原生附加组件。它也是扩展和升级集群的有效工具。
此外,KubeKey
还支持定制离线包(artifact
),方便用户在离线环境下快速部署集群。有三种情况可以使用 KubeKey
。
- 仅安装
Kubernetes
- 用一个命令中安装
Kubernetes
和KubeSphere
- 首先安装
Kubernetes
,然后使用 ks-installer 在其上部署KubeSphere
1. 工具优势
基于 Go 语音开发,无依赖问题。
基于 Ansible
的安装程序具有大量软件依赖性,而 KubeKey
是使用 Go
语言开发的,可以消除在各种环境中出现的问题,从而提高安装成功率。
KubeKey
使用 Kubeadm
在节点上尽可能多地并行安装 K8s
集群,以降低安装复杂性并提高效率。与较早的安装程序相比,它将大大节省安装时间。支持将集群从 all-in-one
扩展到多节点集群甚至 HA
集群。将集群当作一个对象操作,即 CaaO
。
- 支持的环境 - Linux 发行版
# 建议使用 Linux Kernel 版本: `4.15 or later`
Ubuntu 16.04, 18.04, 20.04, 22.04
Debian Bullseye, Buster, Stretch
CentOS/RHEL 7
AlmaLinux 9.0
SUSE Linux Enterprise Server 15
- 支持的环境 - Kubernetes 版本
v1.19: v1.19.15
v1.20: v1.20.10
v1.21: v1.21.14
v1.22: v1.22.15
v1.23: v1.23.10 (default)
v1.24: v1.24.7
v1.25: v1.25.3
2. 要求和建议
安装使用前的前置要求,需要保证满足再开始使用。
/var/lib/docker
主要用于存储容器数据,在使用和操作过程中会逐渐增大。对于生产环境,建议 /var/lib/docker
单独挂盘。
- 最低资源要求 - 仅对于最小安装
KubeSphere
2
核虚拟CPU
4GB
内存20GB
储存空间
默认情况下,KubeKey
将安装 OpenEBS 来为开发和测试环境配置 LocalPV
,这对新用户来说非常方便。对于生产,请使用 NFS
/Ceph
/GlusterFS
或商业化存储作为持久化存储,并在所有节点中安装相关的客户端 。
- 操作系统要求
SSH
可以访问所有节点- 所有节点的时间同步
sudo
/curl
/openssl
应在所有节点使用docker
可以自己安装,也可以通过KubeKey
安装。Red Hat
在其Linux
发行版本中包括了SELinux
,建议关闭 SELinux或者将SELinux 的模式切换为Permissive
工作模式。
KubeKey
可以同时安装 Kubernetes
和 KubeSphere
。
- 依赖要求
Kubernetes 版本 ≥ 1.18 | 是否需要安装 |
---|---|
socat |
必须安装 |
conntrack |
必须安装 |
ebtables |
可选,但推荐安装 |
ipset |
可选,但推荐安装 |
ipvsadm |
可选,但推荐安装 |
- 网络和 DNS 要求
- 确保
/etc/resolv.conf
中的DNS
地址可用。否则,可能会导致集群中出现某些DNS
问题。 - 如果您的网络配置使用防火墙或安全组,则必须确保基础结构组件可以通过特定端口相互通信。建议您关闭防火墙或遵循链接配置:网络访问。
- 确保
3. 下载工具
工具可以在线下载,也可以通过上传方式到内容环境使用。
- 使用脚本获取
KubeKey
工具
# 无法访问github则需要加export
$ export KKZONE=cn
$ curl -sfL https://get-kk.kubesphere.io | sh -
- 下载
KubeKey
可执行文件 Releases page
下载解压后可直接使用。
- 从源代码生成二进制文件
$ git clone https://github.com/kubesphere/kubekey.git
$ cd kubekey
$ make kk
4. 工具使用 - 单节点
创建集群 + 单节点
- [1] 开始使用
快速入门使用 all-in-one
安装,这是熟悉 KubeSphere
的良好开始。注意: 由于 Kubernetes
暂不支持大写 NodeName
, hostname
中包含大写字母将导致后续安装过程无法正常结束
# 无法访问github则需要加export
$ export KKZONE=cn
# 创建集群
$ ./kk create cluster \
[--with-kubernetes version] [--with-kubesphere version]
# 使用默认版本创建一个纯Kubernetes集群
$ ./kk create cluster
# 创建指定一个支持的版本的Kubernetes集群
$ ./kk create cluster --with-kubernetes v1.19.8
# 创建一个部署了KubeSphere的Kubernetes集群
$ ./kk create cluster --with-kubesphere [version]
# 创建一个指定的container-runtime的Kubernetes集群
# docker, crio, containerd, isula
$ ./kk create cluster --container-manager containerd
- [2] 高级用法
可以使用高级安装来控制自定义参数或创建多节点集群。当指定安装 KubeSphere
时,要求集群中有可用的持久化存储。默认使用 localVolume
,如果需要使用其他持久化存储,请参阅 addons 配置。
# 无法访问github则需要加export
$ export KKZONE=cn
# 创建一个示例配置文件
$ ./kk create config \
[--with-kubernetes version] [--with-kubesphere version] \
[(-f | --filename) path]
# 使用默认配置创建一个示例配置文件
# 可以指定文件名称或文件所在的文件夹
$ ./kk create config [-f ~/myfolder/config-sample.yaml]
# 同时安装KubeSphere平台
$ ./kk create config --with-kubesphere
# 根据您的环境修改配置文件
$ vim config-sample.yaml
# 使用配置文件创建集群
$ ./kk create cluster -f ~/myfolder/config-sample.yaml
5. 工具使用 - 多集群
创建集群 + 多集群
默认情况下,Kubekey
将仅安装一个 Solo
模式的单集群,即未开启 Kubernetes
多集群联邦。如果您希望将 KubeSphere
作为一个支持多集群集中管理的中央面板,您需要在 config-example.yaml 中设置 ClusterRole
。关于多集群的使用文档,请参考 如何启用多集群。
- [1] 添加节点
# 将新节点的信息添加到集群配置文件
$ ./kk add nodes -f config-sample.yaml
- [2] 删除节点
# nodename指需要删除的节点名
$ ./kk delete node <nodeName> -f config-sample.yaml
- [3] 删除集群
# 以all-in-one模式
$ ./kk delete cluster
# 以多节点集群模式
$ ./kk delete cluster [-f config-sample.yaml]
- [4] 集群升级
# 以all-in-one模式
$ ./kk upgrade [--with-kubernetes version] [--with-kubesphere version]
# 以多节点集群模式
$ ./kk upgrade \
[--with-kubernetes version] [--with-kubesphere version] \
[(-f | --filename) path]
- [5] 启用 kubectl 自动补全
# 安装bash-completion
$ sudo apt-get install bash-completion
# 将completion脚本添加到你的~/.bashrc文件
$ echo 'source <(kubectl completion bash)' >> ~/.bashrc
# 将completion脚本添加到/etc/bash_completion.d目录
$ kubectl completion bash >/etc/bash_completion.d/kubectl
# 安装zsh-completion
$ sudo apt-get install zsh-completion
# 将completion脚本添加到你的~/.zshrc文件
$ echo 'source <(kubectl completion zsh)' >> ~/.zshrc
# 将completion脚本添加到/etc/bash_completion.d目录
$ kubectl completion zsh >/etc/zsh_completion.d/kubectl
6. 相关文档
送人玫瑰,手有余香!