目录

  • 一、简介
  • 二、安装
    • 1. 前提条件
    • 2. 安装前提环境
      • ① 安装 helm (master 节点执行)
      • ② 安装 Tiller (master 执行)
      • ③ 安装 OpenEBS (master 执行)
  • 三、最小化安装 kubesphere
  • 四、定制化安装
  • 五、建立多租户系统
    • 1. 集群管理员
    • 2. 企业空间管理员
  • 六、创建 Wordpress 应用并发布至 Kubernetes
    • 1. WordPress 简介
    • 2. 创建密钥
      • ① 创建 MySQL 密钥
      • ② 创建 WordPress 密钥
      • ③ 创建存储卷
    • 3. 创建应用
      • ① 添加 MySQL 组件
      • ② 添加 WordPress 组件
    • 4. 查看应用资源
    • 5. 访问 Wordpress

默认的 dashboard 没啥用,我们用 kubesphere 可以打通全部的 devops 链路。Kubesphere 集成了很多套件,集群要求较高https://kubesphere.io/。Kuboard 也很不错,集群要求不高 https://kuboard.cn/support/


一、简介

KubeSphere 是一款面向云原生设计的开源项目,在目前主流容器调度平台 Kubernetes 之上构建的分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度。

二、安装

1. 前提条件

https://v3-0.docs.kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequisites/

2. 安装前提环境

① 安装 helm (master 节点执行)

Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos 中使用的 yum 或者 Python 中的 pip 一样,能快速查找、下载和安装软件包。Helm由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组 K8S 资源打包统一管理, 是查找、共享和使用为 Kubernetes 构建的软件的最佳方式。

A、安装如下。。

curl -L https://git.io/get_helm.sh | bash

墙原因,上传我们给定的 get_helm.sh,chmod 700 后./get_helm.sh可能有文件格式兼容性问题,用 vi 打开该 sh 文件,输入::set ff 回车,显示 fileformat=dos,重新设置下文件格式::set ff=unix。保存退出::wq

B、验证版本

helm version

C、创建权限 (master 执行)

创建 helm-rbac.yaml,写入如下内容

apiVersion: v1
kind: ServiceAccount
metadata:name: tillernamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: tiller
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:- kind: ServiceAccountname: tillernamespace: kube-system

应用配置

kubectl apply -f helm-rbac.yaml

② 安装 Tiller (master 执行)

A、初始化

helm init --service-account=tiller --tiller-image=jessestuart/tiller:v2.16.3 --history-max 300 helm init --service-account tiller --upgrade

--tiller-image 指定镜像,否则会被墙。大家使用这个镜像比较好 jessestuart/tiller:v2.16.3,等待节点上部署的 tiller 完成即可

B、测试

helm install stable/nginx-ingress --name nginx-ingress
helm ls
helm delete nginx-ingress

C、使用语法

#创建一个 chart 范例
helm create helm-chart
#检查 chart 语法
helm lint ./helm-chart
#使用默认 chart 部署到 k8s
helm install --name example1 ./helm-chart --set service.type=NodePort
#kubectl get pod 查看是否部署成功

③ 安装 OpenEBS (master 执行)

https://kubesphere.io/docs/v2.1/zh-CN/appendix/install-openebs/

# 确定 master 节点是否有taint
kubectl describe node node101 | grep Taint#取消taint
kubectl taint nodes k8s-node1 node-role.kubernetes.io/master:NoSchedule- #创建 OpenEBS 的 namespace,OpenEBS 相关资源将创建在这个 namespace 下:
kubectl create ns openebs#安装 openebs
kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml #A. 若集群已安装了 Helm,可通过 Helm 命令来安装 OpenEBS:
helm inithelm install --namespace openebs --name openebs stable/openebs --version 1.5.0
#B. 除此之外 还可以通过 kubectl 命令安装:kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml#查看效果
kubectl get sc -n openebs#将 openebs-hostpath 设置为 默认的 StorageClass:
kubectl patch storageclass openebs-hostpath -p \
'{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' #至此, OpenEBS 的 LocalPV 已作为默认的存储类型创建成功. 由于在文档开头手动去掉了 master 节点的 Taint, 我们可以在安装完 OpenEBS 后将 master 节点Taint 加上, 避免业务相关的工作负载调度到 master 节点抢占 master 资源
kubectl taint nodes node101 node-role.kubernetes.io=master:NoSchedule

三、最小化安装 kubesphere

若您的集群可用的资源符合 CPU > 1 Core,可用内存 > 2 G,可以参考以下命令开启 KubeSphere 最小化安装:

kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v2.1.1/kubesphere-minimal.yaml

查看安装日志:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f


四、定制化安装

最小化安装后如何开启安装 DevOps 系统?

$ kubectl edit cm -n kubesphere-system ks-installer


安装并保存会自动进行安装,我们可以通过查看日志来看进度。。

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

五、建立多租户系统

平台的资源一共有三个层级,包括 集群 (Cluster)、 企业空间 (Workspace)、 项目 (Project) 和 DevOps Project (DevOps 工程),层级关系如下图所示,即一个集群中可以创建多个企业空间,而每个企业空间,可以创建多个项目和 DevOps工程,而集群、企业空间、项目和 DevOps工程中,默认有多个不同的内置角色。

1. 集群管理员

第一步:创建角色和账号

平台中的 cluster-admin 角色可以为其他用户创建账号并分配平台角色,平台内置了集群层级的以下三个常用的角色,同时支持自定义新的角色。

内置角色 描述
cluster-admin 集群管理员,可以管理集群中所有的资源。
workspaces-manager 集群中企业空间管理员,仅可创建、删除企业空间,维护企业空间中的成员列表。
cluster-regular 集群中的普通用户,在被邀请加入企业空间之前没有任何资源操作权限。

本示例首先新建一个角色 (users-manager),为该角色授予账号管理和角色管理的权限,然后新建一个账号并给这个账号授予 users-manager 角色。

账号名 集群角色 职责
user-manager users-manager 管理集群的账户和角色

通过下图您可以更清楚地了解本示例的逻辑:


A、 点击控制台左上角 平台管理 → 平台角色,可以看到当前的角色列表,点击 创建,创建一个角色用于管理所有账户和角色。

B、填写角色的基本信息和权限设置。

  • 名称:起一个简洁明了的名称,便于用户浏览和搜索,如 users-manager
  • 描述信息:简单介绍该角色的职责,如 管理账户和角色

C、权限设置中,勾选账户管理和角色管理的所有权限,点击 创建,自定义的用户管理员的角色创建成功。

D、点击控制台左上角 平台管理 → 账户管理,可以看到当前集群中所有用户的列表,点击 创建 按钮。

E、填写新用户的基本信息,如用户名设置为 user-manager,角色选择 users-manager,其它信息可自定义,点击确定。

F、然后用 user-manager 账户登录来创建下表中的四个账号,ws-manager将用于创建一个企业空间,并指定其中一个用户名为 ws-admin作为企业空间管理员。切换 user-manager账号登录后在 账号管理 下,新建四个账号,创建步骤同上,参考如下信息创建。

用户名 集群角色 职责
ws-manager workspaces-manager 创建和管理企业空间
ws-admin cluster-regular 管理企业空间下所有的资源(本示例用于邀请新成员加入企业空间)
project-admin cluster-regular 创建和管理项目、DevOps 工程,邀请新成员加入
project-regular cluster-regular 将被 project-admin 邀请加入项目和 DevOps 工程,

用于创建项目和工程下的工作负载、Pipeline 等资源

查看新建的四个账号信息。

2. 企业空间管理员

第二步:创建企业空间

企业空间 (workspace) 是 KubeSphere 实现多租户模式的基础,是用户管理项目、DevOps 工程和企业成员的基本单位。

A、切换为 ws-manager 登录 KubeSphere,ws-manager 有权限查看和管理平台的所有企业空间

点击左上角的 平台管理→ 企业空间,可见新安装的环境只有一个系统默认的企业空间 system-workspace,用于运行 KubeSphere 平台相关组件和服务,禁止删除该企业空间。

在企业空间列表点击 创建。


B、参考如下提示填写企业空间的基本信息,然后点击 确定。

企业空间的创建者同时默认为该企业空间的管理员 (workspace-admin),拥有企业空间的最高管理权限。

  • 企业空间名称:请尽量保持企业名称简短,便于用户浏览和搜索,本示例是 demo-workspace

  • 企业空间管理员:可从当前的集群成员中指定,这里指定上一步创建的 ws-admin用户为管理员,相当于同时邀请了 ws-admin用户进入该企业空间

  • 描述信息:简单介绍该企业空间


C、企业空间 demo-workspace创建完成后,切换为 ws-admin登录 KubeSphere,点击左侧「进入企业空间」进入企业空间详情页。


ws-admin可以从集群成员中邀请新成员加入当前企业空间,然后创建项目和 DevOps 工程。在左侧菜单栏选择 企业空间管理→ 成员管理,点击 邀请成员。

D、这一步需要邀请在 步骤 1.6. 创建的两个用户 project-admin和 project-regular进入企业空间

且分别授予 workspace-regular和 workspace-viewer的角色,此时该企业空间一共有如下三个用户:

账号名 企业空间角色 职责
ws-admin workspace-admin 管理企业空间下所有的资源
project-admin workspace-regular 创建和管理项目、DevOps 工程,邀请新成员加入
project-regular workspace-viewer 将被 project-admin 邀请加入项目和 DevOps 工程,用于创建工作负载、流水线等业务资源

六、创建 Wordpress 应用并发布至 Kubernetes

1. WordPress 简介

WordPress 是使用 PHP 开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的环境中架设属于自己的网站。本文以创建一个 Wordpress 应用为例,以创建 KubeSphere 应用的形式将 Wordpress 的组件(MySQL 和 Wordpress)创建后发布至 Kubernetes 中,并在集群外访问 Wordpress 服务。

一个完整的 Wordpress 应用会包括以下 Kubernetes 对象,其中 MySQL 作为后端数据库,Wordpress 本身作为前端提供浏览器访问。

2. 创建密钥

MySQL 的环境变量 MYSQL_ROOT_PASSWORD即 root 用户的密码属于敏感信息,不适合以明文的方式表现在步骤中,因此以创建密钥的方式来代替该环境变量。创建的密钥将在创建 MySQL 的容器组设置时作为环境变量写入。

① 创建 MySQL 密钥

以项目普通用户 project-regular 登录 KubeSphere,在当前项目下左侧菜单栏的 配置中心 选择 密钥,点击创建


填写密钥的基本信息,完成后点击 下一步。

  • 名称:作为 MySQL 容器中环境变量的名称,可自定义,例如 mysql-secret
  • 别名:别名可以由任意字符组成,帮助您更好的区分资源,例如 MySQL 密钥
  • 描述信息:简单介绍该密钥,如 MySQL 初始密码
  • 密钥设置页,填写如下信息,完成后点击 创建。
  • 类型:选择 默认(Opaque)
  • Data:Data 键值对填写 MYSQL_ROOT_PASSWORD和 123456

② 创建 WordPress 密钥

同上,创建一个 WordPress 密钥,Data 键值对填写 WORDPRESS_DB_PASSWORD和 123456。此时两个密钥都创建完成。

③ 创建存储卷

在当前项目下左侧菜单栏的 存储卷,点击 创建,基本信息如下。

  • 名称:wordpress-pvc
  • 别名:Wordpress 持久化存储卷
  • 描述信息:Wordpress PVC

完成后点击 下一步,存储类型默认 local,访问模式和存储卷容量也可以使用默认值,点击 下一步,直接创建即可。

3. 创建应用

① 添加 MySQL 组件

在左侧菜单栏选择 应用负载 → 应用,然后点击 部署新应用。

基本信息中,参考如下填写,完成后在右侧点击 添加组件。

  • 应用名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,例如填写 wordpress
  • 描述信息:简单介绍该工作负载,方便用户进一步了解

MySQL 组件信息

参考如下提示完成 MySQL 组件信息:

  • 名称: mysql
  • 组件版本:v1
  • 别名:MySQL 数据库
  • 负载类型:选择 有状态服务


点击 添加容器镜像,镜像填写 mysql:5.6(应指定镜像版本号),然后按回车键或点击 DockerHub,点击 使用默认端口

下滑至环境变量,在此勾选 环境变量,然后选择 引用配置文件或密钥,名称填写为 MYSQL_ROOT_PASSWORD,下拉框中选择密钥为 mysql-secret 和 MYSQL_ROOT_PASSWORD。

完成后点击右下角 √。

点击添加存储卷模板,为 MySQL 创建一个 PVC 实现数据持久化。

考下图填写存储卷信息。

  • 存储卷名称:必填,起一个简洁明了的名称,便于用户浏览和搜索,此处填写 mysql-pvc
  • 存储类型:选择集群已有的存储类型,如 Local
  • 容量和访问模式:容量默认 10 Gi,访问模式默认 ReadWriteOnce (单个节点读写)
  • 挂载路径:存储卷在容器内的挂载路径,选择 读写,路径填写 /var/lib/mysql

完成后点击 √。

② 添加 WordPress 组件

参考如下提示完成 WordPress 组件信息:

  • 名称: wordpress
  • 组件版本:v1
  • 别名:Wordpress前端
  • 负载类型:默认 无状态服务

点击 添加容器镜像,镜像填写 wordpress:4.8-apache(应指定镜像版本号),然后按回车键或点击 DockerHub,点击 使用默认端口。


下滑至环境变量,在此勾选 环境变量,这里需要添加两个环境变量:

  • 点击 引用配置文件或密钥,名称填写 WORDPRESS_DB_PASSWORD,选择在第一步创建的配置 (Secret) wordpress-secret和 WORDPRESS_DB_PASSWORD。
  • 点击 添加环境变量,名称填写 WORDPRESS_DB_HOST,值填写 mysql,对应的是上一步创建 MySQL 服务的名称,否则无法连接 MySQL 数据库。

完成后点击 √。


点击 添加存储卷,选择已有存储卷 wordpress-pvc,访问模式改为 读写,容器挂载路径 /var/www/html。完成后点击 √。


检查 WordPress 组件信息无误后,再次点击 √,此时 MySQL 和 WordPress 组件信息都已添加完成,点击 创建。

4. 查看应用资源

在 工作负载下查看 部署 和 有状态副本集 的状态,当它们都显示为 运行中,说明 WordPress 应用创建成功。

访问 Wordpress 服务前,查看 wordpress 服务,将外网访问设置为 NodePort。

5. 访问 Wordpress

以上访问将通过 http://{$节点 IP}:{$节点端口 NodePort} 访问 WordPress 博客网站。

谷粒商城 集群篇 (四) --------- KubeSphere相关推荐

  1. 谷粒商城 集群篇 (五) --------- DevOps

    目录 一.项目开发需要考虑的维度 二.什么是 DevOps ? 三.什么是 CI&CD 四.落地方案 五.基于 Spring Boot 项目构建流水线 1. 流水线概览 2. 创建凭证 ① 凭 ...

  2. 谷粒商城 集群篇 (六) --------- MySQL 集群

    目录 前言 一.MySQL 集群原理 1. MySQL-MMM 2. MHA 3. InnoDB Cluster 二.Docker 安装模拟 MySQL 主从复制集群 1. 创建 Master 实例 ...

  3. 谷粒商城集群篇爬坑笔记--Gitee拉取项目报错、项目target文件不存在(部分项目不全)、SonarQube报错

    Gitee拉取项目报错 问题描述 Gitee拉取可能会报错: ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitExcep ...

  4. 谷粒商城电商项目 高可用集群篇

    更多视频,JAVA收徒 QQ:987115885谷粒商城电商项目 高可用集群篇339.k8s-简介.mp4340.k8s-架构原理&核心概念.mp4341.k8s-集群搭建-环境准备.mp43 ...

  5. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇) 五.Hbase集群搭建 1.准备工作(下载与时间同步) 2.安装解压 3.环境变量配置 4.文 ...

  6. 高可用集群篇(五)-- K8S部署微服务

    高可用集群篇(五)-- K8S部署微服务 一.K8S有状态服务 1.1 什么是有状态服务 1.2 k8s部署MySQL 1.2.1 创建MySQL主从服务 1.2.2 测试主从配置 1.2.3 k8s ...

  7. 谷粒商城-分布式高级篇【业务编写】

    谷粒商城-分布式基础篇[环境准备] 谷粒商城-分布式基础[业务编写] 谷粒商城-分布式高级篇[业务编写]持续更新 谷粒商城-分布式高级篇-ElasticSearch 谷粒商城-分布式高级篇-分布式锁与 ...

  8. PostgreSQL集群篇——PostgreSQL的配置文件解析

    PostgreSQL集群篇--postgresql.conf配置文件解析 正文 日常中我们进行安装PostgreSQL后都需要对其进行配置基础配置,以便其能有效发挥出服务器的性能,下面是我进行整理后的 ...

  9. 谷粒商城--认证中心--高级篇笔记八

    谷粒商城–认证中心–高级篇笔记八 1. 环境搭建 1.1 新建模块gulimall-auth-server 1.2 pom文件 上面没选好直接复制下面的pom文件,记得排除gulimall-commo ...

最新文章

  1. java 16 -12 静态导入
  2. linux系统切换用户
  3. webpack 图片压缩不起作用_理论|webpack2 终极优化
  4. 学习总结——实现生成excel表格(方法二)
  5. vantweapp中的SwipeCell踩坑
  6. 《linux系统及其编程》实验课记录(六)
  7. 我又拖后腿了, 2月全国程序员平均工资13716元!
  8. 5寸android智能手机,5寸刚入门 六款巨屏安卓智能手机盘点
  9. VSCode . Syncing还原配置
  10. 数据库设计之商品表分析1
  11. ACM Ackermann function(阿克曼函数)
  12. C语言创建函数案例:求长方体体积
  13. 如何使用计算机的加减乘除,计算机是怎么懂加减乘除的
  14. Android webView 实现阻尼回弹效果
  15. 工信部:小米、京东等虚拟运营商被投诉
  16. Java媒体框架(JMF),个人很欣赏.... (转)
  17. Java 编写的简易画图板
  18. XDOJ 1-1 车牌限行
  19. 对一段信号用对称分量法matlab,数字信号处理
  20. 如何读懂日本K线图(又称日本蜡烛图)

热门文章

  1. 计算机毕业设计 SSM婚纱摄影业务系统(源码+论文)
  2. Android 12 内置系统默认动态壁纸(视频资源)实现
  3. python爬取9000条京东内衣销售数据,最最最最基础的语言和语法;并利用这些数据,基于Aprior算法分析“是否罩杯大的人倾向于买贵一些的bra”
  4. 移动端 样式重置 设置字体
  5. Istio旨在成为容器化微服务的网格管道
  6. 谷歌浏览器自动清除缓存数据插件
  7. 修仙之路(进度68%)
  8. syslog中转服务器,从splunkforwarder转发日志到syslog服务器
  9. JavaScript获取当前时间戳,时间戳转日期 - js
  10. Abb机器人看门狗_人类大战机器人 《看门狗2》1.15版本内容公布