新兴开源产品 KubeOperator 介绍、安装和升级

一、关于 KubeOperator

1 什么是 KubeOperator?

KubeOperator 是一个开源项目,在离线网络环境下,通过可视化 Web UI 在 VMware、Openstack 或者物理机上规划、部署和运营生产级别的 Kubernetes 集群。KubeOperator 是 Jumpserver 明星开源团队在 Kubernetes 领域的的又一全新力作。

 

2 KubeOperator 的整体架构

KubeOperator 使用 Terraform 在 IaaS 平台上自动创建主机(用户也可以自行准备主机,比如物理机或者虚机),通过 Ansible 完成自动化部署和变更操作,支持 Kubernetes 集群 从 Day 0 规划,到 Day 1 部署,到 Day 2 运营的全生命周期管理。

 

3 KubeOperator 的技术优势

  • 简单易用:提供可视化的 Web UI,极大降低部署和管理门槛;
  • 离线部署:持续更新包括 Kubernetes 及常用组件(即内置应用)的离线包;
  • 按需创建:调用云平台 API,一键快速创建和部署 Kubernetes 集群;
  • 按需伸缩:快速伸缩 Kubernetes 集群,优化资源使用效率;
  • 按需修补:快速升级和修补 Kubernetes 集群,并与社区最新版本同步,保证安全性;
  • 自我修复:通过重建故障节点确保集群可用性;
  • 全栈监控:提供从Pod、Node到集群的事件、监控、告警、和日志方案;
  • Multi-AZ 支持:通过把 Kubernetes 集群 Master 节点分布在不同的故障域上确保的高可用;

 

4 KubeOperator 的功能列表

集群 Day 0 规划集群模式1 个 Master 节点 n 个 Worker 节点模式:适合开发测试用途
3 个 Master 节点 n 个 Worker 节点模式:适合生产用途
计算方案独立主机:支持自行准备的虚机和物理机
vSphere 平台:支持自动创建主机(使用 Terraform)
Openstack 平台:支持自动创建主机 (使用 Terraform)
存储方案独立主机:支持 NFS / Ceph RBD (通过 Rook)
vSphere 平台:支持 vSphere Datastore (vSAN 及 vSphere 兼容的集中存储)
Openstack 平台:支持 Openstack Cinder (Ceph 及 Cinder 兼容的集中存储)
网络方案支持 Flannel / Calico 网络插件
支持通过 F5 Big IP 对外暴露服务
支持 Traefik
支持 CoreDNS
操作系统支持 CentOS 7.4 / 7.5 / 7.6 / 7.7
集群 Day 1 部署部署提供离线环境下的完整安装包
支持可视化方式展示部署过程
支持一键自动化部署(使用 Ansible)
集群 Day 2 运营管理内置 K8s 官方的 Dashboard 管理应用
内置 Weave Scope 管理应用
提供 Web Kubectl 界面
内置 Helm
可观察性内置 Promethus,支持对集群、节点、Pod、Container的全方位监控和告警
内置 Loki 日志方案
内置 Grafana 作为监控和日志展示
在 Web UI 上面查看集群事件,并可以通过钉钉、微信进行通知;
升级支持集群升级
伸缩支持增加或者减少 Worker 节点
备份支持 etcd 定期备份
合规使用 Sonobuoy 进行合规检查并可视化展示结果
应用商店集成 KubeApps 应用商店

 

二、KubeOperator 的主要概念

1 部署模型

KubeOperator 支持两种类型的 K8s 集群部署,一种是一主多节点类型,另外一种是多主多节点类型。

  • 一主多节点类型:K8s 集群由一个 master 节点、一个及以上 worker 节点组成。
  • 多主多节点类型:K8s 集群由三个 master 节点、三个及以上 worker 节点组成。

一主多节点类型适用于开发和测试环境,生产环境请使用多主多节点类型。

2 部署模式

KubeOperator 支持两种部署模式,一种是手动部署,一种是自动部署。

  • 手动模式:用户需要自己准备物理机或虚拟机,存储可选择 NFS 持久化存储,外部 ceph 存储。
  • 自动模式:用户只需要绑定云平台(比如 VMware)账号信息,KubeOperator 会根据预先定义的部署计划来自动创建主机实现一键自动化部署。

3 部署计划(Deploy Plan)

在自动部署模式下,部署计划定义了 K8s 集群的部署细节,包括其部署模型、集群所在的区域、可用区、节点大小类型等。

4 区域(Region)和可用区(AZ)

区域(Region)和可用区(AZ)这两个术语来自公有云。每个区域完全独立。每个可用区完全隔离,但同一个区域内的可用区之间使用低时延链路相连。区域和可用区之间的关系如下图所示。

region-zone

对于公有云厂商提供的托管 K8s 服务,master 节点由公有云厂商托管并维护,其 3 个master 节点会分布在同个区域下面的 3 个不同可用区上面,实现真正的高可用。

KubeOperator 借鉴公有云厂商的思路和概念,并应用到 VMware 和 Openstack 等私有云平台上面。例如,在 VMware 云平台下,区域对应为 Datacenter,可用区对应于 cluster,或者 cluster 下面的 resource pool。

  • 如果用户只有一个 vSphere 集群,那么可以在集群下面建立三个 resource pool,每个resource pool 对应于一个可用区。
  • 如果用户有三个 vSphere 集群,那么每个集群对应于一个可用区。

注:vSAN 集群不能被多个 vSphere 集群共享,所以 3 个 vSphere 集群,持久化存储仅支持集中存储。 具体请参考:https://docs.vmware.com/en/VMware-Enterprise-PKS/1.5/vmware-enterprise-pks-15/GUID-vsphere-persistent-storage.html

5 Kubernetes 离线安装包

KubeOperator 提供完整的离线 Kubernetes 安装包,每个安装包会被构建成一个独立容器镜像供 KubeOperator 使用,离线安装包中包括以下三种内容:

  • Kubenetes 核心组件:包括 Kubenetes、Docker 及 etcd;
  • Kubenetes 附属组件(镜像):包括网络、存储、监控、Dashboard 及常用工具;
  • 操作系统 RPM 包:除 CentOS 7.6 Minimal 外的其他必备 RPM。安装包容器运行后是一个标准的 Yum 源服务器。

Kubernetes 离线安装包具体信息请参考工程:K8s-package。以 Kubernetes 离线包 v1.15.4 为例,其包括的内容如下:

Kubenetes 核心组件

分类组件名称版本
核心kubernetes1.15.4
核心etcd3.3.10
核心dockerdocker-ce-18.09.9

Kubenetes 附属组件(镜像)

分类组件名称版本
网络quay.io/coreos/flannelv0.11.0-amd64
网络calico/nodev3.7.3
网络calico/cniv3.7.3
网络calico/kube-controllersv3.7.3
网络docker.io/coredns/coredns1.6.0
网络docker.io/traefikv1.7.11
网络f5networks/K8s-bigip-ctlr1.9.2
存储quay.io/external_storage/nfs-client-provisionerv3.1.0-K8s1.11
监控docker.io/grafana/grafanav1.7.11
监控quay.io/prometheus/alertmanagerv0.15.2
监控quay.io/prometheus/node-exporterv1.7.11
监控quay.io/prometheus/prometheusv2.4.3
监控quay.io/prometheus/pushgatewayv0.5.2
监控quay.io/coreos/kube-state-metricsv1.4.0
Dashboardkubernetesui/dashboardv2.0.0-beta4
Dashboardkubernetesui/metrics-scraperv1.0.1
工具gcr.io/google-containers/pause-amd643.1
工具docker.io/registry2
工具docker.io/konradkleine/docker-registry-frontendv2
工具gcr.io/kubernetes-helm/tillerv2.15.0
工具quay.io/coreos/configmap-reloadv0.0.1
工具docker.io/appropriate/curledge
工具weaveworks/scope1.11.5
工具quay.io/comcast/kuberhealthyv1.0.2

RPM 包(基于 CentOS 7.6 Minimal 及以上)

分类组件名称
RPMdnsmasq
RPMchrony
RPMntpdate
RPMnfs-utils

 

三、安装和升级 KubeOperator

1 环境要求

  • 最低硬件配置: 2 CPU, 8G 内存, 50G 磁盘 (推荐大小是:4 核 16G 内存 100G 磁盘)
  • 操作系统要求: CentOS 7.4 / 7.5 / 7.6 / 7.7 Minimal (不支持 CentOS 8)

2 下载离线包

请自行下载 KubeOperator 完整离线包,并复制到目标机器的 /tmp 目录下。

3 安装 KubeOperator

$ cd /tmp
# 解压离线包
$ tar zxvf kubeOperator-v2.3.xx-release.tar.gz
# 查看防火墙状态
$ firewall-cmd --state
# 关闭防火墙
$ systemctl stop firewalld.service
# 进入项目目录
$ cd kubeOperator-v2.3.xx-release
# 运行安装脚本
$ ./kubeopsctl.sh install
# 查看 KubeOperator 状态
$ systemctl status kubeops

 

⚠️备注:默认KubeOperator的部署机防火墙是关闭状态,若需要开启防火墙,请放行以下端口以保证KubeOperator正常使用

应用协议类型端口
KubeOperator-webTCP80
kubeOperator-预留(升级使用)TCP8080-8089
kubeOperator-预留(升级使用)TCP8090-8099
# 启动防火墙
$ systemctl start firewalld
# 加入开机自动启动
$ systemctl enable firewalld
# 开放端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --zone=public --add-port=8080-8089/tcp --permanent
$ firewall-cmd --zone=public --add-port=8090-8099/tcp --permanent
# 重新加载防火墙配置使生效
$ firewall-cmd --reload
# 查看防火墙状态
$ firewall-cmd --list-all

 

4 访问 KubeOperator

KubeOperator 默认监听 HTTP 80 端口。安装完毕后,请使用浏览器登录 KubeOperator 管理控制台。

注:KubeOperator 默认用户名和密码为: admin / kubeoperator@admin123 为了保证系统的安全,请在完成登录后,点击控制台右上角的"修改密码"进行密码重置。

5 升级 KubeOperator

$ cd /tmp
# 下载新版本离线包
$ wget http://xxxxxxx.kubeOperator-v2.3.xx-release.tar.gz
# 解压离线包
$ tar zxvf kubeOperator-v2.3.xx-release.tar.gz
# 进入项目目录
$ cd kubeOperator-v2.3.xx-release
# 运行升级脚本
$ ./kubeopsctl.sh upgrade
# 查看 KubeOperator 状态
$ systemctl status kubeops

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值