KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇
欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神!
题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南
版本号: 1.0,0
作者: @老王要学习
日期: 2025.06.05
适用环境: Ubuntu22
文档说明
本文围绕 KubeSphere 容器平台高可用展开,涵盖环境准备的软硬件要求。先回顾 k8s 操作,如查看存储类、配置 PVC 等;后介绍 k8e 对 k8s 集群可视化,包括进入控制平台、修改密码、创建项目和工作负载等操作,提供命令及可视化配置的相关内容
环境准备
硬件要求
- 服务器: 2核CPU、2GB内存,20GB硬盘空间
- 网络: 确保服务器具有固定的IP地址,并且防火墙允许FTP端口(默认22端口)的通信
软件要求
- 操作系统:Ubuntu22
- FTP软件:SecureCRT
- 软件包:
一、k8s简单回顾
1.1查看k8s集群中存储类
# 查看 Kubernetes 集群中 存储类(StorageClass)
kubectl get storageclasses.storage.k8s.io
#输出如下:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate false 2d18h
1.2修改tab空格缩进为2
echo 'set tab-width 2' >> ~/.inputrc
echo 'set expand-tab on' >> ~/.inputrc # 将 Tab 转换为空格
1.3写入pvc.yml文件
# 写入PVCyml文件
cat>mypvc.yml<<LW
apiVersion: v1 #配置采用Kubernetes API 的核心 v1 版本,像 Pod、Service、PVC 等基础资源都使用这个版本
kind: PersistentVolumeClaim #明确这是一个PVC资源,其作用是向集群申请存储资源
metadata:name: mypodpvc #给PVC设定名为mypodpvc,后续pod挂载存储时会用到这个名称
spec:accessModes: #对PVC访问模式进行定义,这里采用ReadWriteOnce- ReadWriteOnce #该PVC能够被单个节点以读写的方式进行挂载storageClassName: nfs-client #指定要使用的存储名称为nfs-client resources: requests:storage: 1Gi #申请存储空间大小为1GB
LW# 配置PVC
kubectl create -f mypvc.yml
#输出如下:
persistentvolumeclaim/mypodpvc created# 查看PVC状态(PVC已经成功创建并绑定到 PV状态为 Bound)
kubectl get pvc
#输出如下:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
mypodpvc Bound pvc-eba394ca-6101-45c4-8ba9-2df0ee34148f 1Gi RWO nfs-client <unset> 29s
1.4快速生成Pod文件
# 生成一个基于 busybox 镜像的 Pod 配置文件
kubectl run mypod --image busybox --dry-run=client -o yaml >mypod.yml# 我们进行简单配置
apiVersion: v1 #使用 Kubernetes 核心 API 的 v1 版本
kind: Pod #资源类型为 Pod
metadata: #元数据labels: #标签,用于选择和分类资源,这里添加run=mypod标签run: mypodname: mypod #Pod名称,必须在名称空间的唯一
spec:containers: #容器定义- image: busybox #使用busybox镜像name: mypod #容器名称command: #容器启动命令- sh- -c- sleep 1000000000000 #长时间sleep使容器保存运行volumeMounts: #存储卷挂载配置- mountPath: /tmp #容器内的挂载路径为/tmp目录name: myvol #挂载的卷名称,必须与 spec.volumes 中定义的名称匹配volumes: #卷定义- name: myvol #与 volumeMounts 中的名称对应PersistentVolumeClaim: #使用 PVC 作为卷来源claimName: mypodpvc #引用之前创建的 PVC "mypodpvc"# 生成一个基于 busybox 镜像的 dep 配置文件
kubectl create deployment mydep --replicas 3 --image nginx --dry-run=client -o yaml >mydep.yml# 我们删除PVC资源
kubectl delete -f mypvc.yml
#输出如下:
persistentvolumeclaim "mypodpvc" deleted# 如下我们进行可视化的配置操作
二、k8e对k8s集群可视化
2.1进入k8e控制平台
http://192.168.174.10:30880/login# 密码如下:
3. Login to KubeSphere ConsoleUse the following credentials to log in:Account: adminPassword: P@88w0rd
2.2修改初始密码
![[Pasted image 20250610094909.png]]
2.3查看我们的集群节点状态
![[Pasted image 20250610095221.png]]
![[Pasted image 20250610095254.png]]
![[Pasted image 20250610095308.png]]
# 等同如下节点,只是图形化展示出来
kubectl get no
NAME STATUS ROLES AGE VERSION
master-10 Ready control-plane,worker 3d23h v1.32.2
master-20 Ready control-plane,worker 3d23h v1.32.2
master-30 Ready control-plane,worker 3d23h v1.32.2
2.4创建项目(类似于名称空间)
![[Pasted image 20250610095552.png]]
![[Pasted image 20250610095655.png]]
2.5创建工作负载——部署——创建
![[Pasted image 20250610095844.png]]
![[Pasted image 20250610100013.png]]
![[Pasted image 20250610100411.png]]
![[Pasted image 20250610100556.png]]
![[Pasted image 20250610100502.png]]
![[Pasted image 20250610100637.png]]
![[Pasted image 20250610100721.png]]
# 查看k8s名称空间
kubectl get ns
NAME STATUS AGE
default Active 3d23h
kube-node-lease Active 3d23h
kube-public Active 3d23h
kube-system Active 3d23h
kubekey-system Active 3d23h
kubesphere-controls-system Active 3d18h
kubesphere-system Active 3d18h
test Active 10m <<<<<<<<创建的test# 查看test中的pod正在启动中(等待启动)
kubectl get pod -n test
#输出如下:
NAME READY STATUS RESTARTS AGE
myweb-646b4c9f65-6cs2s 0/1 ContainerCreating 0 82s# 查看特定Pod(myweb)详细信息
kubectl describe pod -n test myweb-646b4c9f65-6cs2s
#输出如下:
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 4m29s default-scheduler Successfully assigned test/myweb-646b4c9f65-6cs2s to master-30 <<<<<<分配到30Normal Pulling 4m28s kubelet Pulling image "docker.m.daocloud.io/library/nginx:stable" <<<<<<正在下载
2.6创建完成进入myweb查看并添加一个副本
![[Pasted image 20250610101446.png]]
![[Pasted image 20250610101850.png]]
2.7创建服务
![[Pasted image 20250610101957.png]]
![[Pasted image 20250610102105.png]]
![[Pasted image 20250610102235.png]]
![[Pasted image 20250610102625.png]]
![[Pasted image 20250610104010.png]]
2.8集群中创建 Deployment(命令创建)
# 创建一个 Deployment 的 YAML 配置文件
kubectl create deployment myweb02 --image docker.m.daocloud.io/library/nginx --replicas 2 --dry-run=client -o yaml >myweb02.yml
#输出如下:
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: myweb02name: myweb02
spec:replicas: 2selector:matchLabels:app: myweb02template:metadata:labels:app: myweb02spec:containers:- image: docker.m.daocloud.io/library/nginxname: nginx# 集群中实际创建 Deployment 资源
kubectl create -f myweb02.yml
#输出如下:
deployment.apps/myweb02 created# 查看集群中Deployment资源
kubectl get deployments.apps
#输出如下:
NAME READY UP-TO-DATE AVAILABLE AGE
myweb02 2/2 2 2 118m
nfs-client-provisioner 1/1 1 1 3d23h
2.9查看服务创建web网页
![[Pasted image 20250610140645.png]]
![[Pasted image 20250610140816.png]]
![[Pasted image 20250610140918.png]]