文章目录
- kubesphere简介
- k8s群集部署kubespere
- 环境
- 准备工作
- 一、配置nfs
- 二、配置storageclass
- 三、kubesphere
- 开启服务(devops)
kubesphere简介
下面是官方文档描述
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
作为全栈的多租户容器平台,KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如多云与多集群管理、Kubernetes 资源管理、DevOps、应用生命周期管理、微服务治理(服务网格)、日志查询与收集、服务与网络、多租户管理、监控告警、事件与审计查询、存储管理、访问权限控制、GPU 支持、网络策略、镜像仓库管理以及安全管理等。
简单来说就是
k8s的图形化操作界面,减少了学习成本,有许多功能,只需要点点点就能完成大部分操作
k8s群集部署kubespere
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
192.168.10.18 | nfs | 1cpu一核 | 2G | 100G |
版本 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服务就配置好了