谷粒商城 集群篇 (四) --------- KubeSphere
目录
- 一、简介
- 二、安装
- 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相关推荐
- 谷粒商城 集群篇 (五) --------- DevOps
目录 一.项目开发需要考虑的维度 二.什么是 DevOps ? 三.什么是 CI&CD 四.落地方案 五.基于 Spring Boot 项目构建流水线 1. 流水线概览 2. 创建凭证 ① 凭 ...
- 谷粒商城 集群篇 (六) --------- MySQL 集群
目录 前言 一.MySQL 集群原理 1. MySQL-MMM 2. MHA 3. InnoDB Cluster 二.Docker 安装模拟 MySQL 主从复制集群 1. 创建 Master 实例 ...
- 谷粒商城集群篇爬坑笔记--Gitee拉取项目报错、项目target文件不存在(部分项目不全)、SonarQube报错
Gitee拉取项目报错 问题描述 Gitee拉取可能会报错: ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitExcep ...
- 谷粒商城电商项目 高可用集群篇
更多视频,JAVA收徒 QQ:987115885谷粒商城电商项目 高可用集群篇339.k8s-简介.mp4340.k8s-架构原理&核心概念.mp4341.k8s-集群搭建-环境准备.mp43 ...
- Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇)
Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建四(Hbase篇) 五.Hbase集群搭建 1.准备工作(下载与时间同步) 2.安装解压 3.环境变量配置 4.文 ...
- 高可用集群篇(五)-- K8S部署微服务
高可用集群篇(五)-- K8S部署微服务 一.K8S有状态服务 1.1 什么是有状态服务 1.2 k8s部署MySQL 1.2.1 创建MySQL主从服务 1.2.2 测试主从配置 1.2.3 k8s ...
- 谷粒商城-分布式高级篇【业务编写】
谷粒商城-分布式基础篇[环境准备] 谷粒商城-分布式基础[业务编写] 谷粒商城-分布式高级篇[业务编写]持续更新 谷粒商城-分布式高级篇-ElasticSearch 谷粒商城-分布式高级篇-分布式锁与 ...
- PostgreSQL集群篇——PostgreSQL的配置文件解析
PostgreSQL集群篇--postgresql.conf配置文件解析 正文 日常中我们进行安装PostgreSQL后都需要对其进行配置基础配置,以便其能有效发挥出服务器的性能,下面是我进行整理后的 ...
- 谷粒商城--认证中心--高级篇笔记八
谷粒商城–认证中心–高级篇笔记八 1. 环境搭建 1.1 新建模块gulimall-auth-server 1.2 pom文件 上面没选好直接复制下面的pom文件,记得排除gulimall-commo ...
最新文章
- java 16 -12 静态导入
- linux系统切换用户
- webpack 图片压缩不起作用_理论|webpack2 终极优化
- 学习总结——实现生成excel表格(方法二)
- vantweapp中的SwipeCell踩坑
- 《linux系统及其编程》实验课记录(六)
- 我又拖后腿了, 2月全国程序员平均工资13716元!
- 5寸android智能手机,5寸刚入门 六款巨屏安卓智能手机盘点
- VSCode . Syncing还原配置
- 数据库设计之商品表分析1
- ACM Ackermann function(阿克曼函数)
- C语言创建函数案例:求长方体体积
- 如何使用计算机的加减乘除,计算机是怎么懂加减乘除的
- Android webView 实现阻尼回弹效果
- 工信部:小米、京东等虚拟运营商被投诉
- Java媒体框架(JMF),个人很欣赏.... (转)
- Java 编写的简易画图板
- XDOJ 1-1 车牌限行
- 对一段信号用对称分量法matlab,数字信号处理
- 如何读懂日本K线图(又称日本蜡烛图)
热门文章
- 计算机毕业设计 SSM婚纱摄影业务系统(源码+论文)
- Android 12 内置系统默认动态壁纸(视频资源)实现
- python爬取9000条京东内衣销售数据,最最最最基础的语言和语法;并利用这些数据,基于Aprior算法分析“是否罩杯大的人倾向于买贵一些的bra”
- 移动端 样式重置 设置字体
- Istio旨在成为容器化微服务的网格管道
- 谷歌浏览器自动清除缓存数据插件
- 修仙之路(进度68%)
- syslog中转服务器,从splunkforwarder转发日志到syslog服务器
- JavaScript获取当前时间戳,时间戳转日期 - js
- Abb机器人看门狗_人类大战机器人 《看门狗2》1.15版本内容公布