硬件要求

=== “最小化配置”

  1. <table>
  2. <thead>
  3. <tr>
  4. <th>角色</th>
  5. <th>CPU核数</th>
  6. <th>内存</th>
  7. <th>系统盘</th>
  8. <th>数量</th>
  9. </tr>
  10. </thead>
  11. <tbody>
  12. <tr>
  13. <td>部署机</td>
  14. <td>4</td>
  15. <td>8G</td>
  16. <td>100G</td>
  17. <td>1</td>
  18. </tr>
  19. <tr>
  20. <td>Master</td>
  21. <td>4</td>
  22. <td>8G</td>
  23. <td>100G</td>
  24. <td>1</td>
  25. </tr>
  26. <tr>
  27. <td>Worker</td>
  28. <td>4</td>
  29. <td>8G</td>
  30. <td>100G</td>
  31. <td>1</td>
  32. </tr>
  33. <tbody>
  34. </table>

=== “推荐配置”

  1. <table>
  2. <thead>
  3. <tr>
  4. <th>角色</th>
  5. <th>CPU核数</th>
  6. <th>内存</th>
  7. <th>系统盘</th>
  8. <th>数量</th>
  9. </tr>
  10. </thead>
  11. <tbody>
  12. <tr>
  13. <td>部署机</td>
  14. <td>8</td>
  15. <td>16G</td>
  16. <td>100G SSD</td>
  17. <td>1</td>
  18. </tr>
  19. <tr>
  20. <td>Master</td>
  21. <td>8</td>
  22. <td>16G</td>
  23. <td>100G SSD</td>
  24. <td>3</td>
  25. </tr>
  26. <tr>
  27. <td>Worker</td>
  28. <td>8</td>
  29. <td>16G</td>
  30. <td>系统盘: 100G<br>
  31. 数据盘: 300G(/var/lib/docker)</td>
  32. <td>>3</td>
  33. </tr>
  34. </tbody>
  35. </table>

软件要求

=== “kubeoperator 部署机”

  1. <table>
  2. <thead>
  3. <tr>
  4. <th>需求项</th>
  5. <th>具体要求</th>
  6. <th>参考(以CentOS7.6为例)</th>
  7. </tr>
  8. </thead>
  9. <tbody>
  10. <tr>
  11. <td>操作系统</td>
  12. <td>支持 Docker 的 Linux OS</td>
  13. <td>cat /etc/redhat-release</td>
  14. </tr>
  15. <tr>
  16. <td>CPU 架构</td>
  17. <td>支持 x86_64 和 aarch64 </td>
  18. <td>uname -m</td>
  19. </tr>
  20. <tr>
  21. <td>kernel 版本</td>
  22. <td>>=Linux 3.10.0-957.el7.x86_64</td>
  23. <td>uname -sr</td>
  24. </tr>
  25. <tr>
  26. <td>swap</td>
  27. <td>关闭</td>
  28. <td>swapoff -a<br>
  29. sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab</td>
  30. </tr>
  31. <tr>
  32. <td>防火墙</td>
  33. <td>关闭</td>
  34. <td>systemctl stop firewalld && systemctl disable firewalld</td>
  35. </tr>
  36. <tr>
  37. <td>端口</td>
  38. <td>所有节点防火墙必须放通 SSH(默认22)、80、8081-8083端口</td>
  39. <td>firewall-cmd --zone=public --add-port=80/tcp --permanent</td>
  40. </tr>
  41. <tr>
  42. <td>SELinux</td>
  43. <td>关闭</td>
  44. <td>setenforce 0<br>
  45. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config</td>
  46. </tr>
  47. </tbody>
  48. </table>

=== “kubernetes 集群节点”

  1. <table>
  2. <thead>
  3. <tr>
  4. <th>需求项</th>
  5. <th>具体要求</th>
  6. <th>参考(以CentOS7.6为例)</th>
  7. </tr>
  8. </thead>
  9. <tbody>
  10. <tr>
  11. <td>操作系统</td>
  12. <td><b>CentOS/RHEL 7.4 - 7.9 Minimal<br>
  13. Ubuntu 20.04 / 18.04<br>
  14. EulerOS 2.5(x86_64)<br>
  15. EulerOS 2.8(arm64)<br>
  16. 银河麒麟操作系统v10</b></td>
  17. <td>cat /etc/redhat-release</td>
  18. </tr>
  19. <tr>
  20. <td>CPU 架构</td>
  21. <td>支持 x86_64 和 aarch64 </td>
  22. <td>uname -m</td>
  23. </tr>
  24. <tr>
  25. <td>kernel 版本</td>
  26. <td>>=Linux 3.10.0-957.el7.x86_64</td>
  27. <td>uname -sr</td>
  28. </tr>
  29. <tr>
  30. <td>swap</td>
  31. <td>关闭。如果不满足,系统会有一定几率出现 io 飙升,造成 docker 卡死。kubelet 会启动失败(可以设置 kubelet 启动参数 --fail-swap-on 为 false 关闭 swap 检查)</td>
  32. <td>swapoff -a<br>
  33. sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab</td>
  34. </tr>
  35. <tr>
  36. <td>防火墙</td>
  37. <td>关闭。Kubernetes 官方要求</td>
  38. <td>systemctl stop firewalld && systemctl disable firewalld</td>
  39. </tr>
  40. <tr>
  41. <td>SELinux</td>
  42. <td>关闭</td>
  43. <td>setenforce 0<br>
  44. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config</td>
  45. </tr>
  46. <tr>
  47. <td>时区</td>
  48. <td>所有服务器时区必须统一,建议设置为 Asia/Shanghai</td>
  49. <td>timedatectl set-timezone Asia/Shanghai</td>
  50. </tr>
  51. </tbody>
  52. </table>

安装说明

=== “离线安装”

  1. !!! info "请自行下载 KubeOperator [最新版本的离线安装包](https://community.fit2cloud.com/#/products/kubeoperator/downloads)"
  2. !!! info ""
  3. ```sh
  4. # 解压安装包
  5. tar zxvf KubeOperator-release-{{ kubeoperator.version }}-amd64.tar.gz
  6. # arm64 的包名是 KubeOperator-release-{{ kubeoperator.version }}-arm64.tar.gz
  7. cd KubeOperator-release-{{ kubeoperator.version }}
  8. # 运行安装脚本
  9. /bin/bash install.sh
  10. # 等待安装脚本执行完成后,查看 KubeOperator 状态
  11. koctl status
  12. ```

=== “在线安装”

  1. !!! info "默认使用 /opt/kubeoperator 目录作为安装目录,配置文件、数据及日志等均存放在该安装目录安装完成后,安装过程中产生的离线文件可删除,目录名: kubeoperator-release-{{ kubeoperator.version }}"
  2. !!! info ""
  3. ```sh
  4. # 以 root 用户 ssh 登录目标服务器, 执行如下命令
  5. curl -sSL https://github.com/KubeOperator/KubeOperator/releases/latest/download/quick_start.sh -o quick_start.sh
  6. bash quick_start.sh
  7. ```

!!! info “安装完成后,检查服务状态。若有有异常,可以使用 koctl restart 命令进行重新启动”

!!! info “”

  1. ```
  2. [root@kubeoperator ~]# koctl status
  3. Name Command State Ports
  4. ------------------------------------------------------------------------------------------------------------------------------------------------
  5. kubeoperator_kobe sh /root/entrypoint.sh Up (healthy) 8080/tcp
  6. kubeoperator_kotf kotf-server Up (healthy) 8080/tcp
  7. kubeoperator_kubepi kubepi-server Up (healthy) 80/tcp
  8. kubeoperator_mysql /entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
  9. kubeoperator_nexus sh -c ${SONATYPE_DIR}/star ... Up (healthy) 0.0.0.0:8081->8081/tcp, 0.0.0.0:8082->8082/tcp, 0.0.0.0:8083->8083/tcp
  10. kubeoperator_nginx /docker-entrypoint.sh ngin ... Up (healthy) 0.0.0.0:80->80/tcp
  11. kubeoperator_server ko-server Up (healthy) 8080/tcp
  12. kubeoperator_ui /docker-entrypoint.sh ngin ... Up (healthy) 80/tcp
  13. kubeoperator_webkubectl sh /opt/webkubectl/start-w ... Up (healthy)
  14. ```

!!! info “登录”

  1. ```
  2. 地址: http://<ko服务器_ip>:80
  3. 用户名: admin
  4. 密码: kubeoperator@admin123
  5. ```

!!! info “帮助”

  1. ```sh
  2. koctl --help
  3. ```

升级说明

=== “离线升级”

  1. !!! info ""
  2. ```sh
  3. # 离线升级需要提前下载离线安装包,并解压到 KubeOperator 部署机
  4. # 进入升级包目录
  5. cd KubeOperator-release-{{ kubeoperator.version }}
  6. # 运行安装脚本
  7. ./koctl upgrade
  8. # 查看 KubeOperator 状态
  9. koctl status
  10. ```

=== “在线升级”

  1. !!! info ""
  2. ```sh
  3. # 升级到指定版本
  4. koctl upgrade {{ kubeoperator.version }}
  5. # 升级到最新版本
  6. koctl upgrade
  7. # 查看 KubeOperator 状态
  8. koctl status
  9. ```

混合架构说明

!!! info “定义:混合架构是指使用 KubeOperator 部署同时包含 x86_64 和 arm64 架构节点的 Kubernetes 集群”

!!! info “”
如下图所示,混合部署需要提供 x86_64 和 arm64 架构的 nexus 仓库,以便于集群部署时可以下载到对应架构的资源,之后在 KubeOperator 系统设置添加不同架构的仓库信息即可。

  1. 例如:</br>
  2. &#x2003 1.可以分别部署两台不同架构的 KubeOperator(一台 arm64,一台 x86_64)</br>&#x2003 2.使用 x86_64 架构的主机作为日常操作的主机</br>&#x2003 3. arm64 的主机作为 arm 仓库使用并添加到 x86_64 KubeOperator 系统设置中

KubeOperator-mixed-arch