1.环境描述
- master :10.10.12.171
- worker1:10.10.12.172
- worker2:10.10.12.173
- Kubeoperator:10.10.12.170(安装ansible并通过Kubeoperator对kubesphere集群部署kubesphere软件,要求根目录至少需要200G用于储存所需的安装包)
所有服务器均采用centos7.6版本,最小安装模式,每个服务器均有一个空余磁盘用于部署ceph
这里使用的是/dev/sdb磁盘,用于安装ceph集群
2. 环境准备(所有节点)
2.1 关闭防火墙
代码语言:txt复制systemctl stop firewalld
代码语言:txt复制systemctl disable firewalld
2.2 关闭swap
代码语言:txt复制swapoff -a
代码语言:txt复制sed -i '/ swap / s/^/#/' /etc/fstab
2.3 关闭Selinux
代码语言:txt复制setenforce 0
代码语言:txt复制sed -i '/=enforcing/ s/enforcing/disabled/' /etc/selinux/config
2.4 安装所需软件
代码语言:txt复制yum -y install net-tools sshpass unzip lrzsz vim
2.5 设置服务器hostname
代码语言:txt复制hostnamectl set-hostname ***(对应每个服务器)
3. 安装相关组件
kubeoperator描述:在kubeoperator上面安装ansible工具并通过kubeoperator工具对kubesphere集群的三台初始服务器安装Kubernetes和Kubesphere容器平台。
3.1 登录kubeoperator服务器
代码语言:txt复制ssh 10.10.12.170
3.2 将所需软件拷贝到kubeoperator下的/tmp/tmp目录中
3.3 给shell脚本文件添加执行权限
代码语言:txt复制chmod x prepare.sh
3.4 根据实际环境情况对应修改prepare.sh内容
代码语言:txt复制 vim /tmp/tmp/prepare.sh
- installerIp :kubeoperatorIP地址
- cephPublicNetwork :ceph网段
- cephPublicNetworkCard :ceph集群物理机网卡名称
- cephDisk :ceph盘符名称
备注:ceph集群统一使用root登录,密码为Changeme_123
3.5 执行prepare.sh
代码语言:txt复制sh /tmp/tmp/prepare.sh
前期准备完成(整个过程大概1分钟)
3.6 执行deploy-docker.sh,安装docker
代码语言:txt复制cd /tmp/tmp/devops/
代码语言:txt复制sh deploy-docker.sh
3.7 执行deploy-harbor.sh,安装Harbor镜像仓库
代码语言:txt复制sh deploy-harbor.sh
整个过程大概持续10分钟左右
当ansible脚本完成后,打开网页浏览器输入: https://10.10.12.170
- 账号:admin
- 密码:Harbor12345
Harbor里面包含了所需要的相关kubesphere的安装包
3.8 执行deploy-kubeoperator.sh,安装kubeoperator
代码语言:txt复制sh deploy-kubeoperator.sh
当ansible脚本完成后,打开网页浏览器输入: http://172.16.12.249:8888
- 账号:admin
- 密码:kubeoperator@admin123
3.9 执行deploy-ceph.sh,安装ceph
代码语言:txt复制cd /tmp/tmp/ceph/
代码语言:txt复制sh deploy-ceph.sh
(大概持续18分钟左右)
如果 TASK ceph-dashboard : create dashboard admin user 执行报错, 请忽略此异常
ceph dashboard 账户密码可以使用以下命令进行创建,创建后可以使用admin/admin登录dashboard查看和管理ceph
代码语言:txt复制echo "admin" > /tmp/file
代码语言:txt复制ceph dashboard ac-user-create admin -i /tmp/file administrator
另外需要注意的是安装结束时 Install Ceph Dashboard : In Progress (0:02:20)
表明当前dashboard还在初始化,需要等待9443端口启动后(使用以下命令检查)再进行下一步操作
代码语言:txt复制netstat -ntpl | grep 9443
4. 配置kubeoperator
4.1 设置系统IP
填写kubeoperator IP地址
4.2 创建主机登录凭据
创建 主机登录所需的登录凭据
4.3 创建主机
- 名称:填写主机名称
- ip:填写主机物理IP
- 端口: 填写SSH端口
- 凭据: 选择root的密码凭据
填写三台主机以后等待初始化,初始化完成后显示 正常 状态
4.3 创建kubesphere集群
4.3.1 创建资源
点击项目-单击kubeoperator管理员
添加资源主机
4.3.2 创建集群
集群-- >添加
4.3.3 集群信息
4.3.4 高级选项
图片参数仅供参考,可以根据实际情况部署
4.3.5 节点信息
4.3.6 确认信息
等待集群安装,大概持续50分钟左右
如果有报错可以点击重试再试一次
4.3.7 查看日志
可以在这里面查到安装进度日志
4.4 登录kubesphere
http://10.10.12.171:30880
- 账号:admin
- 密码:P@88w0rd
5.KubeSphere配置
5.1 创建企业空间、项目、帐户和角色
本快速入门演示如何创建企业空间、角色和用户帐户。
5.1.1 创建账户
安装 KubeSphere 之后,您需要向平台添加具有不同角色的用户,以便他们可以针对自己授权的资源在不同的层级进行工作。一开始,系统默认只有一个帐户
admin,具有 platform-admin 角色。在本步骤中,您将创建一个帐户 user-manager,然后使用 user-manager
创建新帐户。
1.使用默认帐户和密码 (admin/P@88w0rd) 以 admin 身份登录 Web 控制台。
- 出于安全考虑,强烈建议您在首次登录控制台时更改密码。若要更改密码,在右上角的下拉菜单中选择个人设置,在密码设置中设置新密码,您也可以在个人设置中修改控制台语言。
2.登录控制台后,点击左上角的平台管理,然后选择访问控制。
在帐户角色中,有如下所示四个可用的内置角色。接下来要创建的第一个帐户将被分配 users-manager 角色。
内置角色 | 描述 |
---|---|
workspaces-manager | 企业空间管理员,管理平台所有企业空间。 |
users-manager | 用户管理员,管理平台所有用户。 |
platform-regular | 平台普通用户,在被邀请加入企业空间或集群之前没有任何资源操作权限 |
platform-admin | 平台管理员,可以管理平台内的所有资源。 |
内置角色由 KubeSphere 自动创建,无法编辑或删除。
3.在帐户管理中,点击创建。在弹出窗口中,提供所有必要信息(带有*标记),然后在角色字段选择 users-manager。请参考下图示例。
完成后,点击 确定 。新创建的帐户将显示在 帐户管理 中的帐户列表中。
4.切换帐户使用 user-manager 重新登录,创建如下四个新帐户,这些帐户将在其他的教程中使用。
帐户登出请点击右上角的用户名,然后选择 登出 。
帐户 | 角色 | 描述 |
---|---|---|
ws-manager | workspaces-manager | 创建和管理所有企业空间。 |
ws-admin | platform-regular | 管理指定企业空间中的所有资源(在此示例中,此帐户用于邀请新成员加入该企业空间)。 |
platform-admin | platform-regular | 创建和管理项目以及 DevOps 工程,并邀请新成员加入项目。 |
project-regular | platform-regular | project-regular 将由 project-admin 邀请至项目或 |
DevOps 工程。该帐户将用于在指定项目中创建工作负载、流水线和其他资源。
5.查看创建的四个帐户。
5.1.2 创建企业空间
您需要使用上一个步骤中创建的帐户 ws-manager 创建一个企业空间。作为管理项目、DevOps 工程和组织成员的基本逻辑单元,企业空间是
KubeSphere 多租户系统的基础。
- 1.以 ws-manager 身份登录 KubeSphere,它具有管理平台上所有企业空间的权限。点击左上角的平台管理,选择访问控制。在企业空间中,可以看到仅列出了一个默认企业空间 system-workspace,即系统企业空间,其中运行着与系统相关的组件和服务,您无法删除该企业空间。
- 2.点击右侧的 创建 ,将新企业空间命名为 demo-workspace,并将用户 ws-admin 设置为企业空间管理员,如下图所示:
完成后,点击 创建 。
如果您已启用 多集群功能 ,您需要为企业空间 分配一个或多个可用集群 ,以便项目可以在集群中创建。
- 3.登出控制台,然后以 ws-admin 身份重新登录。在 企业空间设置 中,选择 企业成员 ,然后点击 邀请成员 。
- 4.邀请 project-admin 和 project-regular 进入企业空间,分别授予他们 workspace-self-provisioner 和 workspace-viewer 角色。
实际角色名称的格式:<workspace name>-<role name>。例如,在名为 demo-workspace 的企业空间中,角色 viewer 的实际角色名称为 demo-workspace-viewer。
- 5.将 project-admin 和 project-regular 都添加到企业空间后,点击确定。在企业成员中,您可以看到列出的三名成员。
帐户 | 角色 | 描述 |
---|---|---|
ws-admin | workspace-admin | 管理指定企业空间中的所有资源(在此示例中,此帐户用于邀请新成员加入该企业空间)。 |
platform-admin | workspace-self-provisioner | 创建和管理项目以及 DevOps 工程,并邀请新成员加入项目。 |
project-regular | workspace-viewer | project-regular 将由 project-admin 邀请至项目或 |
DevOps 工程。该帐户将用于在指定项目中创建工作负载、流水线和其他资源。
5.1.3 创建项目
在此步骤中,您需要使用在上一步骤中创建的帐户 project-admin 来创建项目。KubeSphere 中的项目与 Kubernetes
中的命名空间相同,为资源提供了虚拟隔离。有关更多信息,请参见 命名空间 。
- 1.以 project-admin 身份登录 KubeSphere,在 项目管理 中,点击 创建 。
- 2.输入项目名称(例如 demo-project),然后点击 确定 完成,您还可以为项目添加别名和描述。
- 3.在 项目管理 中,点击刚创建的项目查看其详细信息。
- 4.在项目的 概览 页面,默认情况下未设置项目配额。您可以点击 设置 并根据需要指定资源请求和限制(例如:CPU 和内存的限制分别设为 1 Core 和 1000 Gi)。
- 5.邀请 project-regular 至该项目,并授予该用户 operator 角色。请参考下图以了解具体步骤。
具有 operator 角色的用户是项目维护者,可以管理项目中除用户和角色以外的资源。
- 6.在创建 路由 (即 Kubernetes 中的 Ingress)之前,需要启用该项目的网关。网关是在项目中运行的 NGINX Ingress 控制器。若要设置网关,请转到 项目设置 中的 高级设置 ,然后点击 设置网关 。此步骤中仍使用帐户 project-admin。
- 7.选择访问方式 NodePort ,然后点击 保存 。
- 8.在 外网访问 下,可以在页面上看到网关地址以及 http/https 的端口。
5.1.4 创建角色
完成上述步骤后,您已了解可以为不同级别的用户授予不同角色。先前步骤中使用的角色都是 KubeSphere
提供的内置角色。在此步骤中,您将学习如何创建自定义角色以满足工作需求。
- 1.再次以 admin 身份登录控制台,然后转到 访问控制 。
- 帐户角色 中列出了四个系统角色,无法删除或编辑。点击 创建 并设置 角色标识符 。在本示例将创建一个名为 roles-manager 的角色。
点击 编辑权限 继续。
- 3.在 访问控制 中,选择该角色所拥有的权限。例如,本示例选择 帐户查看 、 角色管理 和 角色查看 。点击 确定 完成创建。
- 4.新创建的角色将列于 帐户角色 中,可以点击右侧的三个点对其进行编辑。
- 5.在 帐户管理 中,添加一个新帐户并授予其 roles-manager 角色,您也可以通过编辑将现有帐户的角色更改为 roles-manager。
5.2 创建并部署WordPress
WordPress 简介
WordPress(使用 PHP 语言编写)是免费、开源的内容管理系统,用户可以使用 WordPress 搭建自己的网站。完整的 WordPress
应用程序包括以下 Kubernetes 对象,由 MySQL 作为后端数据库。
准备工作
您需要准备一个 project regular 帐户,并在一个项目中赋予该帐户 operator
角色(该用户已被邀请参加该项目)。有关更多信息,请参见5.1创建企业空间、项目、帐户和角色。
5.2.1 创建密钥
创建 MySQL 密钥
环境变量 WORDPRESS_DB_PASSWORD 是连接到 WordPress 数据库的密码。在此步骤中,您需要创建一个密钥来保存将在 MySQL
Pod 模板中使用的环境变量。
- 1.使用 project-regular 帐户登录 KubeSphere 控制台,访问 demo-project 的详情页并导航到 配置中心 。在 密钥 中,点击右侧的 创建 。
- 2.输入基本信息(例如,将其命名为 mysql-secret)并点击 下一步 。在下一页中,选择 类型 为 默认 ,然后点击添加数据来添加键值对。输入如下所示的键 (Key) MYSQL_ROOT_PASSWORD 和值 (Value) 123456,点击右下角 √ 进行确认。完成后,点击 创建 按钮以继续。
创建 WordPress 密钥
按照以上相同的步骤创建一个名为 wordpress-secret 的 WordPress 密钥,输入键 (Key)
WORDPRESS_DB_PASSWORD 和值 (Value) 123456。创建的密钥显示在列表中,如下所示:
5.2.2 创建存储卷
- 1.访问存储管理下的存储卷,点击创建。
- 2.输入卷的基本信息(例如,将其命名为 wordpress-pvc),然后点击 下一步 。
- 3.在 存储卷设置 中,需要选择一个可用的 存储类型 ,并设置 访问模式 和 存储卷容量 。您可以直接使用如下所示的默认值,点击 下一步 继续。
- 4.对于 高级设置 ,您无需为当前步骤添加额外的配置,点击 创建 完成即可。
5.2.3 创建应用程序
添加 MySQL 后端组件
- 1.导航到 应用负载 下的 应用 ,选择 自制应用 ,再点击 构建自制应用 。
- 2.输入基本信息(例如,在应用名称一栏输入 wordpress),然后点击 下一步 。
- 3.在 服务组件 中,点击 添加服务 以在应用中设置组件。
- 4.设置组件的服务类型为 有状态服务 。
- 5.输入有状态服务的名称(例如 mysql)并点击 下一步 。
- 6.在 容器镜像 中,点击 添加容器镜像 。
- 7.在搜索框中输入 mysql:5.6,按下 回车键 ,然后点击 使用默认端口 。由于配置还未设置完成,请不要点击右下角的 √ 按钮。
在高级设置中,请确保内存限制不小于 1000 Mi,否则 MySQL 可能因内存不足而无法启动。
- 8.下滚动到 环境变量 ,点击 引用配置文件 或 密匙 。输入名称 MYSQL_ROOT_PASSWORD,然后选择资源 mysql-secret 和前面步骤中创建的密钥 MYSQL_ROOT_PASSWORD,完成后点击 √ 保存配置,最后点击下一步继续。
- 9.选择 挂载存储 中的 添加存储卷模板 ,输入 存储卷名称 (mysql) 和 挂载路径 (模式:读写,路径:/var/lib/mysql)的值,如下所示:
完成后,点击 √ 保存设置并点击 下一步 继续。
- 10.在 高级设置 中,可以直接点击 添加 ,也可以按需选择其他选项。
- 11.现在,MySQL 组件已经添加完成,如下所示:
添加 WordPress 前端组件
- 12.再次点击 添加服务 ,这一次选择 无状态服务 。输入名称 wordpress 并点击 下一步 。
- 13.与上述步骤类似,点击 添加容器镜像 ,在搜索栏中输入 wordpress:4.8-apache 并按下 回车键 ,然后点击 使用默认端口 。
- 14.向下滚动到 环境变量 ,点击 引用配置文件或密匙 。这里需要添加两个环境变量,请根据以下截图输入值:
- 对于 WORDPRESS_DB_PASSWORD,请选择在步骤 1 中创建的 wordpress-secret 和 WORDPRESS_DB_PASSWORD。
- 点击 添加环境变量 ,分别输入 WORDPRESS_DB_HOST 和 mysql 作为键 (Key) 和值 (Value)。
点击 √ 保存配置,再点击下一步继续。
- 15.在 挂载存储 中,点击 添加存储卷 ,并选择 已有存储卷 。
- 16.选择上一步创建的 wordpress-pvc,将模式设置为读写,并输入挂载路径 /var/www/html。点击 √ 保存,再点击 下一步 继续。
- 17.在 高级设置 中,可以直接点击 添加 创建服务,也可以按需选择其他选项。
- 18.现在,前端组件也已设置完成。点击 下一步 继续。
- 19.您可以在这里设置路由规则(应用路由 Ingress),也可以直接点击 创建 。
- 20.创建后,应用将显示在下面的列表中。
5.2.4 验证资源
在 工作负载中 ,分别检查 部署 和 有状态副本集中 wordpress-v1 和 mysql-v1
的状态。如果它们的运行状态如下图所示,就意味着 WordPress 已经成功创建。
5.2.5 通过NodePort 访问WordPress
- 1.若要在集群外访问服务,请首先导航到 服务 。点击 wordpress 右侧的三个点后,选择 编辑外网访问 。
- 2.在 访问方式 中选择 NodePort,然后点击 确定 。
- 3.点击服务进入详情页,可以看到暴露的端口。
- 4.通过 {Node IP}:{NodePort} 访问此应用程序,可以看到下图: