k8s学习--k8s集群部署kubesphere的详细过程

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服务就配置好了

k8s离线一键部署Kubesphere需要以下步骤: 1. 准备离线环境:首先需要将Kubesphere部署所需的软件包和依赖项下载到离线环境中。这包括Kubernetes、Helm、ETCD、Metrics Server等等。可以通过访问Kubesphere官网或者软件源网站下载所需软件包。 2. 安装Kubesphere离线包:将下载好的Kubesphere离线包上传至离线环境中,并进行解压。在解压后的目录中,运行安装脚本,如`./install.sh`。这会自动安装和配置Kubesphere所需要的组件和服务。 3. 配置集群信息:一键部署脚本通常会提供一个配置文件,用于指定Kubernetes集群的相关信息。在安装过程中,需要根据实际情况修改配置文件中的参数,例如指定Master和Worker节点的IP地址、集群网络配置、存储类型等等。 4. 启动Kubesphere部署:在配置完成后,执行启动命令如`./install.sh start`,脚本将自动开始部署Kubesphere。可以通过查看日志来跟踪安装进度,如`./install.sh log`。 5. 验证Kubesphere部署:一旦脚本执行完毕,可以使用Kubectl命令来检查Kubesphere是否已经成功部署。运行`kubectl get pods -n kubesphere-system`命令,可以查看Kubesphere系统命名空间中的所有Pod状态。确保所有Pod都处于运行中的状态。 6. 访问Kubesphere控制台:在部署成功后,可以通过浏览器访问通过配置文件指定的URL地址,例如`https://<Your_Kubesphere_IP>`。输入默认的管理员用户名和密码,即可登录到Kubesphere控制台。从控制台中,可以管理和监控Kubernetes集群,创建和管理应用程序等等。 通过以上步骤,就可以在离线环境中使用一键部署脚本来部署Kubesphere。这个过程可能因系统和配置而略有差异,但总体流程是相似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃龙利鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值