• Kubernetes教程(十一)---使用 KubeClipper 通过一条命令快速创建 k8s 集群


    来自:指月 https://www.lixueduan.com

    原文:https://www.lixueduan.com/posts/kubernetes/11-install-by-kubeclipper/

    本文主要记录了如何使用开源项目 KubeClipper 通过一条命令快速创建 k8s 集群。


    如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。

    扫描下方二维码或搜索公众号【探索云原生】即可订阅


    之前写了一篇使用 kubeadm 创建集群的文章: Kubernetes教程(一)—使用 kubeadm 创建 k8s 集群(containerd),整个流程下来其实还是比较麻烦的,体验并不是太好,今天给大家推荐一个优秀的开源项目:KubeClipper

    1. 什么是 KubeClipper

    KubeClipper 旨在提供易使用、易运维、极轻量、生产级的 Kubernetes 多集群全生命周期管理服务,让运维工程师从繁复的配置和晦涩的命令行中解放出来,实现一站式管理跨区域、跨基础设施的多 K8S 集群。

    KubeClipper 的 3个优势:

    • 1)易使用:图形化页面
      • 提供 Web 控制台,通过点点鼠标即可创建一个 k8s 集群
    • 2)极轻量:架构简单,少依赖
      • 不依赖 ansible,使用方便
    • 3)生产级:易用性和专业性兼顾
      • 提供在线、离线、代理方式部署以及多版本 K8S、CRI、CNI 选择
      • 提供了离线部署方式对国内用户极为友好,毕竟网络才是国内用户装 k8s 的一大难题。

    关于该项目的更多信息见:Github Repo 以及官方的这篇介绍文章:KubeClipper——轻量便捷的 Kubernetes 多集群全生命周期管理工具

    一句话概括:KubeClipper 是一个轻量便捷的 Kubernetes 多集群全生命周期管理工具

    2. 快速开始

    准备工作

    KubeClipper 本身并不会占用太多资源,但是为了后续更好的运行 Kubernetes 建议硬件配置不低于最低要求。

    您仅需参考以下对机器硬件和操作系统的要求准备一台主机。

    硬件推荐配置
    • 确保您的机器满足最低硬件要求:CPU >= 2 核,内存 >= 2GB。
    • 操作系统:CentOS 7.x / Ubuntu 18.04 / Ubuntu 20.04。
    节点要求
    • 节点必须能够通过 SSH 连接。
    • 节点上可以使用 sudo / curl / wget / tar / gzip命令。

    建议您的操作系统处于干净状态(不安装任何其他软件),否则可能会发生冲突。

    实际上这些要求基本上不用特别处理,随便找一台机器都满足条件,本文就使用一台 2C4G 的 CentOS 7.9 机器来部署。

    安装 KubeClipper

    下载 kcctl

    KubeClipper 提供了命令行工具🔧 kcctl,我们先安装 kcctl,安装命令如下:

    curl -sfL https://oss.kubeclipper.io/kcctl.sh | KC_REGION=cn sh -
    
    • 1

    通过以下命令检测是否安装成功:

    kcctl version
    
    • 1
    开始安装

    然后使用 kcctl 安装 kubeclipper,一条命令即可,模板如下:

    kcctl deploy  [--user root] (--passwd SSH_PASSWD | --pk-file SSH_PRIVATE_KEY)
    
    • 1

    只需要提供 ssh user 以及 ssh passwd 或者 ssh 私钥即可在本机部署 KubeClipper。

    若使用 ssh passwd 方式则命令如下所示:

    kcctl deploy --user root --passwd $SSH_PASSWD
    
    • 1

    私钥方式如下:

    kcctl deploy --user root --pk-file $SSH_PRIVATE_KEY
    
    • 1

    本文使用密码进行部署,具体命令如下:

    kcctl deploy --user root --passwd root
    
    • 1

    执行该命令后,Kcctl 将检查安装环境,若满足条件将会进入安装流程。在打印出如下的 KubeClipper banner 后即表示安装完成。

     _   __      _          _____ _ _
    | | / /     | |        /  __ \ (_)
    | |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
    |    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
    | |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
    \_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                     | |   | |
                                     |_|   |_|
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    安装过程中需要去阿里云下载离线安装包,速度有点慢(后续会优化),需要大概 3分钟时间。

    登录控制台

    安装完成后,打开浏览器,访问 http://$IP 即可进入 KubeClipper 控制台。

    您可以使用默认帐号密码 admin / Thinkbig1 进行登录。

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

    文中所有操作均通过命令行工具完成,至于控制台相关功能则由大家自行探索了~

    安装 K8S 集群

    部署成功后可以使用 kcctl 工具或者通过控制台创建 k8s 集群, 这里咱们使用 kcctl 工具进行创建。

    命令行,程序猿最后的倔强。

    首先使用默认帐号密码进行登录获取 token,便于后续 kcctl 和 kc-server 进行交互。

    kcctl login -H http://localhost -u admin -p Thinkbig1
    
    • 1

    然后使用以下命令创建 k8s 集群:

    NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')
    
    kcctl create cluster --name demo --master $NODE --untaint-master
    
    • 1
    • 2
    • 3

    大概 3 分钟左右即可完成集群创建,也可以使用以下命令查看集群状态

    kcctl get cluster -o yaml|grep status -A5
    
    • 1

    也可以进入控制台查看实时日志

    进入 Running 状态即表示集群安装完成,您可以使用 kubectl get cs 命令来查看集群健康状况。

    至此,我们的单节点版本就算是结束了,相比之下确实比使用原生 kubeadm 体验好多了。

    3. 多节点版本

    为了保证高可用,k8s 集群至少需要 3个 master 节点,同时 kubeclipper 使用 etcd 作为后端存储,为了保证高可用,也建议至少使用 3 节点及以上来部署。

    同时生产环境一般建议 kubeclipper server 节点单独存在,不建议将 server 节点同时作为 agent 节点使用。

    节点规划如下:

    • 3 台 作为 kubeclipper server 部署使用
    • 5 台 作为 kubeclipper agent 节点,部署 k8s 使用。

    资源有限,依旧是 2C4G 的 CentOS 7.9 机器

    安装 KubeClipper

    同样的,还是需要先安装 kcctl 工具,安装方式和之前是一样的,一条命令搞定:

    kcctl 工具只需要在任意一台节点上安装即可,只要能使用 ssh 访问其他节点即可。

    为了和本教程保持一致,建议在其中的一台 server 节点上安装。

    curl -sfL https://oss.kubeclipper.io/kcctl.sh | KC_REGION=cn sh -
    
    • 1

    接着使用 kcctl 部署 KubeClipper,其模板如下所示:

    kcctl deploy  [--user root] (--passwd SSH_PASSWD | --pk-file SSH_PRIVATE_KEY) (--server SERVER_NODES) (--agent AGENT_NODES)
    
    • 1

    需要手动指定 server 节点以及 agent 节点。

    若使用 密码 方式则命令如下所示:

    kcctl deploy --user root --passwd $SSH_PASSWD --server SERVER_NODES --agent AGENT_NODES
    
    • 1

    私钥 方式如下:

    kcctl deploy --user root --pk-file $SSH_PRIVATE_KEY --server SERVER_NODES --agent AGENT_NODES
    
    • 1

    本教程使用 密码 方式进行部署,具体命令如下:

    kcctl deploy --server 192.168.10.217,192.168.10.196,192.168.10.136 --agent 192.168.10.58,192.168.10.225,192.168.10.19,192.168.10.27,192.168.10.4 --passwd root --pkg https://oss.kubeclipper.io/release/v1.1.0/kc-amd64.tar.gz
    
    • 1

    3 个 server 节点,5 个 agent 节点,多个 IP 之间使用逗号,分隔

    同样的,在打印出如下的 KubeClipper banner 后即表示安装完成。

     _   __      _          _____ _ _
    | | / /     | |        /  __ \ (_)
    | |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
    |    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
    | |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
    \_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                     | |   | |
                                     |_|   |_|
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    创建高可用 K8S 集群

    这里我们同样使用 kcctl 工具,通过命令行方式进行创建。老规矩,使用默认账号密码进行登录:

    kcctl login -H http://localhost -u admin -p Thinkbig1
    
    • 1

    然后查看一下当前的 agent 节点信息:

    [root@server-1 ~]# kcctl get node
    +--------------------------------------+----------+---------+----------------+-------------+-----+--------+
    |                  ID                  | HOSTNAME | REGION  |       IP       |   OS/ARCH   | CPU |  MEM   |
    +--------------------------------------+----------+---------+----------------+-------------+-----+--------+
    | ba6a5399-387f-4abd-a1b8-585e0094bf25 | agent-5  | default | 192.168.10.4   | linux/amd64 |   2 | 3938Mi |
    | 2c3bb128-0081-4efa-aced-9d5560a5aa63 | agent-4  | default | 192.168.10.27  | linux/amd64 |   2 | 3938Mi |
    | e5a79dbe-d872-4118-90f5-5d86bbf34392 | agent-3  | default | 192.168.10.19  | linux/amd64 |   2 | 3938Mi |
    | 74aed462-221c-4053-a897-e2166f805285 | agent-2  | default | 192.168.10.225 | linux/amd64 |   2 | 3938Mi |
    | c78a59a3-3907-4d2e-99df-5fc85560bd1d | agent-1  | default | 192.168.10.58  | linux/amd64 |   2 | 3938Mi |
    +--------------------------------------+----------+---------+----------------+-------------+-----+--------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    接下来就可以使用 kcctl create cluster 命令创建集群了,命令模版如下:

    kcctl create cluster (--name CLUSTER_NAME) (--master NODES) [--worker NODES][ --untaint-master] 
    
    • 1

    更多信息见 kcctl create cluster -h

    在本教程中,我们将 agent1、2、3 作为 master 节点,agent4、5作为 worker 节点,完整命令如下:

    kcctl create cluster --name demo --master 192.168.10.58,192.168.10.225,192.168.10.19 --worker 192.168.10.27,192.168.10.4
    
    • 1

    这样一个 5 节点的集群大概需要 5 分钟分钟左右可以完成创建,也可以使用以下命令查看集群状态

    kcctl get cluster -o yaml|grep status -A5
    
    • 1

    您也可以进入控制台查看实时日志。

    进入 Running 状态即表示集群安装完成,您可以使用 kubectl get cs 命令来查看集群健康状况。

    ssh 到任意 master 节点上查看集群状态:

    [root@agent-1 ~]# kubectl get cs
    Warning: v1 ComponentStatus is deprecated in v1.19+
    NAME                 STATUS    MESSAGE                         ERROR
    scheduler            Healthy   ok                              
    controller-manager   Healthy   ok                              
    etcd-0               Healthy   {"health":"true","reason":""} 
    [root@agent-1 ~]# kubectl get node
    NAME      STATUS   ROLES                  AGE     VERSION
    agent-1   Ready    control-plane,master   6m41s   v1.23.6
    agent-2   Ready    control-plane,master   6m5s    v1.23.6
    agent-3   Ready    control-plane,master   6m14s   v1.23.6
    agent-4   Ready    <none>                 5m17s   v1.23.6
    agent-5   Ready    <none>                 5m18s   v1.23.6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    可以看到,5 节点都处于 Ready 状态,说明集群安装成功。

    4. 小结

    本文演示了如何通过 KubeClipper 使用简单的命令创建 K8S 集群。

    整个流程可以简单的分为 3 个步骤:

    • 1)下载 kcctl
    curl -sfL https://oss.kubeclipper.io/kcctl.sh | KC_REGION=cn sh -
    
    • 1
    • 2)使用 kcctl 部署 kubeclipper
    kcctl deploy  [--user root] (--passwd SSH_PASSWD | --pk-file SSH_PRIVATE_KEY) (--server SERVER_NODES) (--agent AGENT_NODES)
    
    • 1
    • 3)使用 kcctl 或控制台创建 K8S 集群
    kcctl create cluster (--name CLUSTER_NAME) (--master NODES) [--worker NODES][ --untaint-master] 
    
    • 1

    文中所有操作均通过命令行工具完成,至于 控制台相关功能则由大家自行探索了~

    如果觉得体验还不错的话,请不要吝啬你的 star ,KubeClipper 还处于快速成长阶段,欢迎大家积极参与~


    如果你对云原生技术充满好奇,想要深入了解更多相关的文章和资讯,欢迎关注微信公众号。

    扫描下方二维码或搜索公众号【探索云原生】即可订阅


  • 相关阅读:
    【C++】运算符重载 ① ( 运算符重载简介 | 运算符重载推衍 | 普通类型数据相加 | 对象类型数据相加 - 普通函数实现 / 运算符重载实现 | 运算符重载调用 - 函数名调用 / 运算符调 )
    MacOs基于docker搭建linux内核编译与调试环境
    写给Python社群的第4课:字典和集合,又是一组新概念
    仿真2. 离散事件仿真
    com.genuitec.eclipse.springframework.springnature
    .NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
    机器学习笔记 - 用于3D物体检测的KITTI数据集的使用及说明
    缓存雪崩导致的危害和解决办法
    数据库同步有哪些方式?【怎么保障目标和源数据一致性】
    《500强高管谈VE》-面向STAKEHOLDERS东方企业的VM
  • 原文地址:https://blog.csdn.net/java_1996/article/details/126440001