KubeKey轻量集群安装工具


KubeKey 一个开源的轻量级工具,用于部署 Kubernetes 集群。

KubeKey 提供了灵活、快速、方便的方式来安装 Kubernetes/K3sKubeSphere,以及相关的云原生附加组件。它也是扩展和升级集群的有效工具。

此外,KubeKey 还支持定制离线包(artifact),方便用户在离线环境下快速部署集群。有三种情况可以使用 KubeKey

  • 仅安装 Kubernetes
  • 用一个命令中安装 KubernetesKubeSphere
  • 首先安装 Kubernetes,然后使用  ks-installer  在其上部署 KubeSphere

KubeKey轻量集群安装工具


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 可以同时安装 KubernetesKubeSphere

  • 依赖要求
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 -

下载解压后可直接使用。

  • 从源代码生成二进制文件
$ git clone https://github.com/kubesphere/kubekey.git
$ cd kubekey
$ make kk

4. 工具使用 - 单节点

创建集群 + 单节点

  • [1] 开始使用

快速入门使用  all-in-one  安装,这是熟悉 KubeSphere 的良好开始。注意: 由于 Kubernetes 暂不支持大写 NodeNamehostname 中包含大写字母将导致后续安装过程无法正常结束

# 无法访问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. 相关文档

送人玫瑰,手有余香!


文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !
  目录