kubernetes使用(从这里开启您的)
kubernetes使用(从这里开启您的)KubeOperator 使用 Terraform 在 IaaS 平台上自动创建主机(用户也可以自行准备主机,比如物理机或者虚机),通过 Ansible 完成自动化部署和变更操作,支持 Kubernetes 集群 从 Day 0 规划,到 Day 1 部署,到 Day 2 运营的全生命周期管理。KubeOperator 提供可视化的 Web UI,支持离线环境,支持物理机、VMware、OpenStack 和 FusionCompute 等 IaaS 平台,支持 x86 和 ARM64 架构,支持 GPU,内置应用商店,已通过 CNCF 的 Kubernetes 软件一致性认证。kubeadm的安装过程比较复杂,还需要单独安装网络,对op能力要求挺高的。KubeOperator就是单独做一台机器,帮你把整个集群自动化地安装起来。实际安装过程,还是kubeadm来做的KubeOperator
模板作者:xianyun
能今天做好的事就不要等到明天。以梦为马,学习趁年华。
一、安装背景结合我本人在公司安装部署k8s集群的方法,总结了一份文档,在网上找了很多安装k8s集群的方法,最后决定采用通过KubeOperator工具进行安装,KubeOperator的优势
与 OpenShift 等重量级 PaaS 平台相比,KubeOperator 只专注于解决一个问题,就是帮助企业规划(Day 0)、部署(Day 1)、运营(Day 2)生产级别的 K8s 集群,并且做到极致。
kubeadm的安装过程比较复杂,还需要单独安装网络,对op能力要求挺高的。
KubeOperator就是单独做一台机器,帮你把整个集群自动化地安装起来。实际安装过程,还是kubeadm来做的
二、总体介绍1. KubeOperator介绍KubeOperator 是一个 来源 的轻量级 Kubernetes 发行版,专注于帮助企业规划、部署和运营生产级别的 kubernetes 集群。
KubeOperator 提供可视化的 Web UI,支持离线环境,支持物理机、VMware、OpenStack 和 FusionCompute 等 IaaS 平台,支持 x86 和 ARM64 架构,支持 GPU,内置应用商店,已通过 CNCF 的 Kubernetes 软件一致性认证。
KubeOperator 使用 Terraform 在 IaaS 平台上自动创建主机(用户也可以自行准备主机,比如物理机或者虚机),通过 Ansible 完成自动化部署和变更操作,支持 Kubernetes 集群 从 Day 0 规划,到 Day 1 部署,到 Day 2 运营的全生命周期管理。
2. 技术优势- 简单易用: 提供可视化的 Web UI,极大降低 Kubernetes 部署和管理门槛,内置 Webkubectl
- 按需创建: 调用云平台 API,一键快速创建和部署 Kubernetes 集群
- 按需伸缩: 快速伸缩 Kubernetes 集群,优化资源使用效率
- 按需修补: 快速升级和修补 Kubernetes 集群,并与社区最新版本同步,保证安全性
- 离线部署: 支持完全离线下的 Kubernetes 集群部署
- 自我修复: 通过重建故障节点确保集群可用性
- 全栈监控: 提供从Pod、Node到集群的事件、监控、告警、和日志方案
- Multi-AZ 支持: 将 Master 节点分布在不同的故障域上确保集群高可用
- 应用商店: 内置 KubeApps 应用商店
- GPU 支持: 支持 GPU 节点,助力运行深度学习等应用
Day 0 规划 |
集群模式 |
1 个 Master 节点 n 个 Worker 节点模式:适合开发测试用途 |
3 个 Master 节点 n 个 Worker 节点模式:适合生产用途 | ||
计算方案 |
独立主机:支持自行准备的虚机、公有云主机和物理机 | |
vSphere 平台:支持自动创建主机(使用 Terraform) | ||
Openstack 平台:支持自动创建主机 (使用 Terraform) | ||
FusionCompute 平台:支持自动创建主机 (使用 Terraform) | ||
存储方案 |
独立主机:支持 NFS / Ceph RBD / Rook Ceph / Local Volume | |
vSphere 平台:支持 vSphere Datastore (vSAN 及 vSphere 兼容的集中存储) | ||
Openstack 平台:支持 Openstack Cinder (Ceph 及 Cinder 兼容的集中存储) | ||
FusionCompute 平台:支持 OceanStor | ||
网络方案 |
支持 CoreDNS | |
支持 Flannel / Calico 网络插件 | ||
支持 ingress-nginx / traefik | ||
支持通过 F5 Big IP 对外暴露服务(X-PACK) | ||
GPU 方案 |
支持 NVIDIA GPU | |
操作系统 |
支持 RHEL / CentOS / EulerOS 操作系统 | |
容器运行时 |
支持 Docker / Containerd | |
Day 1 部署 |
部署 |
支持在线和离线安装模式 |
支持 Kubeadm 部署 | ||
支持 x86_64 和 arm64 CPU 架构 | ||
支持可视化方式展示部署过程 | ||
支持一键自动化部署(使用 Ansible) | ||
支持已有集群导入 | ||
Day 2 运营 |
管理 |
支持以项目为核心的分级授权管理 |
支持系统管理员、项目管理员和集群管理员三种角色 | ||
支持多集群配置管理(X-PACK) | ||
支持对接 LDAP/AD(X-PACK) | ||
支持自定义 Logo 和 配色(X-PACK) | ||
对外开放 REST API | ||
支持国际化 i18n | ||
提供 Web Kubectl 界面 | ||
内置 Helm | ||
可观察性 |
内置 Prometheus,支持对集群、节点、Pod、Container的全方位监控和告警 | |
内置 EFK、Loki 日志方案 | ||
内置 Grafana 作为监控和日志展示 | ||
支持消息中心,通过钉钉、微信通知各种集群异常事件(X-PACK) | ||
升级 |
支持集群升级 | |
伸缩 |
支持增加或者减少 Worker 节点 | |
备份 |
支持 etcd 定期备份和立即备份 | |
恢复 |
支持 etcd 备份策略文件恢复和本地文件恢复 | |
安全合规 |
支持集群健康评分(X-PACK) | |
支持 CIS 安全扫描 | ||
应用商店 |
提供 GitLab、Jenkins、Harbor、Argo CD、Sonarqube 等 CI/CD 工具 | |
提供 Kuboard、Weave Scope、Redmine 等管理工具 | ||
提供深度学习AI 应用,比如 TensorFlow |
kubernetes v1.18.14etcd v3.4.14docker v19.03.9containerd v1.4.3calico v3.16.5flanneld v0.13.0coredns v1.8.0helm-v2 v2.17.0helm-v3 v3.4.1traefik v2.2.1ingress-nginx v0.33.0metrics-server v0.3.6istio 1.8.0dashboard v2.0.3kubeapps v1.10.2prometheus v2.18.1grafana v7.3.3loki v2.0.0logging v7.6.2chartmuseum v0.12.0docker-registry v2.7.1argo-cd v1.7.4gitlab-ce v9.4.1harbor v1.10.2jenkins v2.222.1kuboard v2.0.5.1redmine v4.1.1sonarqube v7.9.2tensorflow-serving v1.14.0tensorflow-notebook v1.6.0weave-scope v1.12.0
三、主要概念部署模式- 手动模式: 用户需要自己准备物理机或虚拟机 存储可选择 NFS 持久化存储,外部 ceph 存储等
- 自动模式: 用户只需要绑定云平台(比如 VMware)账号信息,KubeOperator 会根据预先定义的部署计划来自动创建主机实现一键自动化部署
自动部署模式下,部署计划定 义了 Kubernetes 集群的部署细节,包括其部署模型、集群所在的区域、可用区、节点大小类型等
区域和可用区区域(Region)和可用区(AZ)这两个术语来自公有云。每个区域完全独立。每个可用区完全隔离,但同一个区域内的可用区之间使用低时延链路相连。区域和可用区之间的关系如下图所示
对于公有云厂商提供的托管 Kubernetes 服务,master 节点由公有云厂商托管并维护,其 3 个master 节点会分布在同个区域下面的 3 个不同可用区上面,实现真正的高可用
KubeOperator 借鉴公有云厂商的思路和概念,并应用到 VMware、Openstack 和 FusionCompute 等私有云平台上面。例如,在 VMware 云平台下,区域对应为 Datacenter,可用区对应于 cluster,或者 cluster 下面的 resource pool
注意事项
- 如果用户只有一个 vSphere 集群,那么可以在集群下面建立三个 resource pool,每个resource pool 对应于一个可用区
- 如果用户有三个 vSphere 集群,那么每个集群对应于一个可用区
- vSAN 集群不能被多个 vSphere 集群共享,所以 3 个 vSphere 集群,持久化存储仅支持集中存储。 具体请参考此文档
支持通过在项目中设置用户权限等级来管理集群,分为系统管理员、项目管理员、集群管理员
系统管理员默认的 admin 账号可以创建系统管理员
- 管理集群,安装、卸载、升级、扩容、缩容、备份、恢复等等所有集群相关操作
- 管理用户,添加系统管理员和普通用户
- 管理项目,创建新项目,给项目创建集群、指定项目管理员、授权资源等
- 管理资源,添加集群所需主机、部署计划等
- 系统设置,设置添加凭据、添加备份账号等
- 管理集群,安装、卸载、升级、扩容、缩容、备份、恢复等等所有集群相关操作
- 管理成员,可以指定普通用户(非系统管理员)给某个项目为项目管理员和集群管理员
- 授权资源,创建集群所需资源,包括主机,部署计划和备份账号
- 管理集群,安装、卸载、升级、扩容、缩容、备份、恢复等等所有集群相关操作
- kubeoperator_server: 提供平台业务管理相关功能的后台服务;
- kubeoperator_ui: 提供平台业务管理相关功能的前台服务;
- kubeoperator_kobe: 提供执行 Ansible 任务创建 Kubernetes 集群的功能;
- kubeoperator_kotf: 提供执行 Terraform 任务创建虚拟机的功能;
- kubeoperator_webkubectl: 提供在 Web 浏览器中运行 kubectl 命令的功能;
- kubeoperator_nginx: 平台统一入口,并运行控制台的 Web 界面服务;
- kubeoperator_mysql: 数据库管理组件;
- kubeoperator_nexus: 仓库组件,提供 Docker、Helm、Raw、Yum等资源仓库功能;
- kubeoperator_grafana: 监控组件,提供平台监控等相关功能;
各个组件间的关系可参考下图
最小化配置
角色 |
CPU核数 |
内存 |
系统盘 |
数量 |
部署机 |
4 |
8G |
100G |
1 |
Master |
4 |
8G |
100G |
1 |
Worker |
4 |
8G |
100G |
3 |
推荐配置
角色 |
CPU核数 |
内存 |
系统盘 |
数量 |
部署机 |
8 |
16G |
100G SSD |
1 |
Master |
8 |
16G |
100G SSD |
3 |
Worker |
8 |
16G |
系统盘: 100G |
>3 |
kubeoperator 部署机
需求项 |
具体要求 |
参考(以CentOS7.6为例) |
操作系统 |
支持 Docker 的 Linux OS |
cat /etc/redhat-release |
CPU 架构 |
支持 x86_64 和 aarch64 |
uname -m |
kernel 版本 |
>=Linux 3.10.0-957.el7.x86_64 |
uname -sr |
swap |
关闭 |
swapoff -a |
防火墙 |
关闭 |
systemctl stop firewalld && systemctl disable firewalld |
端口 |
所有节点防火墙必须放通 SSH(默认22)、80、8081-8083端口 |
firewall-cmd --zone=public --add-port=80/tcp --permanent |
SELinux |
关闭 |
setenforce 0 |
kubernetes 集群节点
安装说明离线安装
请自行下载 KubeOperator 最新版本的离线安装包,并复制到目标机器的 /tmp 目录下
cd /tmp
# 解压安装包
tar zxvf KubeOperator-release-v3.x.y.tar.gz
# 进入安装包目录
cd KubeOperator-release-v3.x.y
# 运行安装脚本
/bin/bash install.sh
# 等待安装脚本执行完成后,查看 KubeOperator 状态
koctl status
在线安装
安装完成后,检查服务状态。若有有异常,可以使用 koctl restart 命令进行重新启动
[root@kubeoperator ~]# koctl status
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------------------------
kubeoperator_grafana /run.sh Up (healthy) 3000/tcp
kubeoperator_kobe kobe-server Up (healthy) 8080/tcp
kubeoperator_kotf kotf-server Up (healthy) 8080/tcp
kubeoperator_mysql /entrypoint.sh mysqld Up (healthy) 3306/tcp 33060/tcp
kubeoperator_nexus sh -c ${SONATYPE_DIR}/star ... Up 0.0.0.0:8081->8081/tcp 0.0.0.0:8082->8082/tcp 0.0.0.0:8083->8083/tcp
kubeoperator_nginx /docker-entrypoint.sh ngin ... Up (healthy) 0.0.0.0:80->80/tcp
kubeoperator_server ko-server Up (healthy) 8080/tcp
kubeoperator_ui /docker-entrypoint.sh ngin ... Up (healthy) 80/tcp
kubeoperator_webkubectl sh /opt/webkubectl/start-w ... Up (healthy)
登录
地址: http://<ko服务器_ip>:80
用户名: admin
密码: kubeoperator@admin123
帮助
koctl --help
升级说明
离线升级
# 离线升级需要提前下载离线安装包,并解压到KubeOperator部署机
# 进入升级包目录
cd KubeOperator-release-v3.x.y
# 运行安装脚本
./koctl upgrade
# 查看 KubeOperator 状态
koctl status
在线升级
混合架构说明定义:混合架构是指使用 KubeOperator 部署同时包含 x86_64 和 arm64 架构节点的 Kubernetes 集群
如下图所示,混合部署需要提供 x86_64 和 arm64 架构的 nexus 仓库,以便于集群部署时可以下载到对应架构的资源,之后在 KubeOperator 系统设置添加不同架构的仓库信息即可。
例如:
1.可以分别部署两台不同架构的 KubeOperator(一台 arm64 一台 x86_64)
2.使用 x86_64 架构的主机作为日常操作的主机
3.将 arm64 的主机作为 arm 仓库使用并添加到 x86_64 的 KubeOperator 系统设置中
- 仓库协议: 支持 http 和 https,默认 http
- 仓库 IP: 默认为部署 KubeOperator 的服务器 IP。将使用该 IP 来访问 nexus 仓库
- CPU架构: 支持 x86_64 和 arm64 ,即两种不同 CPU 架构的仓库
注意
如果部署 Kubernetes 集群时需要K8S节点采用 x86_64 和 arm64 混合部署,则需要添加两个不同 CPU 架构的仓库
- 手动模式创建集群,需要提前设置好主机凭据
- NTP Server: 时间同步服务器,默认可以为空。也可以自建或使用公共 NTP Server
KubeOperator 支持两种 Kubernetes 集群部署方式,一种是自动模式,另外一种是手动模式,我们推荐使用自动模式。在自动模式下,用户需要准备软件定义的 IaaS 云平台,比如 VMware vSphere、Openstack 和 FusionCompute 等
本章节以 VMware vSphere 平台作为示例,讲解整个 K8s 集群的规划、部署及管理过程。部署示意图如下图所示:
- 支持添加和修改虚拟机配置(CPU、内存)
- 默认 small、medium、large、xlarge、2xlarge 和 4xlarge 六种配置
- IP 池在创建可用区时使用,池中的 IP 地址将分配给虚拟机
- 创建 IP 池要配置好子网掩码、起止 IP、网关和 DNS 等
- 列表页点击IP 使用情况可查看IP 池中所有 IP 的状态(可达、可用和占用)
- 在 IP 的页面,可手动添加 IP 段、同步 IP 状态
- 与公有云中的 Region 概念相似,可以简单理解为地理上的区域
- 创建区域时,首先选择提供商,目前支持 VMware vSphere、OpenStack 和 FusionCompute
- 配置参数时,需要提供 vSphere 环境信息,包括 vCenter IP,用户名和密码,单击【验证】可以校验 vSphere 信息是否正确
- vCenter 用户需要的权限比较高,建议直接绑定带有管理员角色的用户
- 选择 vCenter 的目标数据中心
- 与公有云中的 AZ 概念相似,可以简单理解为 Region 中具体的机房
- 在 vSphere 体系中我们使用不同的 Cluster 或者同个 Cluster 下的不同 Resource Pool 来实现 Zone 的划分
- 选择可用区配置参数时,需要选择计算集群,资源池,存储类型以及网络适配器等信息,这些信息依赖于 vCenter 环境配置
- 支持默认模版和自定义模版(默认模版为CentOS 7.6)
- 添加成功后会有一个初始化的过程(选择默认模版时,需要上传 nexus 仓库中模版文件),同步成功之后状态变为就绪
- 用来描述在哪个区域下,哪些可用区中,使用什么样的机器规格,部署什么类型的集群的一个抽象概念
- 部署计划配置包括选择可用区(可用区可以单选或多选),并设置 Master 节点,Worker 节点的规格
- 多主多节点集群可以选择多个可用区的部署计划
KubeOperator 支持两种 Kubernetes 集群部署方式,一种是手动模式,另外一种是自动模式。手动模式下,用户需要自行准备主机。
本章节以手动模式部署一个开发测试用集群为例,需要至少准备三台服务器,每台服务器的用途和需求是:
角色 |
数量 |
操作系统 |
最低配置 |
推荐配置 |
部署机 |
1 |
CentOS 7.6 |
4C 8G |
4C 16G |
Master |
1 |
CentOS 7.6 |
2C 4G |
4C 8G |
Worker |
1 |
CentOS 7.6 |
2C 4G |
4C 8G |
- 主机列表可以看到已添加主机的详细信息,包括 IP、CPU、内存、操作系统等。
- 系统管理员或项目管理员可将主机授权给目标集群所在项目
- 供应商: 支持裸金属(手动模式)和部署计划(自动模式)
- 版本: 支持版本管理中最新的两个 Kubernetes 版本
- 架构: 支持 AMD64 和 ARM64
- Yum 仓库: 支持替换、共存和不操作三种类型
Yum 仓库
- 替换: 会对 K8S 节点服务器原始 yum repo 文件进行备份,之后生成并仅使用 KubeOperator 的 yum repo
- 共存: 将保持 K8S 节点服务器原始 yum repo 文件不变,同时生成并使用 kubeoperator 的 yum repo
- 不操作: 将保持使用 K8S 节点服务器原始 yum repo 文件,不对 K8S 节点服务器的 yum repo 做任何操作
- 最大 POD 数量: 默认 110
- Pod 子网: 默认 10.244.0.0/18
- Service 子网: 默认 10.244.64.0/18
- kube-proxy 模式: 支持 iptables 和 ipvs
- kubernetes 审计: 支持开启日志审计功能
- 容器运行时: 支持 Docker 和 Containerd(注意: ARM64 架构下,容器运行时不支持 Containerd)
- Docker 数据路径: 默认 /var/lib/docker
- Container 子网: 默认 172.17.0.1/16
- 网卡名称: 集群节点使用的网卡,根据实际环境填写正确的网卡名称
- 容器网络: 支持 flannel 和 calico
- 网络模式: flannel 支持 host-gw 和 vxlan、calico 支持 bgp 和 ipip
vxlan 和 ipip 网络模式
- 基于隧道,在任何网络环境下都可以正常工作
- 优势是对物理网络环境没有特殊要求,只要宿主机IP层可以路由互通即可
- 劣势是封包和解包耗费CPU性能,且额外的封装导致带宽浪费
host-gw 和 bgp 网络模式
- 基于路由,不适用于公有云环境
- 优势是没有封包和解包过程,完全基于两端宿主机的路由表进行转发
- 劣势是要求宿主机在2层网络是互通,且路由表膨胀会导致性能降低
- helm: 支持 v2 和 v3
- ingress 类型: 支持 nginx-ingress 和 traefik-ingress
- 安装 GPU 套件: 按需使用,默认选择禁用
- 根据不同的节点角色选择目标主机(手动模式)
- 选择已授权部署计划,设置 Worker 节点数量(自动模式)
集群创建过程中为 Initializing 状态,点击可查看集群安装进度并支持查看当前任务的实时日志(支持手动暂停任务日志输出)
输入要导入集群的名称、Api Server、Router、Token
示例
- Api Server: https://172.16.10.100:8443
- Router: 装有 kube-proxy 的任意节点的且可以被访问到的 IP 地址
- Token: 要具有 cluster-admin 权限
# 获取 cluster-admin 权限的 token
kubectl -n kube-system describe secrets kubeoperator-admin-token-m7srm
Name: kubeoperator-admin-token-m7srm
namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubeoperator-admin
kubernetes.io/service-account.uid: d3f3622-a5cb-4ad1-ab2e-53887c59007
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1038 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtcZCI6Ik9GN2U0SXhybVFVRV9JaFJYSTBzdXQ2Mi1WZmRHcXpIOXNDb2Rqemt0MjAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL1NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pxy9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrby1hZG1pbi10b2tlbi1tN3NybSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrby1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImQzZjM2MzIyLWE1Y2ItNGFkMS1hYjJlLTUzODg3Y2E1OTAwNyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprby1hZG1pbiJ9.HvpDTAgn0nHu0ZnyPgxOFwWKiwtyYEqWaBWTrSV7EjRcToVIrN2eR8t9kw_RiDEI93S_Nnfjw-Xj1RTRsQEkRASx5uuXMAbELWnFo-rGLR8qs0ct-1t2jGkhgBQ2WtiCqczSG-o91N7PqqYa6RMebUTjy2M7bnybKGxSq0G-StH_JrgOGLHROtvV7U9JWiv32akGXqliK09YfVY6Ykv9kg4z6MeHWvpfCBTmR0qKn9wY2qC2DHynw2Nd_5LxtHeCJGYcvflaR_kcOP4bhzqxMbtGSf0xd5GXYa1iNKGm3Hu8-FtPiDc9BuViQIzR6PvsjzaIBWVRYOxD5zf0jUz_zw
使用工具
示例
- 工具中所涉及到的镜像默认使用 KubeOperator 镜像仓库,在启用工具前,需要在 Kubernetes 节点配置私有仓库的可信任设置可以通过HTTP直接访问
vim /etc/docker/daemon.json
{
"insecure-registries" : [ "..." "kubeoperator-ip:8082" "..." ]
}
# kubeoperator-ip 为 KubeOperator 部署机 IP
# 为了使得配置生效,需要重新启动 docker 服务
systemctl restart docker.service
- KubeOperator 不能针对导入的集群进行扩缩容、备份等集群运营操作
- 集中显示了集群基本信息、容量信息和统计信息
- 可下载 kubeconfig 文件(将 kubeconfig 文件中 cluster.server 地址修改为 master 节点 IP)
支持在 web 页面执行 kubectl 命令查询集群信息等操作
显示集群节点相关信息。支持针对 Kubernetes 集群 worker 节点的扩缩容
worker 节点扩容(手动模式选择要添加的主机,自动模式输入扩容后 worker 节点数量)
- 自动模式: 删除所选节点虚拟机
- 手动模式: 在所选节点执行卸载任务,删除该节点上安装 k8s 集群所依赖的服务(节点删除成功后,要手动重启该节点来删除虚拟网卡等信息)
- 列表显示为集群中现有的 namespace,支持创建和删除操作
- 系统默认和 kube-operator namespace 不支持删除
设置存储提供商(provisioner)、存储类(storageclass)、持久卷(PersistentVolume)
支持的类型有 nfs、external-ceph、rook-ceph、vsphere 和 oceanstor(华为 csi)
- nfs: 需要指定 nfs 服务端版本、IP 和共享目录
- external-ceph: 创建成功之后,会在集群中初始化 ceph provisioner 相关 pod
- rook-ceph: 需要指定 ceph 集群所需磁盘(集群所有节点都必须包含指定的磁盘,如sdb sdc...)
- vsphere: 集群服务器必须在指定 Folder 中(自动模式创建集群默认 Folder 为 kubeoperator),并且服务器名称要和集群 node 节点名称保持一致
- oceanstor: 参考文档: https://github.com/Huawei/eSDK_K8S_Plugin/tree/master/docs/zh
内置 local volume 存储提供商,如需添加其他类型,需要提前创建对应类型的存储提供商
external-ceph: 需要在 Kubernetes 中创建 admin 及 user 所需的 secret
# 可在 ceph 服务端通过以下命令获得 secret key
ceph auth get-key client.admin
# 创建 admin secret
kubectl create secret generic ceph-admin-secret \
--namespace=kube-system \
--type=kubernetes.io/rbd \
--from-literal=key=AQCtabcdKvXBORAA234AREkmsrmLdY67i8vxSQ==
持久卷
支持添加 hostpath 和 local volume 两种类型的持久卷,需要提前目标主机创建文件目录
事件- 支持查看目标 namespace 下的系统事件
- 支持启用 node-problem-detector
需要在【工具】页面开启 ElasticSearch 或 Loki 日志组件(不支持同时开启)
需要在【工具】页面开启 Prometheus 作为 Grafana 默认数据源
提供 prometheus、kubeapps、grafana、elasticsearch、loki、dashboard、registry和chartmuseum 八种管理工具,可根据需要自定义安装
- 点击启用按钮,可以设置 namespace 和是否启用存储等参数
- 失败状态下,可点击启用按钮重新设置参数提交(会触发更新操作)
默认安装版本为 1.8.0,ingress 和 egress 可根据需要手动开启
- 集群备份: 支持立即备份、定时备份(需要在系统设置中设置备份账号,并授权到目标项目)
- 集群恢复: 支持备份列表文件恢复和本地备份文件恢复(上传 etcd 快照文件)
日志
可以查看针对集群的备份、恢复记录以及任务执行异常时的错误日志
通过 CIS 安全扫描功能,可以帮助集群管理员检查Kubernetes集群是否已经安全部署
- 进入【项目】菜单,选中目标集群,点击【升级】按钮,选择要升级到的目标版本
- 升级之前,会先检测当前 kubernetes 集群中 etcd、docker/containerd 和 kubernetes 版本,若检测结果为可升级,将会对 etcd、docker/containerd、kubernetes 进行统一升级,从而保证集群各组件之间的兼容性
- 升级过程中,支持查看任务实时的日志输出
诊断
- 检查集群节点网络是否可用
- 检查 kubeoperator_server 容器内是否可以 ssh 连接到 kubernetes 集群节点
- 检查 kubeoperator_server 容器内是否可以正常调用 kubernetes api
修复
存在异常状态的情况下,可点击修复按钮来修复相关问题
- 自动模式: 删除 KubeOperator 创建的虚拟机
- 手动模式: 在集群所有节点执行卸载任务,删除安装 k8s 集群所依赖的服务(集群卸载完成后,要手动重启节点来删除虚拟网卡等信息)
- 强制删除: 如果 k8s 集群存在失联状态的节点,可勾选强制删除来删除集群
https://www.fit2cloud.com/
开源地址:https://github.com/kubeoperator/kubeoperator
八、常见命令koctl upgrade 升级
koctl stop 停止服务
koctl start 启动服务
koct status 查看服务平台
koct restart 重启服务
九、安装目录kubeoperator 所有安装文件都在/opt/kubeoperator 目录,可以修改里面的配置文件
十、安装密码kubeoperator ui
访问地址:安装服务器的ip(例如我安装的服务器ip为10.0.190.153)
访问地址为:http://10.0.190.153
用户名: admin
初始密码: kubeoperator@admin123
mysql安装密码
(mysql没有映射3306端口,如果需要用客户端访问,需要把docker的3306端口映射出来)
账号:root
密码:KubeOperator123@mysql
kubeoperator_nexus
访问地址:http://10.0.190.153:8081/
账号:admin
密码:admin123