手把手教你搭建Kubesphere集群

597 阅读14分钟

快速部署KubeSphere容器平台

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 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.2 关闭swap

swapoff -a
sed -i  '/ swap / s/^/#/' /etc/fstab

2.3 关闭Selinux

setenforce 0
sed -i '/=enforcing/ s/enforcing/disabled/' /etc/selinux/config

2.4 安装所需软件

yum -y install net-tools sshpass unzip lrzsz vim 

2.5 设置服务器hostname

hostnamectl set-hostname ***(对应每个服务器)

3. 安装相关组件

kubeoperator描述:在kubeoperator上面安装ansible工具并通过kubeoperator工具对kubesphere集群的三台初始服务器安装Kubernetes和Kubesphere容器平台。

3.1 登录kubeoperator服务器

ssh 10.10.12.170

3.2 将所需软件拷贝到kubeoperator下的/tmp/tmp目录中

3.3 给shell脚本文件添加执行权限

chmod +x prepare.sh

3.4 根据实际环境情况对应修改prepare.sh内容

 vim /tmp/tmp/prepare.sh

  • installerIp:kubeoperatorIP地址
  • cephPublicNetwork:ceph网段
  • cephPublicNetworkCard:ceph集群物理机网卡名称
  • cephDisk:ceph盘符名称

备注:ceph集群统一使用root登录,密码为Changeme_123

3.5 执行prepare.sh

sh /tmp/tmp/prepare.sh

前期准备完成(整个过程大概1分钟)

3.6 执行deploy-docker.sh,安装docker

cd /tmp/tmp/devops/
sh deploy-docker.sh 

3.7 执行deploy-harbor.sh,安装Harbor镜像仓库

sh deploy-harbor.sh 

整个过程大概持续10分钟左右

当ansible脚本完成后,打开网页浏览器输入:https://10.10.12.170

  • 账号:admin
  • 密码:Harbor12345

Harbor里面包含了所需要的相关kubesphere的安装包

3.8 执行deploy-kubeoperator.sh,安装kubeoperator

sh deploy-kubeoperator.sh 

当ansible脚本完成后,打开网页浏览器输入:http://172.16.12.249:8888

  • 账号:admin
  • 密码:kubeoperator@admin123

3.9 执行deploy-ceph.sh,安装ceph

cd /tmp/tmp/ceph/
sh deploy-ceph.sh

(大概持续18分钟左右)

如果 TASK [ceph-dashboard : create dashboard admin user] 执行报错,请忽略此异常

ceph dashboard 账户密码可以使用以下命令进行创建,创建后可以使用admin/admin登录dashboard查看和管理ceph

echo "admin" > /tmp/file
ceph dashboard ac-user-create admin -i /tmp/file administrator

另外需要注意的是安装结束时**Install Ceph Dashboard : In Progress (0:02:20)**表明当前dashboard还在初始化,需要等待9443端口启动后(使用以下命令检查)再进行下一步操作

netstat -ntpl | grep 9443

4. 配置kubeoperator

4.1 设置系统IP

填写kubeoperatorIP地址

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-managerworkspaces-manager创建和管理所有企业空间。
ws-adminplatform-regular管理指定企业空间中的所有资源(在此示例中,此帐户用于邀请新成员加入该企业空间)。
platform-adminplatform-regular创建和管理项目以及 DevOps 工程,并邀请新成员加入项目。
project-regularplatform-regularproject-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 角色。

实际角色名称的格式:-。例如,在名为 demo-workspace 的企业空间中,角色 viewer 的实际角色名称为 demo-workspace-viewer。

  • 5.将 project-admin 和 project-regular 都添加到企业空间后,点击确定。在企业成员中,您可以看到列出的三名成员。
帐户角色描述
ws-adminworkspace-admin管理指定企业空间中的所有资源(在此示例中,此帐户用于邀请新成员加入该企业空间)。
platform-adminworkspace-self-provisioner创建和管理项目以及 DevOps 工程,并邀请新成员加入项目。
project-regularworkspace-viewerproject-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 身份登录控制台,然后转到访问控制

  • 2.帐户角色中列出了四个系统角色,无法删除或编辑。点击创建并设置角色标识符。在本示例将创建一个名为 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} 访问此应用程序,可以看到下图:

来源:www.jianshu.com/p/e902dc53b…

我的微信公众号:Java架构师进阶编程
专注分享Java技术干货,期待你的关注!