微服架构基础设施环境平台搭建 -(四)在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、创建服务

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

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

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

序号 IP HostName 操作系统 K8s角色 说明
1 192.168.1.141 ks-m1 CentOS7_x64 控制节点 Kubernetes Master
2 192.168.1.142 ks-m2 CentOS7_x64 控制节点 Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
3 192.168.1.143 ks-m3 CentOS7_x64 控制节点 Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
4 192.168.1.144 ks-n1 CentOS7_x64 工作节点 Kubernetes Worker
5 192.168.1.145 ks-n2 CentOS7_x64 工作节点 Kubernetes Worker
6 192.168.2.146 ks-harbor CentOS7_x64 工作节点 Harbor服务+NFS文件服务

三、部署架构

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

四、部署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-utils

systemctl 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

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

五、为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-storage
  annotations:
    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-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2
          # resources:
          #    limits:
          #      cpu: 10m
          #    requests:
          #      cpu: 10m
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: k8s-sigs.io/nfs-subdir-external-provisioner
            - name: NFS_SERVER
              value: 192.168.2.146 ## 指定自己nfs服务器地址
            - name: NFS_PATH  
              value: /nfsdata  ## nfs服务器共享的目录
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.2.146
            path: /nfsdata
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: 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: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: 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 deployed
  namespace: 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 deployed
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

2、执行发布安装

# 执行发布安装
kubectl apply -f sc.yaml

# 查看nfs-client-provisioner pod 是否安装成功
kubectl get pod -A

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第3张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第4张图片

六、安装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

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

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)、登录画面
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第6张图片

2)、初次登录时修改初始密码画面 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第7张图片

2、首页

1)、登录成功后首页
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第8张图片
2)、平台管理首页
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第9张图片

3、集群节点管理

1)、集群节点列表管理画面
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第10张图片
2)、集群节点详情画面
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第11张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第12张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第13张图片

4、监控告警

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第14张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第15张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第16张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第17张图片

八、启用DevOps插件

1、进入集群管理

登录Web控制台后->平台管理->集群管理
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第18张图片

2、定制资源定义

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

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

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

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

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

改值改为true后,点击【确定】后保存并关闭弹窗口,并在稍后会提示“更新成功”
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第21张图片

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的令牌

项目详情->配置->保密字典 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第22张图片

4、创建服务

项目详情->应用负载->服务
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第23张图片

说明


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

由于我们是要创建mysql服务,所以选有状态
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第24张图片

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第25张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第26张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第27张图片
配置完成后点击【对钩】
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第28张图片

微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第29张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第30张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第31张图片
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台_第32张图片

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

你可能感兴趣的:(微服务,kubernetes,架构,docker)