当前位置: 首页 > news >正文

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekins自动构建、编译、测试、发布的自动部署,形成一套完整的自动化运维、发布的快速DevOps平台。


本文是基于Kubernets集群基础上来部署Kubesphere的,搭建Kubernetes集群参见【微服架构基础设施环境平台搭建 -(三)Docker+Kubernetes集群搭建】


Kubesphere详情参见【官方网站】

详情参照Kubesphere官方文档【在 Kubernetes 上最小化安装 KubeSphere】

微服架构基础设施环境平台搭建 系列文章


微服架构基础设施环境平台搭建 -(一)基础环境准备
微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建
微服架构基础设施环境平台搭建 -(三)Docker+Kubernetes集群搭建
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台
微服架构基础设施环境平台搭建 -(五)Docker常用命令

目录

  • 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台
  • 一、微服架构采用的技术架构
  • 二、微服架构基础设施平台网络规划
  • 三、部署架构
  • 四、部署NFS提供外部共享存储
    • 1、在ks-harbor服务器部署NFS服务
    • 2、在ks-n1、ks-n2服务器部署NFS客户端
  • 五、为Kubenetes集群配置NFS存储
    • 1、新建sc.yaml
    • 2、执行发布安装
  • 六、安装Kubesphere
    • 1、下载并发布安装Kubesphere
    • 2、通过日志实时显示安装进度
    • 3、登录Web控制台
  • 七、体验Kubesphere平台
    • 1、登录
    • 2、首页
    • 3、集群节点管理
    • 4、监控告警
  • 八、启用DevOps插件
    • 1、进入集群管理
    • 2、定制资源定义
      • 1)、搜索框内输入【clusterconfiguration】
      • 2)、进入ClusterConfiguration详情画面后编辑ks-insaller的YAML
      • 3)、将devops下的enabled值改为true
      • 4)、查看安装进度
  • 九、在Kubesphere上部署一个Harbor上的镜像服务
    • 1、创建企业空间
    • 2、创建项目
    • 3、创建访问Harbor的令牌
    • 4、创建服务

一、微服架构采用的技术架构

序号技术框架说明
1Kubernetes
2KubesphereKubernetes编排器,管理平台
3Docker
4HarborDocker私有仓库
5GitLab源码库
6Jekins自动编译、测试、发布平台
7Spring Cloud AlibabaSpring Cloud Alibaba微服体系架构
8NacosApi网关、服务注册发现配置管理中心
9Sentinel限流溶断安全中心
10Seata分布式事务管理框架
11Redis分布式缓存服务
12ElasticSearch/Solr数据检索服务
13Mysql结构化数据存储
14Grafana监控平台
15Nginx服务代理、Web服务

二、微服架构基础设施平台网络规划

序号IPHostName操作系统K8s角色说明
1192.168.1.141ks-m1CentOS7_x64控制节点Kubernetes Master
2192.168.1.142ks-m2CentOS7_x64控制节点Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
3192.168.1.143ks-m3CentOS7_x64控制节点Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
4192.168.1.144ks-n1CentOS7_x64工作节点Kubernetes Worker
5192.168.1.145ks-n2CentOS7_x64工作节点Kubernetes Worker
6192.168.2.146ks-harborCentOS7_x64工作节点Harbor服务+NFS文件服务

三、部署架构

在这里插入图片描述

四、部署NFS提供外部共享存储

1、在ks-harbor服务器部署NFS服务

yum install -y nfs-common nfs-utils 
# 分配权限
mkdir /nfsdata && chmod 666 /nfsdata && chown nfsnobody /nfsdata
# 配置挂载
vim /etc/exports
/nfsdata *(rw,no_root_squash,no_all_squash,sync)#systemctl start nfs && systemctl enable nfs  && systemctl status nfs
#启动
systemctl start rpcbind && systemctl start nfs# 使配置生效
exportfs -r#检查配置是否生效
exportfs#重载配置文件,不需要重启服务
exportfs -arv

2、在ks-n1、ks-n2服务器部署NFS客户端

分别在ks-n1、ks-n2执行下面的命令

# 安装nfs
yum install -y nfs-utilssystemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server#用showmount -e查看远程服务器rpc提供的可挂载的nfs信息
showmount -e 192.168.2.146#创建挂载点目录(可自行定义)
mkdir -p /nfsdata
#执行挂载命令,完成后测试文件是否共享
mount -t nfs 192.168.2.146:/nfsdata /nfsdata
#配置客户端重启时自动挂载
vim /etc/fstab

新增内容

192.168.2.146:/nfsdata  /nfsdata	nfs     defaults	0 0
#查看挂载是否成功
df -h

在这里插入图片描述

五、为Kubenetes集群配置NFS存储

本操作所有命令都在ks-m1服务器上执行

1、新建sc.yaml

mkdir /home/hxyl/sc
cd /home/hxyl/sc
vim sc.yaml

sc.yaml的内容

## 创建了一个存储类
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: "true"
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:archiveOnDelete: "true"  ## 删除pv的时候,pv的内容是否要备份---
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2# resources:#    limits:#      cpu: 10m#    requests:#      cpu: 10mvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner- name: NFS_SERVERvalue: 192.168.2.146 ## 指定自己nfs服务器地址- name: NFS_PATH  value: /nfsdata  ## nfs服务器共享的目录volumes:- name: nfs-client-rootnfs:server: 192.168.2.146path: /nfsdata
---
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: [""]resources: ["nodes"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
rules:- apiGroups: [""]resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
subjects:- kind: ServiceAccountname: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

2、执行发布安装

# 执行发布安装
kubectl apply -f sc.yaml# 查看nfs-client-provisioner pod 是否安装成功
kubectl get pod -A

在这里插入图片描述
在这里插入图片描述

六、安装Kubesphere

1、下载并发布安装Kubesphere

# 下载核心文件并将其pod发布到Kubernetes中
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.2/kubesphere-installer.yaml# 执行完此命令后需要通过下面【2、通过日志实时显示安装进度】命令查看安装进度,大概需要几分钟的时间
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.2/cluster-configuration.yaml

2、通过日志实时显示安装进度

#查看安装进度
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

在这里插入图片描述

3、登录Web控制台

说明:


1、访问3个Master节点(ks-m1、ks-m2、ks-m3)任何一个节点的30880端口即可。例如:http://192.168.1.141:30880
2、默认的用户名:admin,默认的密码:P@88w0rd

七、体验Kubesphere平台

说明:
下面部分截图中显示的是3个节点,原因是开始部署的5台虚拟机由于资源有限,服务器跑不动了,导致集群节点不可用,后来,将集群节点由5个降为3个节点:
1、Master节点:ks-m1
2、Worker节点:ks-m2、ks-n1

1、登录

1)、登录画面
在这里插入图片描述

2)、初次登录时修改初始密码画面 在这里插入图片描述

2、首页

1)、登录成功后首页
在这里插入图片描述
2)、平台管理首页
在这里插入图片描述

3、集群节点管理

1)、集群节点列表管理画面
在这里插入图片描述
2)、集群节点详情画面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、监控告警

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、启用DevOps插件

1、进入集群管理

登录Web控制台后->平台管理->集群管理
在这里插入图片描述

2、定制资源定义

1)、搜索框内输入【clusterconfiguration】

在这里插入图片描述

2)、进入ClusterConfiguration详情画面后编辑ks-insaller的YAML

在这里插入图片描述

3)、将devops下的enabled值改为true

改值改为true后,点击【确定】后保存并关闭弹窗口,并在稍后会提示“更新成功”
在这里插入图片描述

4)、查看安装进度

安装过程会持续几分钟,执行下面命令可以查看实时安装日志

# 在ks-m1上执行
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

九、在Kubesphere上部署一个Harbor上的镜像服务

1、创建企业空间

2、创建项目

3、创建访问Harbor的令牌

项目详情->配置->保密字典 在这里插入图片描述

4、创建服务

项目详情->应用负载->服务
在这里插入图片描述

说明


1、无状态服务:无数据数据持久化的服务
2、有状态服务:数据需要持久化的服务

由于我们是要创建mysql服务,所以选有状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成后点击【对钩】
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台 通过采用微服相关架构构建一套以KubernetesDocker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekins自动…...

Linux开发板安装Python环境

1. 环境介绍 硬件:STM32MP157,使用的是野火出的开发板。 软件:Debian ARM 架构制作的 Linux 发行版,版本信息如下: Linux发行版本:Debian GNU/Linux 10 内核版本:4.19.94 2. Python 简介…...

ChatGPT 聊天接口API 使用

一、准备工作 1.准备 OPENAI_ACCESS_TOKEN 2.准备好PostMan 软件 二、测试交流Demo 本次使用POSTMAN工具进行快速测试,旨在通过ChatGPT API实现有效的上下文流。在测试过程中,我们发现了三个问题:    1.如果您想要进行具有上下文的交流&…...

软件测试月薪2万,需要技术达到什么水平?

最近跟朋友在一起聚会的时候,提了一个问题,说一个软件测试工程师如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可…...

从入门到进阶,Vue框架让Web开发更简单高效

Vue是现代前端开发中最为流行的JavaScript框架之一,它具有轻量、易学、易用的特点,能够帮助开发者构建出高效、交互丰富的Web应用。在本文中,我们将会深入探索Vue框架的各个方面,包括Vue组件、Vue路由、Vue状态管理等,…...

怎么缩小照片的kb,压缩照片kb的几种方法

缩小照片的KB大小是我们日常工作生活中遇到的常见问题。虽然听起来十分专业,但其实很简单。照片的KB是指照片文件的大小,通常以“KB”为单位表示。缩小照片的KB就是减小照片文件的大小,以便占用更少的磁盘空间或更快地上传和下载照片。在实际…...

2. 注解Annotation

Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制.注解是原数据的一种形式,提供有关于程序但不属于程序本身的数据.注解对他们注解的代码的操作没有直接的影响. 声明方式 注解的声明方式使用interface关键字,举例说明: public interface MyInject{ }元注解 Ta…...

【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】

Leetcode Leetcode -495.提莫攻击Leetcode - 496.下一个更大的元素Ⅰ Leetcode -495.提莫攻击 题目:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。 …...

肝一肝设计模式【八】-- 外观模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…...

Maven uber-jar(带依赖的打包插件)maven-shade-plugin

文章目录 最基础的 maven-shade-plugin 使用生成可执行的 Jar 包 和 常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对 maven-shade-plugin 常用配置的介绍,更详细的学习请参照 Apache Maven Shade Plugin 官方文档 通过使用 maven-shade…...

MySQL基础(二十八)索引优化与查询优化

都有哪些维度可以进行数据库调优?简言之: 索引失效、没有充分利用到索引——索引建立关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。数据过多――分库分表 关于数据库调优的知识点非常分散。不同的DBMS&…...

初步认识性能测试和完成一次完整的性能测试

上一篇博文主要通过两个例子让测试新手了解一下测试思想,和在做测试之前应该了解人几点,那么我们在如何完成一次完整的性能测试呢? 测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告&#xff…...

使用插件快速生成代码

使用插件快速生成代码 咋们常说,授人以鱼不如授人以渔,在这里给大家提供一些技巧性的东西,方便一些新手同学可以快速上手,同时,也提高我们的开发兴趣与开发热情! 主要讲什么呢,我们来学一学如何…...

FE_Vue学习笔记 插槽 slot

插槽分为匿名插槽、具名插槽、作用域插槽。子组件中: 匿名插槽只能有一个;可以有多个具名插槽;作用域插槽中可以有匿名插槽和具名插槽。 当项目中一个组件可以多次复用时,我们可以把这个组件封装成单独的.vue文件,从…...

单链表的成环问题

前言:链表成环问题不仅考察双指针的用法,该问题还需要一定的数学推理和分析能力,看似简单的题目实则细思缜密,值得斟酌~ 目录 1.问题背景引入-判断链表是否成环: 1.1.正解:快慢指针 1.2 STL的集合判重 …...

横截面收益率

横截面收益率指的是在经典资产定价模型中,在横截面上线性确定的一个与资产风险匹配的资产收益率。 横截面收益率的预测[1] (一)变量和方法 我们主要使用月度频率数据进行检验。交易数据和公司财务数据来自于CSMAR数据库。CSMAR数据库的收益率调整了送股、配股以及拆…...

C++解析JSON JSONCPP库的使用

首先去GitHub下载JSONCPP的源码: JSonCpp的源码 解压后得到:jsoncpp-master 文件夹 需要的是:jsoncpp-master\src\lib_json 目录下的所有文件和 jsoncpp-master\include\json 目录下的所有文件,在MFC工程目录下新建两个文件夹或…...

不会Elasticsearch标准查询语句,如何分析数仓数据?

1 Elasticsearch的查询语句 ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL,Query DSL是利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.1 查询预发 # GET /…...

获得GitHub Copilot并结合VS Code使用

一、什么是GitHub Copilot GitHub Copilot是一种基于AI的代码生成工具。它使用OpenAI的GPT(生成式预训练Transformer)技术来提供建议。它可以根据您正在编写的代码上下文建议代码片段甚至整个函数。 要使用GitHub Copilot,您需要在编辑器中…...

Java基础-判断和循环

1 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 ​ 判…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...