├── .gitignore ├── LICENSE ├── README.md ├── docs ├── about │ └── changelog.md ├── concept.md ├── css │ └── extra.css ├── dev │ ├── dev_manual.md │ └── rest_api.md ├── faq.md ├── img │ ├── KubeOperator-icon.png │ ├── KubeOperator-mixed-arch.png │ ├── components.jpg │ ├── dashboard.png │ ├── dev │ │ ├── swagger-1.png │ │ └── swagger-2.png │ ├── faq │ │ ├── harbor-externalurl.jpg │ │ ├── harbor-nodeport.jpg │ │ ├── harbor-tls.jpg │ │ ├── overview.png │ │ └── what-is-ko.png │ ├── favicon.png │ ├── guidelines │ │ ├── argocd │ │ │ ├── argocd-1.png │ │ │ ├── argocd-2.png │ │ │ ├── argocd-3.png │ │ │ ├── argocd-4.png │ │ │ ├── argocd-deploy05.png │ │ │ ├── argocd-deploy06.png │ │ │ ├── argocd-deploy07.png │ │ │ ├── argocd-deploy08.png │ │ │ ├── argocd-deploy09.png │ │ │ ├── argocd-deploy10.png │ │ │ ├── argocd-deploy11.png │ │ │ ├── argocd-deploy12.png │ │ │ ├── argocd-deploy13.png │ │ │ ├── argocd-deploy14.png │ │ │ ├── argocd-deploy15.png │ │ │ └── argocd-deploy16.png │ │ └── kubeapps │ │ │ ├── gitlab-1.png │ │ │ ├── gitlab-2.png │ │ │ ├── gitlab-3.png │ │ │ ├── gitlab-4.png │ │ │ ├── kubeapps-1.png │ │ │ ├── kubeapps-2.png │ │ │ ├── kubeapps-3.png │ │ │ ├── kubeapps-4.png │ │ │ └── kubeapps-5.png │ ├── ko-region.png │ ├── kubeoperator-white.png │ ├── kubeoperator.jpeg │ ├── region.png │ ├── tutorial │ │ └── vmware.png │ └── user_manual │ │ ├── backup_account │ │ ├── backup-1.png │ │ └── backup-2.png │ │ ├── cluster │ │ ├── cis-scan.png │ │ ├── cluster-backup-1.png │ │ ├── cluster-backup-2.png │ │ ├── cluster-diagnosis.png │ │ ├── cluster-events.png │ │ ├── cluster-import.png │ │ ├── cluster-remove.png │ │ ├── cluster-upgrade.png │ │ ├── deploy-1.png │ │ ├── deploy-2.png │ │ ├── deploy-3.png │ │ ├── deploy-4.png │ │ ├── deploy-5.png │ │ ├── deploy-hosts.png │ │ ├── deploy-log.png │ │ ├── deploy-plan.png │ │ ├── deploy-review.png │ │ ├── istio-1.png │ │ ├── logging-1.png │ │ ├── monitor-1.png │ │ ├── namespace-1.png │ │ ├── node-1.png │ │ ├── node-2.png │ │ ├── node-3.png │ │ ├── node-4.png │ │ ├── node-cordon.png │ │ ├── node-detail.png │ │ ├── overview-1.png │ │ ├── overview-2.png │ │ ├── storage-1.png │ │ └── tools-1.png │ │ ├── hosts │ │ ├── host-add.png │ │ ├── host-detail.png │ │ ├── host-edit.png │ │ ├── host-import-excel.png │ │ ├── host-import.png │ │ ├── host-list.png │ │ └── host-refresh.png │ │ ├── plan │ │ ├── custom-templates.png │ │ ├── ip-pool-add.png │ │ ├── ip-pool-list.png │ │ ├── ip-pool-use.png │ │ ├── plan-1.png │ │ ├── region-1.png │ │ ├── template-fusioncompute.png │ │ ├── template-openstack.png │ │ ├── template-upload.png │ │ ├── template-vsphere.png │ │ ├── virtual-config-list.png │ │ └── zone-1.png │ │ ├── project │ │ ├── project-3.png │ │ ├── project-5.png │ │ ├── project-dashboard.png │ │ └── project-list.png │ │ ├── system_log │ │ └── system-log.png │ │ ├── system_management │ │ ├── key-1.png │ │ ├── key-2.png │ │ ├── ntp.png │ │ └── registry.png │ │ ├── user_management │ │ └── user-1.png │ │ └── version │ │ ├── version-1.png │ │ └── version-2.png ├── index.md ├── installation │ └── install.md ├── quick_start │ ├── cluster_deployment.md │ ├── cluster_import.md │ ├── cluster_planning │ │ ├── automatic.md │ │ └── manual.md │ └── system_settings.md ├── system_arch.md └── user_manual │ ├── argocd.md │ ├── backup_account.md │ ├── cluster.md │ ├── hosts.md │ ├── kubeapps.md │ ├── plan.md │ ├── project.md │ ├── system_log.md │ ├── system_management.md │ ├── user_management.md │ └── version.md ├── mkdocs.yml ├── readthedocs.yml ├── requirements └── requirements.txt └── theme ├── .icons └── Bilibili_Logo_Blue.svg ├── css ├── f2c-header.css └── lightgallery.min.css ├── f2c-header.html ├── fonts ├── lg.svg ├── lg.ttf └── lg.woff ├── img ├── loading.gif └── logo │ ├── banner-nav-CloudExplorer.svg │ ├── banner-nav-DataEase.svg │ ├── banner-nav-FIT2CLOUD.svg │ ├── banner-nav-JumpServer.svg │ ├── banner-nav-KubeOperator.svg │ ├── banner-nav-MeterSphere.svg │ ├── logo-dark-MeterSphere.svg │ ├── logo-light-FIT2CLOUD.svg │ └── logo-light-MeterSphere.svg ├── js ├── jquery-3.5.1.min.js ├── lightgallery.min.js └── mega.js └── main.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | .DS_Store 3 | site/ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [](https://www.python.org/) 2 | 3 | 本仓库保存了 [KubeOperator 项目]() 的 [官方文档](https://kubeoperator.io/docs/),该文档使用 [MkDocs]() 文档框架下的 [Material for MkDocs]() 主题进行构建。 4 | 5 | ## 本地开发 6 | 7 | ### 克隆本仓库 8 | ```bash 9 | git clone https://github.com/KubeOperator/docs.git 10 | ``` 11 | 12 | ### 安装依赖 13 | ```bash 14 | cd docs 15 | pip install -r requirements/requirements.txt 16 | ``` 17 | 18 | ### 修改文档内容 19 | 20 | 本文档的文档结构定义在 `mkdocs.yml` 文件中,文档的具体内容均在 `docs` 目录中。 21 | 22 | 文档内容使用 markdown 语法编写,若要添加新的文档,需要先在 `mkdocs.yml` 文件中的 `nav` 部分增加对应章节导航。 23 | 24 | ### 本地调试文档 25 | ```bash 26 | mkdocs serve 27 | ``` 28 | 执行上述命令后,可通过 `http://127.0.0.1:8000` 地址查看生成的文档内容,当修改文档后,页面内容会自动更新。 29 | 30 | ### 构建文档 31 | ```bash 32 | mkdocs build 33 | ``` 34 | 35 | 执行上述命令后,会在 `site` 目录下生成文档站点的静态文件,将目录中的内容复制到任意 HTTP 服务器上即可完成文档的部署。 36 | 37 | ## 问题反馈 38 | 39 | 如果您发现文档中存在错误,或对文档内容存在疑问,请提交 GitHub Issue 到 [KubeOperator 项目的主仓库](https://github.com/KubeOperator/KubeOperator/issues) 40 | 41 | ## 帮助完善文档 42 | 43 | ### Fork 文档仓库 44 | 点击仓库右上角的 `fork` 按钮,复制本仓库到自己的 github 账号。 45 | 46 | ### 克隆 fork 后的仓库 47 | ```bash 48 | git clone https://github.com/your-github-account/docs.git 49 | ``` 50 | 51 | ### 本地修改并调试 52 | 53 | ### Push 修改内容到 GitHub 仓库 54 | 55 | ### 提交 Pull Request 到本仓库 56 | -------------------------------------------------------------------------------- /docs/concept.md: -------------------------------------------------------------------------------- 1 | 2 | ## 部署模式 3 | 4 | !!! warning "" 5 | - 手动模式: 用户需要自己准备物理机或虚拟机,存储可选择 NFS 持久化存储,外部 ceph 存储等 6 | - 自动模式: 用户只需要绑定云平台(比如 [VMware][VMware])账号信息,[KubeOperator][KubeOperator] 会根据预先定义的部署计划来自动创建主机实现一键自动化部署 7 | 8 | ## 部署计划 9 | 10 | !!! warning "" 11 | 自动部署模式下,部署计划定义了 [Kubernetes][Kubernetes] 集群的部署细节,包括其部署模型、集群所在的区域、可用区、节点大小类型等 12 | 13 | ## 区域和可用区 14 | 15 |  16 | 17 | !!! warning "" 18 | 区域(Region)和可用区(AZ)这两个术语来自公有云。每个区域完全独立。每个可用区完全隔离,但同一个区域内的可用区之间使用低时延链路相连。区域和可用区之间的关系如下图所示 19 | 20 | !!! warning "" 21 | 对于公有云厂商提供的托管 [Kubernetes][Kubernetes] 服务,master 节点由公有云厂商托管并维护,其 3 个master 节点会分布在同个区域下面的 3 个不同可用区上面,实现真正的高可用 22 | 23 | !!! warning "" 24 | [KubeOperator][KubeOperator] 借鉴公有云厂商的思路和概念,并应用到 [VMware][VMware]、[OpenStack][OpenStack] 和 [FusionCompute][FusionCompute] 等私有云平台上面。例如,在 [VMware][VMware] 云平台下,区域对应为 Datacenter,可用区对应于 cluster,或者 cluster 下面的 resource pool 25 | 26 | !!! warning "注意事项" 27 | - 如果用户只有一个 vSphere 集群,那么可以在集群下面建立三个 resource pool,每个resource pool 对应于一个可用区 28 | - 如果用户有三个 vSphere 集群,那么每个集群对应于一个可用区 29 | - vSAN 集群不能被多个 vSphere 集群共享,所以 3 个 vSphere 集群,持久化存储仅支持集中存储。 [具体请参考此文档](https://docs.vmware.com/en/VMware-Enterprise-PKS/1.5/vmware-enterprise-pks-15/GUID-vsphere-persistent-storage.html) 30 | 31 | ## 权限模型 32 | 33 | !!! warning "" 34 | 支持通过在项目中设置用户权限等级来管理集群,分为系统管理员、项目管理员、集群管理员 35 | 36 | ### 系统管理员 37 | 38 | !!! warning "" 39 | 默认的 admin 账号可以创建系统管理员 40 | 41 | !!! warning "" 42 | - 管理集群,安装、卸载、升级、扩容、缩容、备份、恢复等等所有集群相关操作 43 | - 管理用户,添加系统管理员和普通用户 44 | - 管理项目,创建新项目,给项目创建集群、指定项目管理员和集群管理员、授权资源等 45 | - 管理版本,启用、禁用 k8s 版本、查看版本详情等 46 | - 管理资源,添加集群所需主机、部署计划、备份账号等 47 | - 系统设置,设置添加仓库、凭据、NTP、邮箱、License等 48 | - 查看系统日志 49 | 50 | ### 项目管理员 51 | 52 | !!! warning "" 53 | - 管理集群,安装、卸载、升级、扩容、缩容、备份、恢复等所有集群相关操作 54 | - 查看版本,查看版本详情 55 | - 查看资源,查看集群所需主机、部署计划、备份账号等 56 | - 查看项目,查看项目管理员和集群管理员、已授权资源等 57 | - 查看系统日志 58 | 59 | ### 集群管理员 60 | 61 | !!! warning "" 62 | - 管理集群,查看集群概览、监控、日志、事件、添加工具、启用CSI扫描等相关操作 63 | - 查看系统日志 64 | 65 | [KubeOperator]:https://kubeoperator.io 66 | [Kubernetes]:https://kubernetes.io 67 | [VMware]:https://www.vmware.com 68 | [OpenStack]:https://www.openstack.org 69 | [FusionCompute]:https://support.huawei.com/enterprise/zh/cloud-computing/fusioncompute-pid-8576912 70 | -------------------------------------------------------------------------------- /docs/css/extra.css: -------------------------------------------------------------------------------- 1 | :root > * { 2 | --md-primary-fg-color: #fc6554; 3 | } 4 | 5 | .md-header { 6 | top: 48px; 7 | } 8 | 9 | .md-footer-nav__link { 10 | padding-top: .8rem; 11 | } 12 | 13 | .md-main__inner { 14 | margin-top: 3rem; 15 | } 16 | 17 | .progress-label { 18 | position: absolute; 19 | text-align: center; 20 | font-weight: 700; 21 | width: 100%; 22 | margin: 0; 23 | line-height: 1.2rem; 24 | white-space: nowrap; 25 | overflow: hidden; 26 | } 27 | 28 | .progress-bar { 29 | height: 1.2rem; 30 | float: left; 31 | background-color: #2979ff; 32 | } 33 | 34 | .progress { 35 | display: block; 36 | width: 100%; 37 | margin: 0.5rem 0; 38 | height: 1.2rem; 39 | background-color: #eeeeee; 40 | position: relative; 41 | } 42 | 43 | .progress.thin { 44 | margin-top: 0.9rem; 45 | height: 0.4rem; 46 | } 47 | 48 | .progress.thin .progress-label { 49 | margin-top: -0.4rem; 50 | } 51 | 52 | .progress.thin .progress-bar { 53 | height: 0.4rem; 54 | } 55 | 56 | .progress-100plus .progress-bar { 57 | background-color: #00e676; 58 | } 59 | 60 | .progress-80plus .progress-bar { 61 | background-color: #fbc02d; 62 | } 63 | 64 | .progress-60plus .progress-bar { 65 | background-color: #ff9100; 66 | } 67 | 68 | .progress-40plus .progress-bar { 69 | background-color: #ff5252; 70 | } 71 | 72 | .progress-20plus .progress-bar { 73 | background-color: #ff1744; 74 | } 75 | 76 | .progress-0plus .progress-bar { 77 | background-color: #f50057; 78 | } 79 | 80 | .md-nav__source { 81 | background-color: #fc6554; 82 | } 83 | 84 | .md-grid { 85 | margin-left: 1rem; 86 | margin-right: auto; 87 | max-width: initial; 88 | } 89 | 90 | .md-top { 91 | margin-top: 2rem; 92 | } 93 | 94 | .md-nav--primary .md-nav__title .md-logo { 95 | display: none; 96 | } 97 | -------------------------------------------------------------------------------- /docs/dev/dev_manual.md: -------------------------------------------------------------------------------- 1 | ## 项目结构 2 | 3 | ### 后端 4 | ``` 5 | . 6 | ├── Dockerfile.amd64 # 构建容器镜像使用的 dockerfile 7 | ├── Makefile # 编译文件 8 | ├── LICENSE 9 | ├── README.md 10 | ├── ROADMAP.md 11 | ├── go.mod 12 | ├── pkg # 主目录 13 | ├── locales # 后端 i18n 翻译目录 14 | ├── docs # REST Api 文档目录 15 | ├── migration # 数据库变更文件目录 16 | ``` 17 | 18 | ### 前端 19 | ``` 20 | . 21 | ├── Dockerfile # 构建容器镜像使用的 dockerfile 22 | ├── LICENSE 23 | ├── README.md 24 | ├── package.json # 包管理文件 25 | ├── src # 主目录 26 | ``` 27 | 28 | ## 配置开发环境 29 | 30 | ### 后端 31 | 32 | !!! warning "" 33 | - KubeOperator 后端使用 iris 框架,并使用 Go mod 作为项目管理工具 34 | - 开发环境 Golang 版本 >= 1.14 35 | 36 | #### 初始化配置 37 | 38 | ##### 数据库初始化 39 | 40 | !!! warning "" 41 | KubeOperator 使用 MySQL 数据库,推荐使用 MySQL 5.7 版本。同时 KubeOperator 对数据库部分配置项有要求,请参考下附的数据库配置,修改开发环境中的数据库配置文件 42 | 43 | !!! warning "" 44 | 45 | ```mysql 46 | [mysqld] 47 | datadir=/var/lib/mysql 48 | 49 | default-storage-engine=INNODB 50 | character_set_server=UTF8MB4 51 | table_open_cache=128 52 | max_connections=2000 53 | max_connect_errors=6000 54 | innodb_file_per_table=1 55 | innodb_buffer_pool_size=1G 56 | max_allowed_packet=64M 57 | transaction_isolation=READ-COMMITTED 58 | innodb_flush_method=O_DIRECT 59 | innodb_lock_wait_timeout=1800 60 | innodb_flush_log_at_trx_commit=0 61 | sync_binlog=0 62 | sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 63 | skip-name-resolve 64 | user=mysql 65 | 66 | [mysql] 67 | default-character-set=utf8 68 | 69 | [mysql.server] 70 | default-character-set=utf8 71 | ``` 72 | 73 | 请参考文档中的建库语句创建 KubeOperator 使用的数据库,server 服务启动时会自动在配置的库中创建所需的表结构及初始化数据。 74 | 75 | !!! warning "" 76 | 77 | ```mysql 78 | CREATE DATABASE `ko` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ 79 | ``` 80 | 81 | ##### KubeOperator 配置文件 82 | 83 | !!! warning "" 84 | KubeOperator 会默认加载该路径下的配置文件 /etc/ko/app.yaml,请参考下列配置创建对应目录及配置文件 85 | 86 | !!! warning "" 87 | 88 | ```yaml 89 | bind: 90 | host: 0.0.0.0 91 | port: 8080 92 | logging: 93 | level: info 94 | out_put: fileAndStd 95 | max_age: 2592000 96 | rotation: 86400 97 | # 数据库配置 98 | db: 99 | # mysql 服务地址,按需修改 100 | host: mysql 101 | port: 3306 102 | user: root 103 | # 明文密码:KubeOperator123@mysql 104 | password: U08BAQEBAQHNm6g24wOpMgv34sNpwR5aBVdvFeSE9+6bydHO/WZLvZXlX9rxiY4V 105 | name: ko 106 | max_open_conns: 200 107 | max_idle_conns: 10 108 | jwt: 109 | secret: iXDgDaEYBzIzustW 110 | exp: 480 111 | job: 112 | timeout: 60 113 | # kobe 组件配置 114 | kobe: 115 | # kobe 服务地址,按需修改 116 | host: kobe 117 | port: 8080 118 | # kotf 组件配置 119 | kotf: 120 | # kotf 服务地址,按需修改 121 | host: kotf 122 | port: 8080 123 | webkubectl: 124 | host: webkubectl 125 | port: 8080 126 | kubepi: 127 | host: kubepi 128 | port: 80 129 | cron: 130 | enable: true 131 | encrypt: 132 | multilevel: 133 | enable: true 134 | secret: WjgBAQEBAQG1bkw4r7ZuaKD1klBxrT+zrRk8KWl+7LE0dli3h+a8gl6er0u8Ks1w 135 | parts: 136 | - dP3hT7dBQhygBCYW 137 | - YIi2czL9wv4tQEZD 138 | ``` 139 | 140 | #### 运行后端服务 141 | 142 | !!! warning "" 143 | 主目录运行 144 | 145 | ``` 146 | go run main.go 147 | ``` 148 | 149 | ### 前端 150 | 151 | !!! warning "" 152 | - [neeko](https://github.com/KubeOperator/neeko) 前端使用了 Vue.js 作为前端框架,ElementUI 作为 UI 框架,并使用 npm 作为包管理工具 153 | - 开发者请先下载 Node.js 作为运行环境(推荐版本:v14.x) 154 | 155 | #### 运行步骤 156 | 157 | !!! warning "" 158 | 部署运行好 KubeOperator API 服务器(前置条件) 159 | 160 | ```bash 161 | 1. 安装依赖 162 | $ npm install 163 | 164 | 2. 运行 165 | $ npm run serve 166 | ``` 167 | 168 | ### 组件 169 | 170 | !!! warning "" 171 | [kobe](https://github.com/KubeOperator/kobe) 和 [kotf](https://github.com/KubeOperator/kotf) 为 grpc 协议组件,使用 protobuf 生成 172 | 173 | #### 配置文件 174 | 175 | ##### kobe 176 | 177 | !!! warning "" 178 | kobe 会默认加载该路径下的配置文件 /etc/kobe/app.yaml,请参考下列配置创建对应目录及配置文件 179 | 180 | ```yaml 181 | server: 182 | host: 0.0.0.0 183 | port: 8080 184 | app: 185 | worker: 10 186 | queue: 2000 187 | 188 | ansible: 189 | timeout: 10 190 | forks: 20 191 | ``` 192 | 193 | ##### kotf 194 | 195 | !!! warning "" 196 | kotf 会默认加载该路径下的配置文件 /etc/kotf/app.yaml,请参考下列配置创建对应目录及配置文件 197 | 198 | ``` 199 | server: 200 | host: 0.0.0.0 201 | port: 8080 202 | ``` 203 | 204 | #### 组件启动 205 | 206 | !!! warning "" 207 | ```bash 208 | go run cmd/server/*.go 209 | ``` -------------------------------------------------------------------------------- /docs/dev/rest_api.md: -------------------------------------------------------------------------------- 1 | 2 | !!! warning "点击帮助,查看 API 文档" 3 | 4 |  5 | 6 |  7 | -------------------------------------------------------------------------------- /docs/faq.md: -------------------------------------------------------------------------------- 1 | 2 | ### KubeOperator 的定位 3 | 4 | !!! warning "" 5 | KubeOperator 是一个开源的轻量级 Kubernetes 发行版。与 OpenShift 等重量级 PaaS 平台相比,KubeOperator 只专注于解决一个问题,就是帮助企业规划(Day 0)、部署(Day 1)、运营(Day 2)生产级别的 Kubernetes 集群,并且做到极致。 6 | 7 |  8 | 9 | !!! warning "" 10 | 云原生正在快速兴起,三个互相关联的领域在同步进化: 11 | 12 | - 基础设施方面: 从 物理资源 到 虚拟化资源 到 容器化( Kubernetes )资源 的演进 13 | - 开发模式方面: 从 瀑布模型 到 敏捷开发 到 DevOps 的演进 14 | - 应用架构方面: 从 单体架构 到 多层次架构 到 微服务 的演进 15 | 16 | ### 与其他工具的区别 17 | 18 | === "差异" 19 | !!! warning "" 20 | KubeOperator 不仅提供 Day 1 部署功能,还提供 Day 2 的 K8s 集群升级、扩容、监控、检查、备份恢复等功能 21 | 22 |  23 | 24 | === "优势" 25 | !!! warning "" 26 | KubeOperator 的优势包括: 27 | 28 | - 提供可视化的 Web UI,大大降低部署和管理 Kubernetes 的门槛; 29 | - 提供离线的、经过全面验证和测试的安装包; 30 | - 与 VMware、Openstack 和 FusionCompute 等云平台紧密对接,能够实现一键虚机自动创建和部署(基于 Terraform 和 Ansible); 31 | - KubeOperator 会提供经过充分验证的成熟企业级存储和网络方案。 32 | 33 | ### Kubernetes 集群方案 34 | 35 | !!! warning "" 36 | - 基于物理机部署大的 Kubernetes 集群: 通过 namespace 实现租户的隔离 37 | - 基于 IaaS 平台之上部署多个 Kubernetes 集群: 为每个租户分配独立的 Kubernetes 集群 38 | !!! warning "" 39 | 这两种方案各有好处,在 Kubernetes 采纳初期,使用第二种方案更为理性,因为: 40 | 41 | - 如果是单一大集群,升级会影响所有租户,风险比较大; 42 | - IaaS 平台上有成熟的、基于软件定义的存储和网络方案,落地更容易和灵活; 43 | - KubeOperator 与 VMware、Openstack 等 IaaS 方案紧密集成,可以实现全栈的自动化,集群交付快,伸缩快。 44 | 45 | ### KubeOperator 部署方式 46 | 47 | !!! warning "" 48 | 基于 kubeadm 容器化部署 Kubernetes 集群 49 | 50 | ### 原生 Kubernetes 的好处 51 | 52 | !!! warning "" 53 | - KubeOperator 已经通过云原生基金会的 [Kubernetes 软件一致性认证](https://landscape.cncf.io)。 54 | - Kubernetes 迭代很快,且只维护最新的三个大版本。如果采纳其他发行版,可能很容易出现和原生版本脱节的情况。 55 | - 由于 Operator 和 Helm 等日趋成熟,很多发行版的功能,比如 CI/ CD, Istio 等都可以通过 addon 方式部署到 Kubernetes 集群里面。Kubernetes 集群及其里面的应用应该是分离的,各自迭代升级。 56 | 57 | ### KubeOperator 支持的存储 58 | 59 | === "NFS" 60 | !!! warning "" 61 | 手动模式和自动模式下的集群都支持 NFS 作为持久化存储 62 | 63 | === "LocalStorage" 64 | !!! warning "" 65 | 本地持久化存储 66 | 67 | === "External Ceph" 68 | !!! warning "" 69 | 创建成功之后,会在集群中初始化 ceph provisioner 相关 pod 70 | 71 | === "Rook-Ceph" 72 | !!! warning "" 73 | 需要指定 ceph 集群所需磁盘(集群所有节点都必须包含指定的磁盘,如sdb,sdc...) 74 | 75 | === "vSphere" 76 | !!! warning "" 77 | 集群服务器必须在指定 Folder 中(自动模式创建集群默认 Folder 为 kubeoperator),并且服务器名称要和集群 node 节点名称保持一致 78 | 79 | === "[OceanStor](https://github.com/Huawei/eSDK_K8S_Plugin/tree/master/docs/zh)" 80 | 81 | !!! warning "Static and Dynamic PVs 的支持情况取决于所选择的存储。以 vSphere 平台为例,[各种存储选项可以参考此文章](https://docs.vmware.com/en/VMware-Enterprise-PKS/1.5/vmware-enterprise-pks-15/GUID-vsphere-persistent-storage.html)" 82 | 83 | ### Kubernetes 软件一致性认证 84 | 85 | !!! warning "" 86 | 是的。KubeOperator 已经通过认证,具体请参加: https://landscape.cncf.io 87 | 88 | ### KubeOperator 部署机的推荐配置 89 | 90 | !!! warning "" 91 | KubeOperator 部署机配置取决于初始化 k8s 集群节点数量,推荐配置参考如下: 92 |
集群节点数量 | 95 |部署机推荐配置 | 96 |
1-5 | 99 |2C 4G | 100 |
6-10 | 103 |4C 8G | 104 |
11-50 | 107 |8C 16G | 108 |
51-100 | 111 |16C 32G | 112 |
101-200 | 115 |32C 64G | 116 |
> 200 | 119 |64C 128G | 120 |
worker 节点数量 | 130 |master 推荐配置 | 131 |
1-5 | 134 |1C 4G | 135 |
6-10 | 138 |2C 8G | 139 |
11-100 | 142 |4C 16G | 143 |
101-250 | 146 |8C 32G | 147 |
251-500 | 150 |16C 64G | 151 |
> 500 | 154 |32C 128G | 155 |
角色 | 10 |CPU核数 | 11 |内存 | 12 |系统盘 | 13 |数量 | 14 |
---|---|---|---|---|
部署机 | 19 |4 | 20 |8G | 21 |100G | 22 |1 | 23 |
Master | 26 |4 | 27 |8G | 28 |100G | 29 |1 | 30 |
Worker | 33 |4 | 34 |8G | 35 |100G | 36 |1 | 37 |
角色 | 47 |CPU核数 | 48 |内存 | 49 |系统盘 | 50 |数量 | 51 |
---|---|---|---|---|
部署机 | 56 |8 | 57 |16G | 58 |100G SSD | 59 |1 | 60 |
Master | 63 |8 | 64 |16G | 65 |100G SSD | 66 |3 | 67 |
Worker | 70 |8 | 71 |16G | 72 |系统盘: 100G 73 | 数据盘: 300G(/var/lib/docker) |
74 | >3 | 75 |
需求项 | 87 |具体要求 | 88 |参考(以CentOS7.6为例) | 89 |
---|---|---|
操作系统 | 94 |支持 Docker 的 Linux OS | 95 |cat /etc/redhat-release | 96 |
CPU 架构 | 99 |支持 x86_64 和 aarch64 | 100 |uname -m | 101 |
kernel 版本 | 104 |>=Linux 3.10.0-957.el7.x86_64 | 105 |uname -sr | 106 |
swap | 109 |关闭 | 110 |swapoff -a 111 | sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab |
112 |
防火墙 | 115 |关闭 | 116 |systemctl stop firewalld && systemctl disable firewalld | 117 |
端口 | 120 |所有节点防火墙必须放通 SSH(默认22)、80、8081-8083端口 | 121 |firewall-cmd --zone=public --add-port=80/tcp --permanent | 122 |
SELinux | 125 |关闭 | 126 |setenforce 0 127 | sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config |
128 |
需求项 | 138 |具体要求 | 139 |参考(以CentOS7.6为例) | 140 |
---|---|---|
操作系统 | 145 |
146 |
147 | CentOS 7.4 - 7.9 148 | RHEL 7.4 - 7.9 149 | Ubuntu 20.04 / 18.04 150 | Kylin v10 151 | openEuler 22.03 152 | EulerOS 2.5(x86_64) 153 | EulerOS 2.8(aarch64) 154 | 155 | |
156 | cat /etc/redhat-release | 157 |
CPU 架构 | 160 |支持 x86_64 和 aarch64 | 161 |uname -m | 162 |
kernel 版本 | 165 |>=Linux 3.10.0-957.el7.x86_64 | 166 |uname -sr | 167 |
swap | 170 |关闭。如果不满足,系统会有一定几率出现 io 飙升,造成 docker 卡死。kubelet 会启动失败(可以设置 kubelet 启动参数 --fail-swap-on 为 false 关闭 swap 检查) | 171 |swapoff -a 172 | sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab |
173 |
防火墙 | 176 |关闭。Kubernetes 官方要求 | 177 |systemctl stop firewalld && systemctl disable firewalld | 178 |
SELinux | 181 |关闭 | 182 |setenforce 0 183 | sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config |
184 |
时区 | 187 |所有服务器时区必须统一,建议设置为 Asia/Shanghai | 188 |timedatectl set-timezone Asia/Shanghai | 189 |
角色 | 9 |数量 | 10 |操作系统 | 11 |最低配置 | 12 |推荐配置 | 13 |
部署机 | 16 |1 | 17 |CentOS 7.6 | 18 |4C 8G | 19 |4C 16G | 20 |
Master | 23 |1 | 24 |CentOS 7.6 | 25 |2C 4G | 26 |4C 8G | 27 |
Worker | 30 |1 | 31 |CentOS 7.6 | 32 |2C 4G | 33 |4C 8G | 34 |
K8S 版本 | 30 |||||||||
---|---|---|---|---|---|---|---|---|
v1.22.6 | 35 |v1.22.8 | 36 |v1.22.10 | 37 |v1.22.12 | 38 |39 | | 40 | | 41 | | 42 | | 43 | |
v1.20.4 | 46 |v1.20.6 | 47 |v1.20.8 | 48 |v1.20.10 | 49 |v1.20.12 | 50 |v1.20.14 | 51 |52 | | 53 | | 54 | |
v1.18.4 | 57 |v1.18.6 | 58 |v1.18.8 | 59 |v1.18.10 | 60 |v1.18.12 | 61 |v1.18.14 | 62 |v1.18.15 | 63 |v1.18.18 | 64 |v1.18.20 | 65 |