天天看点

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

项目地址 https://github.com/KubeOperator/KubeOperator

KubeOperator 支持两种 Kubernetes 集群部署方式,一种是手动模式,另外一种是自动模式。手动模式下,用户需要自行准备主机和 NFS 作为持久化存储。

手动模式下 Kubernetes 集群的规划、部署和管理包含以下内容:

  • 集群规划 ( Day 0)
    • 系统设置
    • 准备主机
    • 准备存储
  • 集群部署( Day 1)
    • 创建集群
    • 部署集群
    • 服务暴露
  • 集群运营(Day 2)
    • 集群管理
    • 集群升级
    • 集群伸缩
    • 集群备份

本章节以手动模式部署一个开发测试用集群为例,需要准备三台主机,每个主机的用途和需求是:

名称 角色 数量 操作系统 最低配置 推荐配置 描述
master-1 Master 1 CentOS 7.6 2C 4G 4C 16G 运行 etcd、kube-apiserver、kube-scheduler。
worker-1 Worker 1 CentOS 7.6 4C 16G 8C 32G 运行 kubelet、应用工作负载。
nfs-storage NFS 1 CentOS 7.6 2C 8G 4C 16G 提供 NFS 持久化存储,磁盘建议 500G 以上。

1 集群规划( Day 0)

1.1 系统设置

在使用 KubeOperator 之前,必须先对 KubeOperator 进行必要的参数设置。这些系统参数将影响到 Kubernetes 集群的安装及相关服务的访问。

1.1.1 主机 IP 、集群域名后缀 和 NTP Server

本机 IP 指安装 KubeOperator 机器自身的 IP。KubeOperator 所管理的集群将使用该 IP 来访问 KubeOperator。

域名后缀为集群节点默认访问地址的后缀,集群暴露出来的对外服务的 URL 都将以该域名后缀作为访问地址后缀,例如: grafana.apps.mycluster.fit2cloud.com。同时支持创建集群时修改域名后缀。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

NTP Server 用来实现集群所有主机时间同步,默认可以为空,也可以网上查找可用的 NTP Server 。

1.1.2 凭据

凭据为 KubeOperator 连接主机资产的凭证。在左侧导航菜单中选择【设置】,进入【设置】页后点击【凭据】TAB 可以看到已添加凭据信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

点击【添加】按钮添加 password 方式的凭据。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

凭据新增使用密钥方式登录主机。单击【添加】按钮,选择 privatekey 方式登录目标主机,输入凭据名称和 root 账号,然后将 id_rsa 私钥内容复制到密钥框里,确认。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
注:密钥方法连接主机举例说明:在 KubeOperator 主机中首先生成 id_rsa 和 id_rsa.pub 密钥对,将 id_rsa.pub 公钥里面内容添加要连接的目标主机 authorized_keys 文件中,authorized_keys 文件权限需要设置为 600 。然后在 KubeOperator 控制台的【凭据】页面,将开始生成的 id_rsa 私钥文件内容复制到凭据的密钥框中。注意这里的账号需要 root 账号。

1.2 准备主机

我们将准备添加三台主机 master-1、worker-1、nfs-storage,用来作为 master 节点、worker 节点 及 NFS 存储。

在左侧导航菜单中选择【主机】,进入【主机】页后可以看到已添加主机的详细信息,包括 IP、CPU、内存、操作系统等。

点击【添加】按钮添加主机。输入名称和 IP 地址、指定端口号、选择对应的凭据,最后点击【提交】按钮即可完成一台主机的添加。同样地,依次添加 master-1,worker-1 和 nfs-storage 三台主机。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

1.3 准备存储

KubeOperator 支持自动创建 NFS 存储和添加自行准备的 NFS 存储以外,新增加支持云原生存储解决方案 Rook Ceph ,供手动模式的 K8s 集群使用后面章节将详细介绍。下面介绍如何添加 KubeOperator 为集群自动创建的 NFS 存储:

KubeOpeartor 控制台【存储】,单击【添加】,选中新建 NFS ,在主机下拉列表,选择上述 1.2 节添加的 NFS 主机 (名称为:nfs-storage),如果 NFS 无网络访问限制,白名单选项可以默认填 ” * “,挂载路径可按需填写,如 /nfs,点击【提交】。NFS 安装成功后,可以在 NFS 列表中看到该存储处于运行中状态。

添加成功后,创建集群时如果选择 NFS 存储,可以看到该 NFS 存储。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
注:自行搭建的 NFS 服务仅适合在开发测试环境使用。KubeOperator 还支持录入已有的 NFS 存储(比如专业的 NAS 存储)。单击【添加】选中“录入 NFS” ,输入存储名称、白名单选项可以默认选项、服务地址、挂载路径,提交即可。需要注意另外一点添加 NFS 存储时,存储的名称不能和集群名称相同。

2 集群部署(Day 1)

2.1 创建集群

2.1.1 基本信息

点击【集群】页的【添加】按钮进行集群的创建。在【基本信息】里输入集群的名称,选择该集群所要部署的 Kubernetes 版本。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
注:集群名称不要和主机名称、存储节点名称相同。
使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.2 部署模型

选择 Kubernetes 集群的部署模型。KubeOperator 当前支持一主多节点和多主多节点。选择部署模型后,KubeOperator 将展示集群中各个角色节点的详细配置要求。现在节点支持操作系统包括 CentOS 7.4/7.5/7.6/7.7 。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
KubeOperator 支持 MultiAZ(多故障域),多主多节点模式适合在 MultiAZ 下部署,实现双活环境下的高可用。

2.1.3 配置节点

【添加主机】环节,把集群所需的主机添加到了 KubeOperator 中。在【配置节点】环节,可以根据需求选择 worker 节点数量,这里以一个 master 和一个 worker 节点为例。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.4 选择节点

在【选择节点】环节,则可以根据不同的节点角色,选择主机列表中的各个主机。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.5 配置网络

【配置网络】环节,选择集群的网络插件,当前版本支持 Flannel 和 Calico,这里我们选择 Calico BGP 网络方式。

如果集群节点全部都在同一个二层网络下,请选择"host-gw"。如果不是,则选择"vxlan"。“host-gw” 性能优于 “vxlan”。选项 Service CIDR 和 POD CIDR 保证不和已有主机节点 IP 段冲突即可使用。
使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.6 配置存储

【添加存储】环节,支持两张存储方案,一种是 NFS 存储,新增加 Rook Ceph 存储方案。

选择使用 Rook Ceph 存储时,需要设置存储介质和存储路径,存储介质使用推荐测试环境使用的配置,Path 使用推荐路径 /data/ceph,当然可以根据实际环境修改配置。

如何登录 Ceph 控制台查看存储监控信息,请参考第 3.1.2.1 节详细内容。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

如果选择 NFS 存储, NFS 主机的节点已经在 1.3 节添加到【存储】页面,这里选择外部持久化存储时,在下来菜单中会列出该节点。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.7 配置检测

完成上述 6 个步骤后,KubeOperator 会对当前集群所选择的部署节点进行配置检测,包含 CPU、内存和操作系统的检测,检查是否满足节点最低配置要求。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.8 其他设置

在【其他设置】中,我们增加了建议的可运行 POD 数量和 Docker 数据目录。用户可根据实际环境修改。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.1.9 集群配置概览

所有步骤完成后,会有一个集群配置概览页对之前步骤所设参数进行汇总,用户可在此页进行集群配置的最后检查。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.2 部署集群

在集群列表中点击要进行部署的集群名称,默认展示的是该集群的【概览】信息。【概览】页中展示了 Kubernetes 集群的诸多详情,包括集群状态,Worker 状态,集群描述信息等。点击【概览】页最下方的【安装】按钮进行 Kubernetes 集群的部署。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

集群部署开始后,将会自动跳转到【任务】页。在【任务】页里可以看到集群部署当前所执行的具体任务信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

如果是内网环境的话,一个典型的 3 节点集群的部署大概需要 10 分钟左右的时间。在出现类似下图的信息后,表明集群已部署成功:

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

2.3 服务暴露

在集群列表中点击集群名称,点击【F5 BIG-IP】添加 F5 BIG-IP,为 Kubernetes 配置 F5-BIGIP-CONTROLLER 后,我们可以通过 F5 BIGIP 设备向外网暴露服务。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3 集群运营(Day 2)

3.1 集群管理

回到集群的【概览】页,该页提供了 Grafana、Prometheus、Registry-console、Dashboard 、Traefik、Weave Scope 六个管理系统快捷访问方式。这六个系统的访问域名需要在 DNS 服务器中添加相应的域名记录。如没有使用 F5 BIG-IP 暴露服务,也可以通过修改本地主机的 hosts 文件来达到相同的作用。

eg:

# 编辑 /etc/hosts
testerdeMacBook-Pro:~ tester$sudo vim /etc/hosts
# 替换 WORKER_IP 为任意 worker 节点 IP 地址
WORKER_IP grafana.apps.mycluster.fit2cloud.com
WORKER_IP prometheus.apps.mycluster.fit2cloud.com
WORKER_IP registry-ui.apps.mycluster.fit2cloud.com
WORKER_IP dashboard.apps.mycluster.fit2cloud.com
WORKER_IP master-1.mycluster.fit2cloud.com
WORKER_IP traefik.apps.mycluster.fit2cloud.com
WORKER_IP scope.weave.apps.mycluster.fit2cloud.com
WORKER_IP ceph.apps.mycluster.fit2cloud.com
           

3.1.1 Dashboard

3.1.1.1 KubeOperator Dashboard

KubeOperator 2.2 中新增功能【概览】页,该页面集中显示了集群相关的统计信息,包括集群状态,容量信息,Nodes 数量、Namespaces 数量、Pods 数量等,还包括异常日志,异常 Pod 的信息统计。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.1.2 K8s Dashboard

K8s Dashboard 对应的是 Kubernetes 的控制台,从浏览器中访问 Kubernetes 控制台需要用到【令牌】。点击【概览】页下方的【获取TOKEN】按钮获取令牌信息,将令牌信息复制到粘贴板。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

输入令牌信息后,点击【登录】,则可进入 Kubernetes 控制台。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.1.2 集群监控

3.1.2.1 访问 Ceph 控制台

KubeOperator 新增支持云原生存储解决方案 Rook Ceph,当创建手动模式集群,存储方案选择 Rook Ceph 时 ,在集群【概览】页,描述信息存储类型中可以通过 Rook Ceph 图标链接跳转至 Ceph 控制台。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

Ceph 控制台用户名是 admin,密码需要通过执行命令方式获取。获取方式如下:

#此命令可以在集群概览页下面的 WebKubectl 中或者在集群中任意节点中执行。
$ kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

           
使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

登录 Ceph 控制台后,可以看到集群存储的监控信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.2.2 访问 Grafana

Grafana 对 Prometheus 采集到的监控数据进行了不同维度的图形化展示,更方便用户了解整个 Kubernetes 集群的运行状况。点击 Grafana 下方的【转到】按钮访问 Grafana 控制台。

集群级别的监控面板:

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

节点级别的监控面板:

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.1.2.3 访问 Weave Scope

Weave Scope 用来监控、可视化和管理 Kubernetes 集群。点击 Weave Scope 下方的【转到】按钮即可访问 Weave Scope 控制台。点击控制台的顶部【Pod】,会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。Weave Scope 默认的用户名是 admin,密码是 admin123。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

点击顶部的【Host】,可以远程shell登录各个节点,还可以看到主机的详细信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.2.4 访问 Prometheus

Prometheus 用来对整个 kubernetes 集群进行监控数据的采集。点击 Prometheus 下方的【转到】按钮即可访问 Prometheus 控制台。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.2.5 健康状态

在 K8s 集群【健康状态】栏,可以看到整体的集群状态,具体包括 Control Manager,Schedule,etcd 和 nodes 的实时健康状态以及过去半年 K8s 集群运行状态。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.1.3 集群日志

KubeOperator 系统新增加支持获取 KubeOperator 系统日志和 K8s 集群日志功能。

3.1.3.1 系统日志

【系统日志】页支持查找 KubeOperator 系统里所有 K8s 集群日志信息, 日志类型包括 info、debug 和 error 日志,还可以用关键字搜索日志等等日志信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.3.2 集群日志

K8s 集群日志使用 Grafana 日志聚合工具 Loki。Loki 是Grafana Labs 团队的开源项目,它的设计非常经济高效且易于操作,特别适合存储 Kubernetes Pod 日志。

通过访问 Grafana 控制台看到 Loki 日志。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.1.4 集群管理

3.1.4.1 访问 Registry

Registry 则用来存放 Kubernetes 集群所使用到的 Docker 镜像。Registry 默认的用户名是 admin,密码是 admin123。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.4.2 访问 Traefik

Traefik 用来作为 kubernetes 集群的HTTP反向代理、负载均衡工具。点击 Trafik 下方的【转到】按钮即可访问 Traefik 控制台。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群
3.1.4.3 Webkubectl

KubeOperator 新增功能支持 Webkubectl 。在集群【概览】页最下面单击 WEBKUBECTL ,在弹出框中可以像在集群中节点执行命令,查询集群信息等操作。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.2 集群升级

KubeOperator 支持 K8s 升级。请注意由于 1.15 和 1.16 版本之后变化较大,目前不支持升级从 1.15 升级到 1.16 版本。

在集群列表中点击要进行升级的集群名称,点击【概览】页最下方的【升级】按钮进行 Kubernetes 集群的升级。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

单击【确认】后,系统自动跳转到【任务】页,可以看到升级进度和详细 log 信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

升级完成后,可以看到如下信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

同时在集群【历史】页,可以通过单击【详情】按钮查看升级的所有 log 信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.3 集群伸缩

此版本 KubeOperator 支持重点新功能:扩容 K8s 集群 worker 节点数量。

KubeOperator 控制台【集群】页,单击一个要扩容的集群名称,即【概览】页面,Worker 状态栏左下方单击【扩容】,在弹出框中选中扩容 worker 节点数量。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

确认后,会自动转到【任务】页面,实时查看扩容进度,完成后可以看到如下图所示信息。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

3.4 集群备份

KubeOperator 目前的备份功能支持三种不同种类的存储,即 AWS S3、aliyun oss 和 Azure 存储。为集群备份和恢复提供存储支持,实现备份和恢复功能。

添加备份账号之前,请首先自行准备好 AWS S3 ,aliyun oss 或者 Azure 存储账号信息,包括 AccessKey,SecretKey,endpoint 和桶/容器信息。

以添加 S3 为例,在【系统设置】的【备份】Tab 也中输入名称和 AccessKey,SecretKey 和端点(对应 AWS S3 系统里的 endpoint),单击【获取桶/容器】获取桶名称,建议在 S3 新建一个桶单独使用,最后提交。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

在集群【备份】页面,可以看到,KubeOperator 支持的自动备份策略和手动备份,自动备份包括备份间隔,复本保留份数以及可以开启户禁用备份策略,实现集群备份和恢复功能。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

手动备份需要先设置备份策略信息,包括备份间隔、保留份数、选择存储设备以及开启备份,然后单击【立即备份】后,可以在【任务】页看到备份进度。

使用开源工具KubeOperator快速部署k8s集群--在自行准备的主机上规划、部署及管理 k8s 集群

继续阅读