1 - 创建集群
创建集群准备工作
- 您需要准备充足的可用节点,如需添加节点,参见“添加节点”教程。
- 准备好需要部署的 kubernetes、CRI、calico、CSI 和其他插件的镜像或二进制文件,kubeclipper 提供了推荐的版本,您可以根据平台所处网络环境,选择在线 / 离线后,直接在页面上选取使用。您也可以将部署所需的镜像上传至自己的镜像仓库,并在部署时指定。更多安装配置,参考“集群配置”章节。
创建单节点实验集群
点击“集群管理”>“集群”,进入集群列表页面,点击左上角“创建集群”按钮。
进入创建集群向导页面的“节点配置”页面。填写“集群名称”,如 “test”,不需选择“集群模版”。选择一个可用节点,添加为控制节点,并在污点管理列表中,将 master 节点的污点移除。点击“下一步”按钮。
进入创建集群向导页面的“集群配置”页面。选择“离线安装”,“镜像仓库”不需填写,其他配置都可使用默认配置,点击“快速创建”按钮,跳转配置确认页面,点击“确认”按钮。
单节点的实验集群创建完成,您可以在集群详情页查看集群详情,也可以点击“查看日志”按钮,查看集群创建过程中的实时日志。
使用镜像仓库创建集群
如果创建的集群中包含较大的镜像,推荐您将所有镜像上传到特定的镜像仓库,创建集群会更快速更顺畅。
- 添加镜像仓库。点击“集群管理”>“镜像仓库”,进入镜像仓库列表页面,点击左上角“添加”按钮。在添加镜像仓库的弹窗中输入镜像仓库名称和存放有镜像的仓库地址,点击“确定”按钮。
- 创建集群。点击“集群管理”>“集群”,进入集群列表页面,点击左上角“创建集群”按钮。按需配置集群节点,在“集群配置”页面的“镜像仓库”中,选择第一步添加的镜像仓库,根据需要完成集群其他配置后创建集群。
使用集群模版创建集群
您可以使用集群模版,简化集群创建流程。
- 添加模版。保存模版有两种方式,您可以在“集群管理”>“模版管理”页面,添加集群模版,以备创建集群时使用。也可以点击集群操作中的“更多”>“保存为模版”,将已存在的集群配置保存为模版,以便创建出和该集群同等配置的 kubernetes 集群。
- 创建集群。点击“集群管理”>“集群”,进入集群列表页面,点击左上角“创建集群”按钮,进入创建集群页面,填写“集群名称”,如 “demo”,选择第一步中保存的集群模版,添加所需节点,点击右下角“快速创建”按钮,跳转至“配置确认”页面,核对模版信息无误后,点击“确认”按钮,创建集群。
集群配置指南
节点配置
在节点配置页面,您可以对节点进行以下配置:
- 区域:集群所属区域,添加节点时可为节点指定物理的或逻辑的区域,使用该区域下节点创建的 kubernetes 集群也属于该区域,不支持使用跨区域的多个节点创建集群。
- 控制节点:为集群指定奇数个的控制节点,生产环境一般使用3个控制节点以实现高可用。
- 工作节点:根据业务规模,为新集群添加工作节点。
- 污点管理:您可以为已添加的节点配置污点,kubeclipper 会自动为控制节点添加不允许调度(noschedule)的污点,您也可以根据需要进行更改。
- 节点标签:您可以根据需要为已添加的集群节点配置标签。
您可以按业务需要配置所需节点。如果需要创建非高可用的实验集群,也可以仅添加一个控制节点,并将控制节点自动添加的污点移除,详细操作参见“创建单节点实验集群”。
集群配置
在集群配置页面,您可以对集群进行以下配置:
- 安装方式和镜像仓库:
镜像仓库为空 | 指定镜像仓库 | |
---|---|---|
在线(公网环境) | 配置包来源:从 kubeclipper.io 下载。 镜像拉取方式:镜像默认从官方镜像仓库拉取,如 kubernetes 镜像从 k8s.gcr.io 拉取、calico 从 docker.io 拉取。如果您设置了国内镜像代理,镜像会从您指定的 “KC_IMAGE_REPO_MIRROR” 代理仓库拉取。 | 配置包来源:从 kubeclipper.io 下载。 镜像拉取方式:从填写的镜像仓库拉取,组件将默认继承该仓库地址,请确保该仓库存在相关组件镜像;组件也会提供独立的镜像仓库参数,设置后组件镜像从该地址拉取。 |
离线(内网环境) | 配置包来源:从本地 kubeclipper 集群 server 节点下载,您可以使用 kcctl resource list 命令查看本地可用配置包,或使用 kcctl resource push 命令上传所需配置包。 镜像拉取方式:从本地 kubeclipper 集群 server 节点下载,下载后由 CRI 进行镜像导入。您可以使用 kcctl resource list 命令查看本地可用镜像包,或使用 kcctl resource push 命令上传所需镜像包。 | 配置包来源:从本地下载,您可以使用 kcctl resource list 命令查看本地可用配置包,或使用 kcctl resource push 命令上传所需配置包。 镜像拉取方式:从填写的镜像仓库拉取,组件将默认继承该仓库地址,请确保该仓库存在相关组件镜像;组件也会提供独立的镜像仓库参数,设置后组件镜像从该地址拉取。kubeclipper 提供 Docker Registry 方案,并使用 kcctl registry 命令行进行管理,您也可以使用其他自有镜像仓库。 |
kubernetes 版本:指定集群 kubernetes 版本。当您选择离线安装的时候,可以从当前环境中配置包的 kubernetes 版本中选择;当您选择在线安装的时候,可以从 kubeclipper 官方推荐的版本中选择。
ETCD 数据目录:可指定 ETCD 数据目录,默认为/var/lib/etcd。
kubelet 数据目录:可指定 kubelet 数据目录,默认为 /var/lib/kubelet。
CertSANs:kubernetes 集群 ca 证书签名的 ip 或者域名,可填写多个。
容器运行时:根据指定 kubernetes 版本,kubernetes 版本在 v1.20.0 之前,容器运行时默认 docker,之后默认 containerd;v1.24.0 之后不支持 docker。
容器运行时版本:指定 containerd / docker 版本。与 kubernetes 相同,当您选择离线安装的时候,可以从当前环境中配置包的版本中选择;当您选择在线安装的时候,可以从 kubeclipper 官方推荐的版本中选择。
Containerd 数据目录:可填写 config.toml 配置中的 root dir,默认为/var/lib/containerd。
Docker 数据目录:可填写 daemon.json 配置中的 root dir,默认为/var/lib/docker。
Containerd 镜像仓库:存放 containerd 镜像的仓库地址,config.toml 配置中的 registry.mirrors,可填写多个。
Docker 镜像仓库:存放 docker 镜像的仓库地址,daemon.json 配置中的 insecure registry,可填写多个。
DNS 域名:kubernetes 集群的域名,默认为 cluster.local。
Worker 负载 IP:用于 worker 节点到多 master 的负载均衡,单一 master 不需要设置。
外部访问 IP:可以填写一个浮动 IP 给用户访问,可为空。
备份空间:集群备份文件存储位置。
CNI 配置
当前版本仅支持 Calico 作为集群 CNI。
Calico 将用户设置的 pod cidr 分为若干个 block (网段),根据业务需求动态的分配给需要的节点,并在节点中通过 bgp peer 维护集群节点的路由表。
例如:容器的地址池:172.25.0.0/16,动态分配的网段池: 172.25.0.0 - 172.25.255.192 (172.25.0.0/26 即 10 个比特位),动态分配的网段数: 1023,每个网段的 pod 数量为: 61 (193-254),总 pod 数量为1023 * 61 = 62403,相对最大节点数(按照200业务 pod 为基准值):312。
目前不建议大于50个节点的集群,大于50个节点的集群建议手动配置 route reflection,用来优化集群中的节点的路由表维护的稳定性。
使用 Calico 作为集群 CNI,您需要进行以下配置:
Calico 模式:支持5种网络模式:
- Overlay-IPIP-All: 使用 IP-in-IP 技术打通不同节点的 pod 的网络,通常这样的方式使用在底层平台是 iaas 的环境之中,当然如果你底层网路环境直接是物理设备的也完全可以使用只不过效率和灵活度都会大打折扣,需要注意的是你需要确认底层网络环境(underlay)是支持 IPIP 协议的.(使用 overlay 的网络方式对网络性能造成一定的影响)。
- Overlay-Vxlan-All: 使用 IP-in-IP 技术打通不同节点的 pod 的网络,通常这样的方式使用在底层平台是 iaas 的环境之中,当然如果你底层网路环境直接是物理设备的也完全可以使用只不过效率和灵活度都会大打折扣,他理论上可以在任何的网络环境上运行,通常在底层环境不支持 IPIP 协议的时候我们会使用他.(使用 overlay 的网络方式对网络性能造成一定的影响)。
- BGP: 使用 IP-in-IP 技术打通不同节点的 pod 的网络,通常这样的方式使用在裸机的环境上,当然底 Iaas 平台支持 BGP 的话也是可以使用的,这种模式下 pod 的 ip 通信是通过 集群中的各个节点中互相交换路由表来完成 pod 之间的通信的,如果你需要手动打通多个集群之间的 pod 网络需要注意你分配的地址断不应该有冲突。
- Overaly-IPIP-Cross-Subnet: 使用 IP-in-IP 技术打通不同节点的 pod 的网络,通常这样的方式使用在底层平台是 iaas 的环境之中,需要注意的是你需要确认底层网络环境(underlay)是支持 IPIP 协议的.和 Overlay-IPIP-All 的不同之处在于,如果 2 个不同节点但在同一个网段中的上 pod 互相通信时是通过路由表,这样可以提高在不同节点但在同一个网段中的上 pod 互相通信时的效率。
- Overaly-Vxlan-Cross-Subnet: 和 Overaly-IPIP-Cross-Subnet 逻辑相似不再做重复的解释。
Calico 版本:指定 calico 版本。与 kubernetes 相同,当您选择离线安装的时候,可以从当前环境中配置包的版本中选择;当您选择在线安装的时候,可以从 kubeclipper 官方推荐的版本中选择。
IP版本:可指定 IP 版本为 IPV4 或 IPV4 IPV6 双栈。
服务子网:填写 service 子网 CIDR,v4 默认为:10.96.0.0/16,v6 默认为 fd03::/112,注意 Service 网络不得与任何主机网络重叠。
Pod CIDR:填写 Pod 子网 CIDR,v4 默认:172.25.0.0/24,v6 默认为 fd05::/120,注意 Pod 网络不得与任何主机网络重叠。
pod网路的底层:
- first-found(默认):程序会根据 ipfamily (v4 或 v6)遍历所有的有效的 ip 地址(local,loop back,docker bridge等会被自动排除)通常如果是多网卡时会排除默认网关以外的网卡的 ip 作为节点之间的路由地址。
- can-reach:通过检查域名或者 ip 的可达性来设置节点之间的路由地址。
- interface:根据正则表达式获取所有满足的网卡设备名称并返回第一个满足表达式网卡的地址作为节点之间的路由地址。
MTU:为 Calico 环境配置最大传输单元(MTU),建议不大于1440,默认为1440,详情见 https://docs.projectcalico.org/networking/mtu。
存储配置
Kubeclipper当前版本内置了 NFS 作为集群外接存储。
对接 NFS 类型的外接存储,您需要设置以下内容:
字段 | 作用说明 | 填写说明/可选项 |
---|---|---|
服务地址 | ServerAddr,NFS的服务地址 | 必填 |
共享路径 | SharedPath,NFS的服务挂载路径 | 必填 |
存储类 | StorageClassName,存储类的名称 | 默认为 nfs-sc,可自定义名称,不可与集群其他存储类重复 |
回收策略 | ReclaimPolicy,VPC回收策略 | 删除 Delete / 保留 Retain |
挂载选项 | MountOptions,NFS 的 options 参数,如nfsvers=3 | 选填,可填写多个 |
副本数 | Replicas,NFS provisioner副本数 | 默认为1 |
设置完外接存储后,下方卡片会显示您已经开启的存储,您可以选择一个存储类作为默认存储,对于未指定特定StorageClass 的 PVC ,会直接使用默认的存储类。
配置确认
您可以在配置确认页面浏览集群的配置信息,确认无误后,点击“确认“按钮。也可以点击卡片右侧的“编辑”按钮,跳回到相应步骤修改集群信息。
安装集群可能需要较长时间,您可以在集群详情页面查看操作日志,跟踪集群安装状态。
设置国内镜像代理(可选)
Q: 设置国内镜像代理有什么作用?
A: 设置了国内镜像代理,使用在线安装功能时,会从指定代理拉取 kubernetes 相关镜像,避免在国内无法访问 gcr 而导致集群安装失败问题。
以下设置方法需在执行 kcctl deploy
部署命令的机器上完成,任选其一即可。
**方式一:**设置 KC_IMAGE_REPO_MIRROR 环境变量(推荐)
# 设置环境变量,推荐使用阿里云镜像代理,您也可以自行设定
export KC_IMAGE_REPO_MIRROR="registry.aliyuncs.com/google_containers"
**方式二:**设置 /etc/kc/kc.env 环境变量文件
# 创建 kc 目录
mkdir -pv /etc/kc
# 创建 kc.env 文件并传入环境变量信息
cat <<EOF > /etc/kc/kc.env
KC_IMAGE_REPO_MIRROR="registry.aliyuncs.com/google_containers"
EOF
2 - 集群托管
Kubeadm 集群托管
托管由 kubeadm 创建和管理的 kubernetes 集群,kubeclipper 会通过 kubeconfig 文件,获取集群和节点信息,并导入到 kubeclipper 平台中。
点击“集群管理”>“集群托管”按钮进入集群托管页面,点击左上角“添加”按钮,在添加提供商弹窗中,填写提供商名称(如 kubeadm-demo)和描述后,填写以下信息:
- 区域:提供商下的集群和节点在 kubeclipper 平台中的所属区域。
- 提供商类型:选择 kubeadm。
- 节点连接方式:集群节点的连接方式,可以选择“私钥”或者“密码”,您需要确保可以通过所选方式 ssh 到集群节点。
- 选择“私钥”,需要输入节点用户名和私钥信息。
- 选择“密码”,需要输入节点用户名和密码信息。
- 集群名称:作为在本平台的展示名称,不能与其他集群重复。
- KubeConfig:托管集群的 KubeConfig 文件。
填写完成后点击“确定”按钮,将集群和节点导入到平台中。点击提供商名称(kubeadm-demo),进入提供商详情页,您可以查看提供商下的集群,并对提供商执行以下操作:
- 同步:系统将每隔4小时定期同步集群信息,您也可以点击“同步”按钮手动执行。
- 编辑:编辑提供商的名称、描述、访问信息、节点连接方式。
- 移除:移除集群信息,但集群不会被卸载。
托管集群管理
您可以点击“集群管理”>“集群”进入集群列表页面,查看包括托管集群和本地集群在内的所有集群列表,对于不同集群,支持的管理操作如下表所示:
注意:托管的 kubeadm 集群安装插件或外接存储的镜像来源会默认使用 docker.io,如果您处于离线环境,需要在安装插件时填写可访问的离线镜像仓库地址,该离线镜像仓库的地址需要预先添加到 cri 的私有镜像仓库配置,参见 CRI 镜像仓库配置 。
功能 | Kubeclipper 创建的集群 | 托管的 kubeadm 集群 |
---|---|---|
查看日志 | ✔︎ | ✔︎ |
任务失败后重试 | ✔︎ | ✔︎ |
访问 kubectl | ✔︎ | ✔︎ |
编辑 | ✔︎ | ✔︎ |
保存为模版 | ✔︎ | ✘ |
CRI 镜像仓库配置 | ✔︎ | ✔︎ |
添加/移除集群节点 | ✔︎ | ✔︎ |
备份和恢复管理 | ✔︎ | ✔︎ |
版本升级 | ✔︎ | ✘ |
删除集群 | ✔︎ | ✘ |
移除集群(提供商) | / | ✔︎ |
重置状态 | ✔︎ | ✔︎ |
集群插件管理 | ✔︎ | ✔︎ |
更新集群证书 | ✔︎ | ✔︎ |
查看 kubeconfig | ✔︎ | ✔︎ |
3 - 集群管理
集群操作日志查看
在集群详情页面,点击“操作日志”标签页,可以查看集群操作日志列表。点击操作日志右侧“查看日志”按钮,可以在弹窗中查看全部步骤和节点的详细日志。点击左侧步骤名称,可查看执行步骤详细的日志输出。
在集群操作执行过程中,点击查看日志,您可以实时查看到日志更新来跟踪操作执行情况。对于执行失败的任务,您也可以通过查看日志,找到红色圆点标注的执行步骤和节点,快速定位错误,排查操作失败原因。
任务失败后重试
对于任务执行失败,但排查错误原因后不需要修改任务参数的情况,您可以点击操作日志右侧的“从断点处重试”按钮,从断点处重新执行任务。
注意:重试操作并不是万能的,您需要自行判断任务执行失败的原因,处理后如果不需要更改执行任务时填写的参数,就可以点击重试按钮,从错误处重新开始执行。
集群操作(如创建、恢复、升级等)执行失败,可能会导致集群状态显示为“xx失败”并无法正常执行其他操作,如果从断点处重试也无法执行成功,您可以参考运维文档,手动修复集群问题。问题修复后,您可以点击集群右侧“更多”>“集群状态”>“重置状态”按钮,重置集群至正常状态。
访问集群 kubectl
Kubectl 是 Kubernetes 命令行工具,您可以用它在 Kubernetes 集群上运行命令。Kubectl 可用于部署应用、查看和管理集群资源、查看日志等。
您可以访问运行中集群的 kubectl,点击集群操作中的“更多“>”访问 kubectl”,就可以在集群 kuebectl 弹窗中执行 kubectl 命令行操作。
集群设置
编辑
您可以点击集群列表右侧“更多”>“集群设置”>“编辑”按钮,编辑集群描述、备份空间、外部访问 IP、集群标签信息。
保存为模版
您可以点击集群列表右侧“更多”>“集群设置”>“保存为模版”按钮,将集群信息保存为模版,以便再次创建相似配置的集群时使用。
CRI 镜像仓库配置
Docker 和 Containerd 使用 dockerhub 作为默认镜像仓库,如果您需要使用其他镜像仓库(特别是使用自签名 https 仓库或者 http 仓库),您需要配置 CRI 镜像仓库。
点击集群右侧“更多”>“集群设置”>“CRI 镜像仓库”按钮,在 CRI 镜像仓库弹窗中,配置您需要的镜像仓库,您可以选择平台中已存在的镜像仓库,也可以临时填写镜像仓库地址。对于自签名 https 仓库或者 http 仓库,建议您先在“集群管理”>“镜像仓库”页面添加仓库信息,再在此操作中配置。
集群节点管理
在集群详情页的“节点”列表页面,您可以查看当前集群中的节点列表,节点的规格、状态和角色信息。
添加集群节点
当集群负载较高时,您可以通过为集群添加节点来达到主动扩容的目的,添加新的“节点”不会影响现有的业务的运行。
在集群详情页的节点列表标签页下,点击左侧的“添加节点”按钮,在弹窗中选择可用节点,设置节点标签,点击“确认”按钮。当前版本仅支持添加工作节点。
移除集群节点
在集群详情页的节点列表标签页下,您可以点击节点右侧的 “移除”按钮移除节点。当前版本仅支持移除工作节点。
注意:移除集群节点,您需要注意生产中的安全问题,避免应用发生中断。
集群备份和恢复
KubeClipper 对 kubernetes 集群的备份主要为备份 ETCD 数据库数据,以及 kubernetes 的资源对象备份,如 namespace,deployment、configMap。对资源自身产生的文件和数据不做备份,例如对集群中运行的 mysql pod,该 mysql pod 产生的数据和文件,不会为之备份,同理,文件类的 pv 对象下的文件,也不做备份,仅仅备份 pv 这个对象。KubeClipper 提供的备份功能是热备份,备份期间不影响集群的使用。KubeClipper 虽然不反对在集群 “繁忙期” 备份,但也强烈不赞成在集群 “繁忙期” 备份。
创建备份空间
执行备份之前,您需要先为集群设置备份空间,即设置备份文件的存储位置。备份空间的存储类型可以是 FS 存储或 S3 存储,下面以节点本地存储、NFS 存储和 MINIO 存储为例:
- 节点本地存储(仅适用单节点实验集群):
- 创建存储目录。连接集群 master 节点终端(可参见连接节点终端),使用 mkdir 命令,在 master 节点中创建“/root/backup”目录。
- 创建备份空间。点击“集群管理”>“备份空间”,进入备份空间列表页,点击右上角“创建”按钮,在创建备份空间弹窗中,输入“备份空间名称”,如 “local”,选择“存储类型”为 “FS”,填写“备份路径”,如 “/root/backup”。
- 设置集群备份空间。创建集群时,在“集群配置”页面选择“备份空间”为 “local”,或者编辑已有集群,在编辑集群弹窗中的“备份空间”中选择 “local”。
注意:使用本地节点存储备份文件,不需要引入外部存储,缺点是如果本地节点遭到破坏,备份文件也会丢失,所以强烈不赞成在生产环境中使用。
- NFS:
准备 NFS 存储。准备一台 NFS 服务,并在 NFS 服务器上创建一个用于存放备份文件的目录,如 “/data/kubeclipper/cluster-backups”。
挂载存储目录。连接集群 master 节点终端(可参见连接节点终端),使用 mkdir 命令,在每个 master 节点中创建 “/data/kubeclipper/cluster-backups” 目录,并 mount 到 NFS 服务器的 /data/kubeclipper/cluster-backups 目录即可。
命令示例:
mount -t nfs { NFS_IP }:/data/kubeclipper/cluster-backups /opt/kubeclipper/cluster-backups -o proto=tcp -o nolock
创建备份空间。点击“集群管理”>“备份空间”,进入备份空间列表页,点击右上角“创建”按钮,在创建备份空间弹窗中,输入“备份空间名称”,如 “nfs”,选择“存储类型”为 “FS”,填写“备份路径”为 “/opt/kubeclipper/cluster-backups”。
设置集群备份空间。创建集群时,在“集群配置”页面选择“备份空间”为 “nfs”,或者编辑已有集群,在编辑集群弹窗中的“备份空间”中选择 “nfs”。
- MINIO:
- 准备 MINIO 存储。搭建 MINIO 服务,部署过程参考官网 https://docs.min.io/docs/minio-quickstart-guide.html,也可以使用已有 MINIO 服务。
- 创建备份空间。点击“集群管理”>“备份空间”,进入备份空间列表页,点击右上角“创建”按钮,在创建备份空间弹窗中,输入“备份空间名称”,如 “minio”,选择“存储类型”为 “S3”,填写 “bucket 名称”,如 “kubeclipper-backups”,该 bucket 将由 kubeclipper 自动创建,“Endpoint” 中填写第一步 MINIO 存储服务的 ip 和端口号,填写服务用户名和密码,点击“确定”按钮。
- 设置集群备份空间。创建集群时,在“集群配置”页面选择“备份空间”为 “minio”,或者编辑已有集群,在编辑集群弹窗中的“备份空间”中选择“minio”。
您可以在“集群管理”的“备份空间”页面查看所有备份空间列表和详细信息,并执行以下操作:
编辑:编辑备份空间描述,和 S3 类型备份空间的用户名/密码。
删除:删除备份空间,备份空间下存在备份文件的,不允许删除。
集群备份
您可以点击集群操作中的“更多”>“备份和恢复”> “集群备份”按钮,备份集群 ETCD 数据。
您可以在集群详情页面的备份标签页下,查看当前集群的所有备份文件,还可以对备份执行以下操作:
编辑:编辑备份描述。
恢复:执行集群恢复操作,将集群恢复至指定备份状态。
删除:删除指定备份文件。
定时备份
您也可以为集群创建定时备份,点击集群操作中的“更多”>“备份和恢复”> “定时备份”按钮,在定时备份弹窗中,输入定时备份名称、执行类型(重复执行/仅执行一次)和执行时间,并为重复执行的定时备份设置有效备份个数,点击“确认”按钮。
kubeClipper 会在您设置的执行时间为集群执行备份任务,备份文件会自动命名为“集群名称-定时备份名称-随机码”,对于重复执行的定时备份,kubeClipper 会在该定时任务下的备份文件超过有效备份个数时,自动删除超出个数的较早的备份文件。
定时备份添加完成后,可以在集群详情页的“定时备份”标签页查看定时备份信息,也可以在“备份”标签页查看定时备份产生的备份文件。
对于定时备份任务,您还可以执行以下操作:
编辑:编辑定时备份任务执行时间,和重复执行的定时备份的有效备份个数。
启用/禁用:禁用的定时备份任务将暂时停止执行。
删除:删除定时备份任务。
集群备份恢复
如果您在集群正常运行期间执行恢复操作,则 KubeClipper 将对该集群进行覆盖式恢复,就是备份文件里面的 etcd 数据,覆盖现有的数据。
您可以在集群详情页的备份标签页下,点击备份右侧的 “恢复”按钮;或点击集群操作中的“更多”>“备份和恢复”>“恢复集群”按钮,在恢复集群弹窗中选择需要恢复的备份,可以将当前集群恢复至指定备份状态。
注意:集群升级后,将无法再恢复到升级前版本的备份。
集群状态
集群版本升级
如当集群版本不满足需要,您可以为集群升级 kubernetes 版本。与创建集群一样,您需要准备好集群版本所需配置包和目标版本的 kubernetes 镜像并上传至指定位置,详情参见创建集群准备工作。
点击集群操作的“更多”>“集群状态”> “集群升级”按钮,在集群升级弹窗中选择安装方式和镜像仓库,选择升级的目标版本,升级的安装方式和 kubernetes 版本的配置与创建集群相同,详情参见集群配置指南。
集群升级可以跨小版本,但不支持略过次版本的升级,如您可以从 v1.20.2 升级到 v1.20.13,或由 v1.20.x 升级到 v1.21.x,但不支持从 v1.20.x 升级到 v1.22.x。对于 1.23.x 版本,暂不支持升级到 1.24.x 版本。
升级集群操作可能需要较长时间,您可以在集群详情页面查看操作日志,跟踪集群升级状态。
删除集群
您可以点击集群列表右侧“更多”>“集群状态”> “删除”按钮,删除集群。
注意删除后集群不可恢复。请谨慎操作。如果集群对接了外部存储,回收策略为“保留”的存储类中的数据卷会被保留,您可以通过其他方式访问,或手动删除;回收策略为“删除”的存储类中的数据卷,会在删除集群时自动删除。
重置状态
集群操作(如创建、恢复、升级等)执行失败,可能会导致集群状态显示为“xx失败”并无法正常执行其他操作,如果从断点处重试也无法执行成功,您可以参考运维文档,手动修复集群问题。问题修复后,您可以点击集群右侧“更多”>“集群状态”>“重置状态”按钮,重置集群至正常状态。
集群插件管理
除了在创建集群时安装插件,您也可以为运行中的集群安装存储和其他自定义插件。以安装存储插件为例,点击集群操作中的“更多”>“插件管理”>“添加存储项”按钮,进入添加存储项页面,可以为集群安装存储插件,安装配置与创建集群中的配置相同。
对于已安装的插件,您可以在集群详情页查看插件信息,并执行以下操作:
保存为模版:将插件信息保存为模版,以便为其他集群使用。
移除插件:卸载集群插件。
集群证书管理
更新集群证书
kubernetes 集群证书默认有效期为一年,您可以在集群详情页的基本信息中查看证书过期时间,证书过期前一天,您也可以在集群列表看到证书过期的提醒。更新集群证书,您可以点击集群操作中的“更多”>“集群证书”>“更新集群证书”按钮,更新集群全部证书。
获取 kubeconfig 文件
您可以点击集群操作中的“更多”>“集群证书”>“查看 kubeconfig 文件”按钮,查看集群 kubeconfig 文件,也可以点击弹窗中的“下载”按钮,下载 kubeconfig 文件。
4 - 节点管理
区域管理
平台支持多区域管理,即为平台管理的所有节点和集群进行物理或逻辑的区域划分。您可以在“区域管理”页面查看平台内管理的所有区域,点击区域名称,进入区域详情页面,可以查看区域下的所有集群列表和节点列表。
节点管理
您可以在“节点信息”页面查看平台中管理的全部节点列表,和节点规格、状态等信息。点击节点名称进入节点详情页面,可以查看详细的节点基本信息和系统信息。
KubeClipper 中的节点状态表示 kc-agent 对节点的管理状态。正常情况下,节点状态显示为“就绪”,当节点失联4分钟(误差时间 10s 内)后,状态会更新为“未知”,未知状态的节点无法进行任何操作,也无法创建集群或为集群添加/移除节点。
添加节点
在部署 KubeClipper 时,您就可以添加初始的 server 节点和 agent 节点,其中,server 节点用于部署 KubeClipper 自身服务,agent 节点可用于部署 kubernetes 集群。在用于实验或开发的 KubeClipper 环境,您可以将 server 节点同时添加为 agent 节点。但如果用于生产环境,建议不要将 server 节点复用为 agent 节点。
您也可以使用 kcctl join 命令为 KubeClipper 添加 agent 节点。同时,您可以为每个 agent 节点标记一个区域,区域可以是物理的或逻辑的位置,您可以使用同一区域的节点创建 kubernetes 集群,但不可以使用跨区域的节点创建集群。未标记区域的节点默认属于 default 区域。
命令行示例:
kcctl join --agent beijing:1.2.3.4 --agent shanghai:2.3.4.5
移除节点
当您不再需要某些节点,可以使用 kcctl drain 命令将节点从平台中移除。
命令行示例:
kcctl drain --agent 192.168.10.19
连接终端
在节点列表页面,您可以点击目标节点右侧的“连接终端”按钮,在连接终端的弹窗中输入节点端口和用户名密码信息后,访问节点 SSH 控制台并执行命令。
启用/禁用节点
您可以点击节点右侧“禁用”按钮暂时禁用节点,禁用状态下的节点不允许创建或添加到集群。
5 - 访问控制
用户管理
安装 KubeClipper 之后,您需要创建所需角色的用户。一开始,系统默认只有一个用户 admin,具有平台管理员角色。
点击“访问控制”>“用户”,进入用户管理页面,点击左上角“创建用户”按钮,在弹窗中填写用户名、密码、手机号码、邮箱等信息,并指定用户角色,点击“确认”按钮。系统内置四个角色如下:
平台管理员:拥有集群管理、用户管理、审计管理等全部平台查看和操作权限。
集群管理员:拥有所有集群管理权限。
用户管理员:拥有所有用户管理权限。
平台只读用户:拥有全部平台查看权限。
用户创建完成后,您可以在用户详情页面查看用户详情信息,并执行以下操作:
编辑:编辑用户别名、角色、手机号、邮箱信息。
编辑密码:编辑用户登录密码。
删除:删除用户。
在用户详情页面,您还可以查看当前用户的登录日志列表。
您可以编辑平台 /etc/kubeclipper-server/kubeclipper-server.yaml 文件,根据需要设置用户登录日志的最大保留条数和保留期限,每个用户的登录日志超过最大条数后,超过最大条数和期限的日志会被自动删除,仅超过保留期限但未超过最大条数的日志数据将不会被删除。
自定义角色
除了系统内置角色,您也可以创建自定义角色,以满足业务需要。
点击“访问控制”>“角色”,进入角色管理页面,您可以点击左上角“创建角色”按钮,创建自定义角色。
在创建角色页面,您需要填写角色名称和描述,并勾选自定义角色所需权限,一些权限依赖于其他权限,在选择这些权限时,将自动选中依赖的权限。
创建自定义角色完成后,您可以在角色详情页面查看角色基本信息、角色权限列表、授权用户列表,并对自定义角色执行以下操作:
编辑:编辑自定义角色别名。
编辑权限:编辑自定义角色下的权限。
删除:删除自定义角色,需确保没有用户使用待删除角色。
接入外部用户
KubeClipper 可以通过 OIDC 协议使用外部用户登录。
首先,平台管理员需要登录平台 server 节点,在 kubeclipepr-server.yaml 文件中的 authentication 下插入以下信息:
oauthOptions:
identityProviders:
- name: keycloak
type: OIDC
mappingMethod: auto
provider:
clientID: kc
clientSecret: EErn729BB1bKawdRtnZgrqj9Bx0]mzUs
issuer: http://172.20.163.233:7777/auth/realms/kubeclipper
scopes:
- openid
- email
redirectURL: http://{kc-console-address}/oatuh2/redirect/{IDP-Name}
其中,“provider” 下需要您填写自己的 OAuth2 服务的clientID
、clientSecret
、issuer
信息,以 keycloack 为例,如下图所示。
redirectURL
示例:http://172.0.0.90/oauth2/redirect/keycloack
OAuth2 用户可以通过以下步骤访问和使用 KubeClipper 平台:
- 点击登录页的 “OAuth2 登录”按钮,进入 OAuth2 登录页面,输入用户名密码登录,进入 KubeClipper 平台,首次登录,您会因未被授予权限而无法访问平台。
- 平台管理员或其他拥有用户管理权限的用户登录 KubeClipper,在用户管理页面,找到目标 OAuth2 用户,通过编辑用户指定用户角色。
- OAuth2 用户重复第一步,登录 KubeClipper,就可以正常访问平台并执行角色权限内操作。