kubesphere简介

下面是官方文档描述
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。

作为全栈的多租户容器平台,KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如多云与多集群管理、Kubernetes 资源管理、DevOps、应用生命周期管理、微服务治理(服务网格)、日志查询与收集、服务与网络、多租户管理、监控告警、事件与审计查询、存储管理、访问权限控制、GPU 支持、网络策略、镜像仓库管理以及安全管理等。

简单来说就是
k8s的图形化操作界面,减少了学习成本,有许多功能,只需要点点点就能完成大部分操作

k8s群集部署kubespere

环境

虚拟机

Ip主机名cpu内存硬盘
192.168.10.11master012cpu双核4G100G
192.168.10.12worker012cpu双核4G100G
192.168.10.13worker022cpu双核4G100G
192.168.10.18nfs1cpu一核2G100G

版本 centos7.9
已部署k8s-1.24.1

准备工作

以下标注的为官方文档内容

如需在 Kubernetes 上安装 KubeSphere 3.4,您的 Kubernetes 版本必须为:v1.20.x、v1.21.x、v1.22.x、v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.23.x。

1.出于稳定性考虑,本次安装的kubesphere版本为3.2.1版本
由于前置条件有版本要求我们需要先查看一下当前版本是否在1.20-1.26之间

kubectl version

在这里插入图片描述
可以看到当前版本是1.24.1,如果需要使用边缘节点,推荐安装1.23.x的版本

可用 CPU > 1 核;内存 > 2 G。CPU 必须为 x86_64,暂时不支持 Arm 架构的 CPU。

2.推荐三台主机配置为4g4u,因为很多功能都需要组件,最好为8g8u

Kubernetes 集群已配置默认 StorageClass(请使用 kubectl get sc 进行确认)。

3.因为在k8s中使用本地存储作为持久化存储卷时是配合pvc无法动态创建pv,所以我们在后面使用nfs来配置storageclass

一句话简述storageclass
storageclass是一种网络存储的动态供给方式,它通过连接存储插件,根据PVC的消费需求,动态生成PV,从而实现方便管理的效果。

使用 --cluster-signing-cert-file 和 --cluster-signing-key-file 参数启动集群时,kube-apiserver 将启用 CSR 签名功能。请参见 RKE 安装问题。

链接: 官方文档

一、配置nfs

所有主机安装

yum -y install nfs-utils rpcbind

在nfs主机(192.168.10.14)上操作
创建一个共享目录

mkdir /nfsdata
vim /etc/exports

写入

/nfsdata *(rw,sync,no_root_squash)

设置随机启动

systemctl start nfs-server
systemctl enable nfs-server

查看

showmount -e

在这里插入图片描述
到这里nfs就算配置完成了

二、配置storageclass

master01主机(192.168.10.11)操作
创建一个目录存放相关yaml文件

mkdir sc
cd sc

创建账号、创建权限、给账号关联权限
获取yaml文件

wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/rbac.yaml

获取不到直接复制下面的内容

vim rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  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
    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
  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
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

执行yaml文件

kubectl apply -f rbac.yaml

通过中间件将访问账号与共享存储关联
编写yaml文件

vim nfs-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccount: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0
          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.10.14
            - name: NFS_PATH
              value: /nfsdata
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.10.14
            path: /nfsdata

执行yaml文件

kubectl apply -f nfs-deployment.yaml

配置storageclass与中间件关联
编写yaml文件

vim class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # or choose another name, must match deployment's env PROVISIONER_NAME'
parameters:
  archiveOnDelete: "false"

执行yaml文件

kubectl apply -f class.yaml

查看

kubectl get storageclasses

记住存储类的名字:nfs-client
在这里插入图片描述
到这里前置环境就已经部署好了,下面就是kubesphere部署了

三、kubesphere

执行相关yam文件

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml

等待running即可

kubectl -n kubesphere-system get pod

在这里插入图片描述
在这里插入图片描述
获取相关yaml文件

wget https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml

进行修改

vim cluster-configuration.yaml

在这里写入存储类的名称
在这里插入图片描述
在这里插入图片描述
在这里选择安装的服务,也可以选择以后在图形化界面安装,如果安装的话把false改为true即可,后面还有其他如(devops)的服务,可以直接改为true,或者看后面,后面会展示怎么在图形化界面安装服务
在这里插入图片描述
但不建议在这里安装,因为这样的话安装的会很慢
如果要安的话改成下面这样
在这里插入图片描述

执行该yaml文件

kubectl apply -f cluster-configuration.yaml

找到 kubesphere-system 命名空间下标签为 app=ks-install 或 app=ks-installer 的 Pod,并持续显示该 Pod 的日志输出。

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

然后耐心等待即可
看到这个就是安装完成了

在这里插入图片描述
里面标注了ip,账号名和密码,我们可以通过这些信息访问到kubesphere的web页面
在这里插入图片描述
然后后面会提示第一次登录需要修改密码,可以写一个新密码或先跳过
在这里插入图片描述

再接着就是主界面了
在这里插入图片描述

开启服务(devops)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到devops服务并没有启用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到devops,把false改为true,其他服务同理
在这里插入图片描述
在这里插入图片描述
确定后会自动更新
在这里插入图片描述

请耐心等待,一开始啥也没有很正常,他要先创建存储卷,当然长时间啥也没有,就要想想是不是上面写错了
在这里插入图片描述
在这里插入图片描述
大概5分钟
在这里插入图片描述
在这里插入图片描述
至此devops服务就配置好了

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐