使用开源工具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。同时支持创建集群时修改域名后缀。
NTP Server 用来实现集群所有主机时间同步,默认可以为空,也可以网上查找可用的 NTP Server 。
1.1.2 凭据
凭据为 KubeOperator 连接主机资产的凭证。在左侧导航菜单中选择【设置】,进入【设置】页后点击【凭据】TAB 可以看到已添加凭据信息。
点击【添加】按钮添加 password 方式的凭据。
凭据新增使用密钥方式登录主机。单击【添加】按钮,选择 privatekey 方式登录目标主机,输入凭据名称和 root 账号,然后将 id_rsa 私钥内容复制到密钥框里,确认。
注:密钥方法连接主机举例说明:在 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 三台主机。
1.3 准备存储
KubeOperator 支持自动创建 NFS 存储和添加自行准备的 NFS 存储以外,新增加支持云原生存储解决方案 Rook Ceph ,供手动模式的 K8s 集群使用后面章节将详细介绍。下面介绍如何添加 KubeOperator 为集群自动创建的 NFS 存储:
KubeOpeartor 控制台【存储】,单击【添加】,选中新建 NFS ,在主机下拉列表,选择上述 1.2 节添加的 NFS 主机 (名称为:nfs-storage),如果 NFS 无网络访问限制,白名单选项可以默认填 ” * “,挂载路径可按需填写,如 /nfs,点击【提交】。NFS 安装成功后,可以在 NFS 列表中看到该存储处于运行中状态。
添加成功后,创建集群时如果选择 NFS 存储,可以看到该 NFS 存储。
注:自行搭建的 NFS 服务仅适合在开发测试环境使用。KubeOperator 还支持录入已有的 NFS 存储(比如专业的 NAS 存储)。单击【添加】选中“录入 NFS” ,输入存储名称、白名单选项可以默认选项、服务地址、挂载路径,提交即可。需要注意另外一点添加 NFS 存储时,存储的名称不能和集群名称相同。
2 集群部署(Day 1)
2.1 创建集群
2.1.1 基本信息
点击【集群】页的【添加】按钮进行集群的创建。在【基本信息】里输入集群的名称,选择该集群所要部署的 Kubernetes 版本。
注:集群名称不要和主机名称、存储节点名称相同。
2.1.2 部署模型
选择 Kubernetes 集群的部署模型。KubeOperator 当前支持一主多节点和多主多节点。选择部署模型后,KubeOperator 将展示集群中各个角色节点的详细配置要求。现在节点支持操作系统包括 CentOS 7.4/7.5/7.6/7.7 。
KubeOperator 支持 MultiAZ(多故障域),多主多节点模式适合在 MultiAZ 下部署,实现双活环境下的高可用。
2.1.3 配置节点
【添加主机】环节,把集群所需的主机添加到了 KubeOperator 中。在【配置节点】环节,可以根据需求选择 worker 节点数量,这里以一个 master 和一个 worker 节点为例。
2.1.4 选择节点
在【选择节点】环节,则可以根据不同的节点角色,选择主机列表中的各个主机。
2.1.5 配置网络
【配置网络】环节,选择集群的网络插件,当前版本支持 Flannel 和 Calico,这里我们选择 Calico BGP 网络方式。
如果集群节点全部都在同一个二层网络下,请选择"host-gw"。如果不是,则选择"vxlan"。“host-gw” 性能优于 “vxlan”。选项 Service CIDR 和 POD CIDR 保证不和已有主机节点 IP 段冲突即可使用。
2.1.6 配置存储
【添加存储】环节,支持两张存储方案,一种是 NFS 存储,新增加 Rook Ceph 存储方案。
选择使用 Rook Ceph 存储时,需要设置存储介质和存储路径,存储介质使用推荐测试环境使用的配置,Path 使用推荐路径 /data/ceph,当然可以根据实际环境修改配置。
如何登录 Ceph 控制台查看存储监控信息,请参考第 3.1.2.1 节详细内容。
如果选择 NFS 存储, NFS 主机的节点已经在 1.3 节添加到【存储】页面,这里选择外部持久化存储时,在下来菜单中会列出该节点。
2.1.7 配置检测
完成上述 6 个步骤后,KubeOperator 会对当前集群所选择的部署节点进行配置检测,包含 CPU、内存和操作系统的检测,检查是否满足节点最低配置要求。
2.1.8 其他设置
在【其他设置】中,我们增加了建议的可运行 POD 数量和 Docker 数据目录。用户可根据实际环境修改。
2.1.9 集群配置概览
所有步骤完成后,会有一个集群配置概览页对之前步骤所设参数进行汇总,用户可在此页进行集群配置的最后检查。
2.2 部署集群
在集群列表中点击要进行部署的集群名称,默认展示的是该集群的【概览】信息。【概览】页中展示了 Kubernetes 集群的诸多详情,包括集群状态,Worker 状态,集群描述信息等。点击【概览】页最下方的【安装】按钮进行 Kubernetes 集群的部署。
集群部署开始后,将会自动跳转到【任务】页。在【任务】页里可以看到集群部署当前所执行的具体任务信息。
如果是内网环境的话,一个典型的 3 节点集群的部署大概需要 10 分钟左右的时间。在出现类似下图的信息后,表明集群已部署成功:
2.3 服务暴露
在集群列表中点击集群名称,点击【F5 BIG-IP】添加 F5 BIG-IP,为 Kubernetes 配置 F5-BIGIP-CONTROLLER 后,我们可以通过 F5 BIGIP 设备向外网暴露服务。
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 的信息统计。
3.1.1.2 K8s Dashboard
K8s Dashboard 对应的是 Kubernetes 的控制台,从浏览器中访问 Kubernetes 控制台需要用到【令牌】。点击【概览】页下方的【获取TOKEN】按钮获取令牌信息,将令牌信息复制到粘贴板。
输入令牌信息后,点击【登录】,则可进入 Kubernetes 控制台。
3.1.2 集群监控
3.1.2.1 访问 Ceph 控制台
KubeOperator 新增支持云原生存储解决方案 Rook Ceph,当创建手动模式集群,存储方案选择 Rook Ceph 时 ,在集群【概览】页,描述信息存储类型中可以通过 Rook Ceph 图标链接跳转至 Ceph 控制台。
Ceph 控制台用户名是 admin,密码需要通过执行命令方式获取。获取方式如下:
#此命令可以在集群概览页下面的 WebKubectl 中或者在集群中任意节点中执行。
$ kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
登录 Ceph 控制台后,可以看到集群存储的监控信息。
3.1.2.2 访问 Grafana
Grafana 对 Prometheus 采集到的监控数据进行了不同维度的图形化展示,更方便用户了解整个 Kubernetes 集群的运行状况。点击 Grafana 下方的【转到】按钮访问 Grafana 控制台。
集群级别的监控面板:
节点级别的监控面板:
3.1.2.3 访问 Weave Scope
Weave Scope 用来监控、可视化和管理 Kubernetes 集群。点击 Weave Scope 下方的【转到】按钮即可访问 Weave Scope 控制台。点击控制台的顶部【Pod】,会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。Weave Scope 默认的用户名是 admin,密码是 admin123。
点击顶部的【Host】,可以远程shell登录各个节点,还可以看到主机的详细信息。
3.1.2.4 访问 Prometheus
Prometheus 用来对整个 kubernetes 集群进行监控数据的采集。点击 Prometheus 下方的【转到】按钮即可访问 Prometheus 控制台。
3.1.2.5 健康状态
在 K8s 集群【健康状态】栏,可以看到整体的集群状态,具体包括 Control Manager,Schedule,etcd 和 nodes 的实时健康状态以及过去半年 K8s 集群运行状态。
3.1.3 集群日志
KubeOperator 系统新增加支持获取 KubeOperator 系统日志和 K8s 集群日志功能。
3.1.3.1 系统日志
【系统日志】页支持查找 KubeOperator 系统里所有 K8s 集群日志信息, 日志类型包括 info、debug 和 error 日志,还可以用关键字搜索日志等等日志信息。
3.1.3.2 集群日志
K8s 集群日志使用 Grafana 日志聚合工具 Loki。Loki 是Grafana Labs 团队的开源项目,它的设计非常经济高效且易于操作,特别适合存储 Kubernetes Pod 日志。
通过访问 Grafana 控制台看到 Loki 日志。
3.1.4 集群管理
3.1.4.1 访问 Registry
Registry 则用来存放 Kubernetes 集群所使用到的 Docker 镜像。Registry 默认的用户名是 admin,密码是 admin123。
3.1.4.2 访问 Traefik
Traefik 用来作为 kubernetes 集群的HTTP反向代理、负载均衡工具。点击 Trafik 下方的【转到】按钮即可访问 Traefik 控制台。
3.1.4.3 Webkubectl
KubeOperator 新增功能支持 Webkubectl 。在集群【概览】页最下面单击 WEBKUBECTL ,在弹出框中可以像在集群中节点执行命令,查询集群信息等操作。
3.2 集群升级
KubeOperator 支持 K8s 升级。请注意由于 1.15 和 1.16 版本之后变化较大,目前不支持升级从 1.15 升级到 1.16 版本。
在集群列表中点击要进行升级的集群名称,点击【概览】页最下方的【升级】按钮进行 Kubernetes 集群的升级。
单击【确认】后,系统自动跳转到【任务】页,可以看到升级进度和详细 log 信息。
升级完成后,可以看到如下信息。
同时在集群【历史】页,可以通过单击【详情】按钮查看升级的所有 log 信息。
3.3 集群伸缩
此版本 KubeOperator 支持重点新功能:扩容 K8s 集群 worker 节点数量。
KubeOperator 控制台【集群】页,单击一个要扩容的集群名称,即【概览】页面,Worker 状态栏左下方单击【扩容】,在弹出框中选中扩容 worker 节点数量。
确认后,会自动转到【任务】页面,实时查看扩容进度,完成后可以看到如下图所示信息。
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 支持的自动备份策略和手动备份,自动备份包括备份间隔,复本保留份数以及可以开启户禁用备份策略,实现集群备份和恢复功能。
手动备份需要先设置备份策略信息,包括备份间隔、保留份数、选择存储设备以及开启备份,然后单击【立即备份】后,可以在【任务】页看到备份进度。
更多推荐
所有评论(0)