栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kubekey快速安装高可用k8s集群

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubekey快速安装高可用k8s集群

KubeKey

KubeKey(由 Go 语言开发)是一种全新的安装工具,替代了以前使用的基于 ansible 的安装程序。KubeKey 为您提供灵活的安装选择,您可以仅安装 Kubernetes,也可以同时安装 Kubernetes 和 KubeSphere。

KubeKey 是 KubeSphere 社区开源的一款高效集群部署工具,运行时默认使用 Docker , 也可对接 Containerd CRI-O iSula 等 CRI 运行时,且 ETCD 集群独立运行,支持与 K8s 分离部署,提高环境部署灵活性。它提供了一种灵活、快速、便捷的方式来仅安装 Kubernetes/K3s,或同时安装 Kubernetes/K3s 和 KubeSphere,以及其他云原生插件。除此之外,它也是扩展和升级集群的有效工具。

KubeKey 的几种使用场景:

  • 仅安装 Kubernetes;
  • 使用一个命令同时安装 Kubernetes 和 KubeSphere;
  • 扩缩集群;
  • 升级集群;
  • 安装 Kubernetes 相关的插件(Chart 或 YAML)。

项目地址:https://github.com/kubesphere/kubekey
官方文档:https://kubesphere.io/zh/docs/installing-on-linux/introduction/kubekey/

KubeKey 如何运作

下载 KubeKey 之后,您可以使用可执行文件 kk 来进行不同的操作。无论您是使用它来创建,扩缩还是升级集群,都必须事先使用 kk 准备配置文件。此配置文件包含集群的基本参数,例如主机信息、网络配置(CNI 插件以及 Pod 和 Service CIDR)、仓库镜像、插件(YAML 或 Chart)和可插拔组件选项(如果您安装 KubeSphere)。有关更多信息,请参见示例配置文件。

准备好配置文件后,您需要使用 ./kk 命令以及不同的标志来进行不同的操作。这之后,KubeKey 会自动安装 Docker,并拉取所有必要的镜像以进行安装。安装完成后,您还可以检查安装日志。

KubeKey 2.0.0 重大更新–全新的任务编排框架


基于模块化的设计思路,KubeKey v2.0.0 实现了通用且规范化的任务编排框架。其中定义了host, pipeline, module, task和action等对象,实现了模块化的任务调度引擎。基于该框架,用户可根据具体需求及业务逻辑,便捷的开发自定义任务流水线执行程序以及扩展 KubeKey 原有的任务流水线。

相关文档可参考:开发者指南。

更加方便的离线部署流程

KubeKey v2.0.0 中提供了一种全新的自定义离线部署 Kubernetes 集群的解决方案,为此新增了清单 manifest 和制品 artifact 的概念:

manifest:离线部署安装包自定义配置文件。
artifact:离线部署自定义安装包。

在过去,用户需要准备部署工具,镜像 tar 包以及其他相关的二进制文件,每位用户需要部署的 Kubernetes 版本和涉及到的镜像都可能是不同的。现在使用 KubeKey ,用户仅需使用清单 manifest 文件来定义将要离线部署的集群环境需要的内容,再通过该 manifest 来导出制品 artifact 文件即可完成准备工作。离线部署时只需要 KubeKey 二进制文件 和 artifact 就可快速、简单的在环境中部署镜像仓库、 Kubernetes 以及 KubeSphere。

为什么选择 KubeKey
  • **以前基于 ansible 的安装程序依赖于许多软件,例如 Python。**KubeKey 由 Go 语言开发,可以消除在多种环境中出现的问题,确保成功安装。
  • KubeKey 支持多种安装选项,例如 All-in-One、多节点安装以及离线安装。
  • KubeKey 使用 Kubeadm 在节点上尽可能多地并行安装 Kubernetes 集群,使安装更简便,提高效率。与旧版的安装程序相比,它极大地节省了安装时间。
  • KubeKey 提供内置高可用模式,支持一键安装高可用 Kubernetes 集群。
  • KubeKey 旨在将集群作为对象来进行安装,即 CaaO。
下载 KubeKey 能正常访问 GitHub/Googleapis

从 GitHub Release Page 下载 KubeKey 或者直接运行以下命令。

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -

备注

通过以上的命令,可以下载 KubeKey 的最新版本 (v2.0.0)。您可以更改命令中的版本号来下载特定的版本。

访问 GitHub/Googleapis 受限

首先运行以下命令,以确保您从正确的区域下载 KubeKey。

export KKZONE=cn

运行以下命令来下载 KubeKey:

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -

备注

下载 KubeKey 之后,如果您将其转移到访问 Googleapis 受限的新机器上,请务必再次运行 export KKZONE=cn,然后继续执行以下步骤。

支持的环境 Linux 发行版
  • Ubuntu 16.04, 18.04, 20.04
  • Debian Buster, Stretch
  • CentOS/RHEL 7
  • SUSE Linux Enterprise Server 15

建议使用 Linux Kernel 版本: 4.15 or later
可以通过命令 uname -srm 查看 Linux Kernel 版本。

Kubernetes 版本
  • v1.17:   v1.17.9
  • v1.18:   v1.18.6
  • v1.19:   v1.19.8
  • v1.20:   v1.20.6
  • v1.21:   v1.21.5 (default)
  • v1.22:   v1.22.1

查看更多支持的版本点击这里

安装KubeKey

KubeKey 支持多种安装选项,例如 All-in-One、多节点安装以及离线安装。

KubeSphere 为用户提供轻量级安装程序 KubeKey(该程序支持安装 Kubernetes、KubeSphere 及相关插件),安装过程简单而友好。KubeKey 不仅能帮助用户在线创建集群,还能作为离线安装解决方案。

以下是可用的安装选项:

  • All-in-One:在单个节点上安装 KubeSphere(仅为让用户快速熟悉 KubeSphere)。
  • 多节点安装:在多个节点上安装 KubeSphere(用于测试或开发)。
  • 在 Linux 上离线安装:将 KubeSphere 的所有镜像打包(便于在 Linux 上进行离线安装)。
  • 高可用安装:安装具有多个节点的高可用 KubeSphere 集群,该集群用于生产环境。
  • 最小化安装:仅安装 KubeSphere 所需的最少系统组件。以下是最低资源要求:
    • 2 个 CPU
    • 4 GB 运行内存
    • 40 GB 存储空间
  • 全家桶安装:安装 KubeSphere 的所有可用系统组件,例如 DevOps、服务网格、告警等。
要求和建议
  • 最低资源要求(仅对于最小安装 KubeSphere):
    • 2 核虚拟 CPU
    • 4 GB 内存
    • 20 GB 储存空间

/var/lib/docker 主要用于存储容器数据,在使用和操作过程中会逐渐增大。对于生产环境,建议 /var/lib/docker 单独挂盘。

  • 操作系统要求:
    • SSH 可以访问所有节点。
    • 所有节点的时间同步。
    • sudo/curl/openssl 应在所有节点使用。
    • docker 可以自己安装,也可以通过 KubeKey 安装。
    • Red Hat 在其 Linux 发行版本中包括了SELinux,建议关闭SELinux或者将SELinux的模式切换为Permissive[宽容]工作模式
  • 建议您的操作系统环境足够干净 (不安装任何其他软件),否则可能会发生冲突。
  • 如果在从 dockerhub.io 下载镜像时遇到问题,建议准备一个容器镜像仓库 (加速器)。为 Docker 守护程序配置镜像加速。
  • 默认情况下,KubeKey 将安装 OpenEBS 来为开发和测试环境配置 LocalPV,这对新用户来说非常方便。对于生产,请使用 NFS/Ceph/GlusterFS 或商业化存储作为持久化存储,并在所有节点中安装相关的客户端 。
  • 如果遇到拷贝时报权限问题Permission denied,建议优先考虑查看SELinux的原因。
  • 依赖要求:

KubeKey 可以同时安装 Kubernetes 和 KubeSphere。根据 KubeSphere 所安装版本的不同,您所需要安装的依赖可能也不同。请参考以下表格查看您是否需要提前在节点上安装有关的依赖。

Kubernetes 版本 ≥ 1.18Kubernetes 版本 < 1.18
socat必须安装可选,但推荐安装
conntrack必须安装可选,但推荐安装
ebtables可选,但推荐安装可选,但推荐安装
ipset可选,但推荐安装可选,但推荐安装
ipvsadm可选,但推荐安装可选,但推荐安装
# 1、环境初始化,在所有节点上安装相关依赖
yum install -y socat conntrack ebtables ipset

# 2、所有节点关闭selinux和firewalld
setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld

# 3、所有节点时间同步

yum install -y chrony
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai
  • 网络和 DNS 要求:
    • 确保 /etc/resolv.conf 中的 DNS 地址可用。否则,可能会导致集群中出现某些 DNS 问题。
    • 如果您的网络配置使用防火墙或安全组,则必须确保基础结构组件可以通过特定端口相互通信。建议您关闭防火墙或遵循链接配置:网络访问。
开始安装

为 kk 添加可执行权限:

chmod +x kk

查看kubekey版本

./kk version

查看kubekey支持的kubernertes版本

./kk version --show-supported-k8s
[root@master kubekey]# ./kk version --show-supported-k8s
v1.15.12
v1.16.8
v1.16.10
v1.16.12
v1.16.13
v1.17.0
v1.17.4
v1.17.5
v1.17.6
v1.17.7
v1.17.8
v1.17.9
v1.18.3
v1.18.5
v1.18.6
v1.18.8
v1.19.0
v1.19.8
v1.19.9
v1.20.4
v1.20.6
v1.20.10
v1.21.4
v1.21.5
v1.22.1
v1.23.0

在本快速入门教程中,您只需执行一个命令即可进行安装,其模板如下所示:

./kk create cluster [--with-kubernetes version] [--with-kubesphere version]

若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令:

./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1

备注

  • 安装 KubeSphere 3.2.1 的建议 Kubernetes 版本:1.19.x、1.20.x、1.21.x 或 1.22.x(实验性支持)。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.21.5。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵。
  • 一般来说,对于 All-in-One 安装,您无需更改任何配置。
  • 如果您在这一步的命令中不添加标志 --with-kubesphere,则不会部署 KubeSphere,KubeKey 将只安装 Kubernetes。如果您添加标志 --with-kubesphere 时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。
  • KubeKey 会默认安装 OpenEBS 为开发和测试环境提供 LocalPV 以方便新用户。对于其他存储类型,请参见持久化存储配置。

执行该命令后,KubeKey 将检查您的安装环境,结果显示在一张表格中。有关详细信息,请参见节点要求和依赖项要求。输入 yes 继续安装流程。

备注

您可能需要配置端口转发规则并在安全组中开放端口,以便外部用户访问控制台。

登录至控制台后,您可以在系统组件中查看各个组件的状态。如果要使用相关服务,您可能需要等待部分组件启动并运行。您也可以使用 kubectl get pod --all-namespaces 来检查 KubeSphere 相关组件的运行状况。

启用可插拔组件(可选)

本指南仅适用于默认的最小化安装。若要在 KubeSphere 中启用其他组件,请参见启用可插拔组件。

Kubernetes 集群配置

当创建 Kubernetes 集群时,您可以使用 KubeKey 去生成含有集群基本信息的配置文件 (config-sample.yaml)。有关配置文件中的 Kubernetes 相关参数,请参阅以下示例。

  kubernetes:
    version: v1.21.5
    imageRepo: kubesphere
    clusterName: cluster.local
    masqueradeAll: false
    maxPods: 110
    nodeCidrMaskSize: 24
    proxyMode: ipvs
  network:
    plugin: calico
    calico:
      ipipMode: Always
      vxlanMode: Never
      vethMTU: 1440
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []
    privateRegistry: ""
  addons: []

以下表格会详细描述上面的参数。

参数描述
kubernetes
versionKubernetes 安装版本。如未指定 Kubernetes 版本,KubeKey v2.0.0 默认安装 Kubernetes v1.21.5。有关更多信息,请参阅支持矩阵。
imageRepo用于下载镜像的 Docker Hub 仓库
clusterNameKubernetes 集群名称。
masqueradeAll*如果使用纯 iptables 代理模式,masqueradeAll 即让 kube-proxy 对所有流量进行源地址转换 (SNAT)。它默认值为 false。
maxPods*Kubelet 可运行 Pod 的最大数量,默认值为 110。
nodeCidrMaskSize*集群中节点 CIDR 的掩码大小,默认值为 24。
proxyMode*使用的代理模式,默认为 ipvs。
network
plugin是否使用 CNI 插件。KubeKey 默认安装 Calico,您也可以指定为 Flannel。请注意,只有使用 Calico 作为 CNI 插件时,才能使用某些功能,例如 Pod IP 池。
calico.ipipMode*用于集群启动时创建 IPv4 池的 IPIP 模式。如果值设置除 Never 以外的值,则参数 vxlanMode 应该被设置成 Never。此参数允许设置值 Always,CrossSubnet 和 Never。默认值为 Always。
calico.vxlanMode*用于集群启动时创建 IPv4 池的 VXLAN 模式。如果该值不设为 Never,则参数 ipipMode 应该设为 Never。此参数允许设置值 Always,CrossSubnet 和 Never。默认值为 Never。
calico.vethMTU*最大传输单元(maximum transmission unit 简称 MTU)设置可以通过网络传输的最大数据包大小。默认值为 1440。
kubePodsCIDRKubernetes Pod 子网的有效 CIDR 块。CIDR 块不应与您的节点子网和 Kubernetes 服务子网重叠。
kubeServiceCIDRKubernetes 服务的有效 CIDR 块。CIDR 块不应与您的节点子网和 Kubernetes Pod 子网重叠。
registry
registryMirrors配置 Docker 仓库镜像以加速下载。有关详细信息,请参阅配置 Docker 守护进程。
insecureRegistries设置不安全镜像仓库的地址。有关详细信息,请参阅测试不安全仓库。
privateRegistry*配置私有镜像仓库,用于离线安装(例如,Docker 本地仓库或 Harbor)。有关详细信息,请参阅离线安装。

备注

  • *默认情况下,KubeKey 不会在配置文件中定义这些参数,您可以手动添加这些参数并自定义其值。
  • addons 用于安装云原生扩展 (Addon)(YAML 或 Chart)。有关详细信息,请参阅此文件。
  • 此页面仅列出 KubeKey 创建的配置文件中的部分参数。有关其他参数的详细信息,请参阅此示例文件。
集群运维 创建集群 快速开始

快速入门使用 all-in-one 安装,这是熟悉 KubeSphere 的良好开始。

注意: 由于 Kubernetes 暂不支持大写 NodeName, hostname 中包含大写字母将导致后续安装过程无法正常结束

命令

如果无法访问 https://storage.googleapis.com, 请先执行 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 集群 (例如 --with-kubesphere v3.1.0)

    ./kk create cluster --with-kubesphere [version]
    
  • 创建一个指定的 container runtime 的 Kubernetes 集群(docker, crio, containerd and isula)

    ./kk create  cluster --container-manager containerd
    
高级用法

您可以使用高级安装来控制自定义参数或创建多节点集群。具体来说,通过指定配置文件来创建集群。

如果无法访问 https://storage.googleapis.com, 请先执行 export KKZONE=cn.

  1. 首先,创建一个示例配置文件

    ./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
      
  2. 根据您的环境修改配置文件 config-sample.yaml

注意: 由于 Kubernetes 暂不支持大写 NodeName, worker 节点名中包含大写字母将导致后续安装过程无法正常结束

当指定安装KubeSphere时,要求集群中有可用的持久化存储。默认使用localVolume,如果需要使用其他持久化存储,请参阅 addons 配置。

  1. 使用配置文件创建集群。

    ./kk create cluster -f ~/myfolder/config-sample.yaml
    
启用多集群管理

默认情况下,Kubekey 将仅安装一个 Solo 模式的单集群,即未开启 Kubernetes 多集群联邦。如果您希望将 KubeSphere 作为一个支持多集群集中管理的中央面板,您需要在 config-example.yaml 中设置 ClusterRole。关于多集群的使用文档,请参考 如何启用多集群。

开启可插拔功能组件

KubeSphere 从 2.1.0 版本开始对 Installer 的各功能组件进行了解耦,快速安装将默认仅开启最小化安装(Minimal Installation),Installer 支持在安装前或安装后自定义可插拔的功能组件的安装。使最小化安装更快速轻量且资源占用更少,也方便不同用户按需选择安装不同的功能组件。

KubeSphere 有多个可插拔功能组件,功能组件的介绍可参考 配置示例。您可以根据需求,选择开启安装 KubeSphere 的可插拔功能组件。我们非常建议您开启这些功能组件来体验 KubeSphere 完整的功能以及端到端的解决方案。请在安装前确保您的机器有足够的 CPU 与内存资源。开启可插拔功能组件可参考 开启可选功能组件。

添加节点

通过 KubeKey,您可以在安装后增加节点数量,以满足更高的资源需求,尤其是在生产环境中。有关更多信息,请参见添加新节点。

将新节点的信息添加到集群配置文件,然后应用更改。

./kk add nodes -f config-sample.yaml
删除节点

您需要清空节点负载,然后再删除节点。有关更多信息,请参见删除节点。

通过以下命令删除节点,nodename指需要删除的节点名。

./kk delete node  -f config-sample.yaml
删除集群

卸载 KubeSphere 意味着将其从您的机器上移除,该操作不可逆,请谨慎操作。

有关更多信息,请参见卸载 KubeSphere 和 Kubernetes。

您可以通过以下命令删除集群:

  • 如果您以快速入门(all-in-one)开始:
./kk delete cluster
  • 如果从高级安装开始(使用配置文件创建的集群):
./kk delete cluster [-f config-sample.yaml]
集群升级 单节点集群

升级集群到指定版本。

./kk upgrade [--with-kubernetes version] [--with-kubesphere version] 
  • --with-kubernetes 指定kubernetes目标版本。
  • --with-kubesphere 指定kubesphere目标版本。
多节点集群

通过指定配置文件对集群进行升级。

./kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --filename) path]
  • --with-kubernetes 指定kubernetes目标版本。
  • --with-kubesphere 指定kubesphere目标版本。
  • -f 指定集群安装时创建的配置文件。

注意: 升级多节点集群需要指定配置文件. 如果集群非kubekey创建,或者创建集群时生成的配置文件丢失,需要重新生成配置文件,或使用以下方法生成。

Getting cluster info and generating kubekey’s configuration file (optional).

./kk create config [--from-cluster] [(-f | --filename) path] [--kubeconfig path]
  • --from-cluster 根据已存在集群信息生成配置文件.
  • -f 指定生成配置文件路径.
  • --kubeconfig 指定集群kubeconfig文件.
  • 由于无法全面获取集群配置,生成配置文件后,请根据集群实际信息补全配置文件。
启用 kubectl 自动补全

KubeKey 不会启用 kubectl 自动补全功能。请参阅下面的指南并将其打开:

先决条件:确保已安装 bash-autocompletion 并可以正常工作。

# ubuntu的方式
# 安装 bash-completion
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


# centos的方式
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
# 将 completion 脚本添加到你的 ~/.bashrc 文件
echo "source <(kubectl completion bash)" >> ~/.bashrc

建议使用oh-my-zsh,增加对kubectl命令自动补全支持。

修改~/.zshrc文件,增加如下两行:

source <(kubectl completion zsh)
参考链接:
  1. https://github.com/kubesphere/kubekey
  2. https://kubesphere.io/zh/docs/installing-on-linux/introduction/kubekey/
  3. https://github.com/kubesphere/kubekey/blob/master/README_zh-CN.md
  4. kubekey All-in-One
  5. kubekey 多节点安装
  6. kubekey离线安装
  7. 在 VMware vSphere 安装 KubeSphere/
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号