这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

快速开始

快速搭建体验平台功能

对于初次接触 KubeClipper 并想快速上手的用户,建议使用 All-in-One 安装模式,它能够帮助您零配置快速部署 KubeClipper。

准备工作

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

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

硬件推荐配置

  • 确保您的机器满足最低硬件要求:CPU >= 2 核,内存 >= 2GB。
  • 操作系统:CentOS 7.x / Ubuntu 18.04 / Ubuntu 20.04。

节点要求

  • 节点必须能够通过 SSH 连接。
  • 节点上可以使用 sudo / curl / wget / tar 命令。

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

部署 KubeClipper

下载 kcctl

KubeClipper 提供了命令行工具🔧 kcctl 以简化运维工作,您可以直接使用以下命令下载最新版 kcctl:

# curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | bash -
# 如果你在中国, 你可以在安装时使用 cn  环境变量, 此时我们会使用 registry.aliyuncs.com/google_containers 代替 k8s.gcr.io
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -

您也可以在 GitHub Release Page 下载指定版本。

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

kcctl version

开始安装

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

kcctl deploy

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

kcctl deploy --user root --passwd $SSH_PASSWD

私钥方式如下:

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

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

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

 _   __      _          _____ _ _
| | / /     | |        /  __ \ (_)
| |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
|    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
| |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
\_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                 | |   | |
                                 |_|   |_|

登录控制台

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

console

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

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

创建 kubernetes 集群

部署成功后您可以使用 kcctl 工具或者通过控制台创建 kubernetes 集群。在本快速入门教程中使用 kcctl 工具进行创建。

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

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

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

NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')

kcctl create cluster --master $NODE --name demo --untaint-master

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

kcctl get cluster -o yaml|grep status -A5

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

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

1 - 部署 AIO

部署 AIO 环境

对于初次接触 KubeClipper 并想快速上手的用户,建议使用 AIO(即 All-in-One,使用单个节点安装 KubeClipper)模式,它能够帮助您零配置快速部署 KubeClipper。

部署 KubeClipper

下载并安装 kcctl

KubeClipper 提供了命令行工具🔧 kcctl 以简化运维工作,您可以直接使用以下命令下载最新版 kcctl:

# 默认安装最新的发行版
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | bash -
# 安装指定版本
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_VERSION=v1.3.1 bash -
# 如果您在中国, 您可以在安装时使用 cn  环境变量, 此时 KubeClipper 会使用 registry.aliyuncs.com/google_containers 代替 k8s.gcr.io
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -

您也可以在 GitHub Release Page 下载指定版本。

可以通过以下命令验证 kcctl 是否安装成功:

# 如果一切顺利,您将看到 kcctl 版本信息
kcctl version

开始安装

您可以使用 kcctl deploy 快速安装部署 KubeClipper。kcctl 使用 SSH 访问最终部署 KubeClipper 的目标节点,因此需要您提供 SSH 访问凭证,传递凭证的方法如下:

Kcctl deploy [--user <username>] [--passwd <password> | --pk-file <private key path>]

示例:

# 使用私钥
kcctl deploy --user root --pk-file /root/.ssh/id_rsa
# 使用密码
kcctl deploy --user root --passwd password

执行 kcctl deploy 命令 kcctl 将会检查您的安装环境,若满足条件将自动进入安装流程。若您看到如下 KubeClipper banner 后即表示安装成功。

 _   __      _          _____ _ _
| | / /     | |        /  __ \ (_)
| |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
|    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
| |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
\_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                 | |   | |
                                 |_|   |_|

您也可以部署 master 版本的 KubeClipper,来体验最新的功能特性(master 版本没有经过严格验证,可能包含影响体验的未知错误)

  1. 安装 master 版本 kcctl
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_VERSION=master bash -
  1. 在安装服务器上设置环境变量
export KC_VERSION=master
  1. 以 AIO 方式部署 KubeClipper
kcctl deploy

登录控制台

安装完成后,打开浏览器,访问 http://<kc-server ip address> 即可进入 KubeClipper 控制台。(通常 kc-server ip 是您部署 kubeClipper 节点的 ip)

console

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

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

创建 Kubernetes 集群

部署成功后您可以使用 kcctl 工具或者通过控制台创建 Kubernetes 集群。在本快速入门教程中使用 kcctl 工具进行创建。

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

kcctl login -H https://<kc-server ip address>:8080 -u admin -p Thinkbig1

通过以下命令创建 Kubernetes 集群:

NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')

kcctl create cluster --master $NODE --name demo --untaint-master

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

kcctl get cluster -o yaml|grep status -A5

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

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

2 - 使用 Kubeclipper 离线创建 kubernetes 集群

如何使用 KC 平台离线创建 kubernetes 集群

1. 进入创建界面

登录 Kubeclipper 平台后点击如图所示按钮,进入集群创建界面

2. 配置集群节点

按照文字提示完成输入集群名称、选择节点等步骤

注意: master 节点数量不能为偶数

3. 配置集群

此步骤用于配置集群网络以及数据库、容器运行时等组件

选择离线安装并填写首先搭建好的镜像仓库地址

4. 配置存储

选择 nfs 存储,按照文字提示填写相应内容

5. 安装完成

完成所有配置确认安装

安装成功,集群正常运行

3 - 制作 K8S 组件离线安装包

制作 K8S 组件离线安装包

本文档介绍如何制作 K8S 组件离线安装包,对于没有外网的环境,可以通过离线安装包进行安装。

当前 kubeclipper v1.4 版本离线部署包中仅包含以下 K8S 组件:

  • k8s: v1.27.4
  • containerd: v1.6.4
  • calico: v3.26.1

对于有特殊需求的用户,可以通过本文档介绍的方法自行制作离线组件包,然后在 kubeclipper 中使用。

1. 准备工作

按照 文档 部署好 kubeclipper,确保 kcctl 命令可以正常使用。

kcctl version

以下操作均在 kubeclipper 部署节点上执行,使用 kcctl resource 命令进行组件包上传。

2. 确认组件版本

根据以下两个表格信息,确认需要制作的组件包版本,使用推送脚本或者手动上传组件包到 kubeclipper。

k8s 组件包表 记录当前对象存储里已制作好的各类组件包,后续我们将逐步开源更多组件包以及打包脚本。
k8s 版本与组件推荐版本对应关系表 记录了各个 k8s 版本对应的组件版本,可以根据自己的需求选择对应的组件版本。

k8s 版本与组件推荐版本对应关系表

k8s 版本containerd 版本docker 版本calico 版本
v1.28.0v1.6.4-v3.26.1
v1.27.4v1.6.4-v3.26.1
v1.26.7v1.6.4-v3.26.1
v1.25.4v1.6.4-v3.22.4
v1.24.8v1.6.4-v3.22.4
v1.23.9v1.6.420.10.20v3.22.4
v1.23.6v1.6.420.10.20v3.22.4
v1.22.12v1.6.420.10.20v3.22.4
v1.21.14v1.6.420.10.20v3.22.4
v1.20.15v1.6.420.10.20v3.16.10
v1.19.16v1.6.420.10.20v3.16.10
v1.18.20v1.6.420.10.20v3.16.10

k8s 组件包表

组件名称版本
k8sv1.28.0
k8sv1.27.4
k8sv1.26.7
k8sv1.25.4
k8sv1.24.8
k8sv1.23.9
k8sv1.23.6
k8sv1.22.12
k8sv1.21.14
k8sv1.20.15
k8sv1.19.16
k8sv1.18.20
containerd1.6.4
docker20.10.20
calicov3.26.1
calicov3.22.4
calicov3.21.2
calicov3.16.10
calicov3.11.2

3. 推送离线组件包到 kubeclipper

push_component.sh 脚本:

#!/usr/bin/env bash
# usage: ./push_component.sh [component] [version] [arch]
# usage: ./push_component.sh k8s v1.23.9 amd64

set -e

if type kcctl &>/dev/null; then
  kcctl version
else
  echo "kcctl command not found, please install it first!"
fi

PKG_URL_PREFIX="https://oss.kubeclipper.io/packages"
fileList=()

name=$1
if [[ "${name}" != "k8s" ]] && [[ "${name}" != "calico" ]] && [[ "${name}" != "containerd" ]] && [[ "${name}" != "docker" ]] && [[ "${name}" != "metallb" ]]; then
  echo "only 'k8s', 'calico','containerd','docker','metallb' packages are supported. default: $name"
  exit 1
fi
version=$2
if [[ -z "${version}" ]]; then
  echo "Please specify the package version!"
  exit 1
fi
arch=$3
if [[ "${arch}" != "amd64" ]] && [[ "${arch}" != "arm64" ]]; then
  echo "only 'amd64', 'arm64' architectures are supported. default: $arch"
  exit 1
fi
``
build_dir=${name}/${version}/${arch}
pkg_name=${name}-${version}-${arch}.tar.gz
pkg_type="k8s"

packaging() {
  case $name in
  k8s)
    fileList=(
      images.tar.gz
      configs.tar.gz
      manifest.json
    )
    pkg_type="k8s"
    ;;
  calico)
    fileList=(
      images.tar.gz
      manifest.json
    )
    if [[ "$(echo -e "3.26\n${version}" | sort -V | tail -n 1)" == "${version}" ]]; then
      fileList=(
        images.tar.gz
        charts.tgz
        manifest.json
      )
    fi
    pkg_type="cni"
    ;;
  containerd,docker)
    fileList=(
      configs.tar.gz
      manifest.json
    )
    pkg_type="cri"
    ;;
  metallb)
    fileList=(
      images.tar.gz
      manifest.json
    )
    pkg_type="metallb"
    ;;
  esac

  for file in "${fileList[@]}"; do
    echo "download ${file}..."
    wget ${PKG_URL_PREFIX}/${build_dir}/${file} -P ${build_dir}
  done

  echo "packaging ${pkg_name}..."
  tar -zcvf ${pkg_name} ${build_dir}
  echo "packaging ${pkg_name} done"
  echo "push ${pkg_name} to kc..."
  kcctl resource push --pkg ${pkg_name} --type ${pkg_type}
  echo "push ${pkg_name} to kc done"
}

packaging
echo "clean up..."
rm -rf ${build_dir}
rm -rf ${pkg_name}
echo "clean up done"

使用 push_component.sh 脚本推送组件包到 kubeclipper:

chmod +x push_component.sh

# 推送 k8s 组件包
./push_component.sh k8s v1.23.9 amd64

# 推送 calico 组件包
./push_component.sh calico v3.22.4 amd64

# 推送 containerd 组件包
./push_component.sh containerd v1.6.4 amd64

# 推送 docker 组件包
./push_component.sh docker 20.10.20 amd64

# 推送 metallb 组件包
./push_component.sh metallb v0.13.7 amd64

4. 查看离线组件包

使用 kcctl resource list 命令查看已上传的离线组件包:

kcctl resource list

5. 使用离线组件包

登录 kubeclipper 控制台,点击创建集群,进入集群配置页,镜像类型选择离线,即可选择已上传的离线组件包。

集群配置01 集群配置02