在linux上部署kubesphere

前言

因项目需要上云,因此选取kubesphere作为云管理平台,主要参考文档为官方文档(kubesphere官方文档链接),但是自己在部署的过程中发现有些小差别,因此特意记录下来。

服务器配置

官方文档的建议如下:

我的服务器选取的配置如下:

我选了两台aws ec2服务器,内核和型号如下所示

注:因为我只是个人学习使用,因此服务器配置和数量均选取的最低配置,实际配置请根据自己项目的实际需要来合理选配!!!

安装步骤

安装依赖项

官方文档说明

对于aws linux2,还需要安装iptables和iproute,否则在部署的时候会报错如下

因此我的安装依赖项的命令如下

bash 复制代码
sudo yum install socat conntrack ebtables ipset iptables iproute -y

安装k8s和kubesphere

根据官方文档来即可,根据官方文档给的配置文件和命令一步步执行即可

安装默认存储

官方文档说明:

我这里选择使用NFS,大家根据自己实际情况来选取

在集群中每个服务器上都要安装nfs-utils

bash 复制代码
yum install -y nfs-utils

# 执行以下命令,启动 nfs 服务;创建共享目录
mkdir -p /nfs/data

在NFS主节点 执行以下命令

bash 复制代码
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports

systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server

# 使配置生效
exportfs -r

#检查配置是否生效
exportfs

输出如下图所示即可

在NFS客户端节点执行如下命令

bash 复制代码
# 将xxx.xxx.xxx.xxx替换成你的NFS主节点的IP地址
showmount -e xxx.xxx.xxx.xxx

mount -t nfs xxx.xxx.xxx.xxx:/nfs/data /nfs/data

在kubesphere master节点创建默认存储类的yaml文件

注:把文件中的172.31.0.4改成自己NFS主服务器的IP地址

创建了一个存储类

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: 172.31.0.4 ## 指定自己nfs服务器地址

  • name: NFS_PATH

value: /nfs/data ## nfs服务器共享的目录

volumes:

  • name: nfs-client-root

nfs:

server: 172.31.0.4

path: /nfs/data


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"]

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

输入如下命令应用这个存储类

bash 复制代码
kubectl apply -f sc.yaml
相关推荐
梦白.1 小时前
Python的容器类型
运维·python
tuotali20263 小时前
天然气压缩机技术2026,高可靠性长周期运行与智能运维融合路径
运维·python
姚不倒3 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
gpio_013 小时前
自建gitlab服务器并用sakurafrp穿透
运维·服务器·gitlab
k7Cx7e3 小时前
Debian执行ssh root@localhost 提示认证失败
运维·debian·ssh
闻道且行之3 小时前
Nginx 安装、做成服务及 HTTPS 配置全流程
linux·运维·nginx·https
爱上妖精的尾巴3 小时前
8-20 WPS JS宏 正则表达式-懒惰匹配
服务器·前端·javascript
昵称只能一个月修改一次。。。3 小时前
Linux系统编程:网络编程
linux·服务器·网络
人工智能训练3 小时前
Qwen3.5 开源全解析:从 0.8B 到 397B,代际升级 + 全场景选型指南
linux·运维·服务器·人工智能·开源·ai编程
野犬寒鸦3 小时前
TCP协议核心:TCP详细图解及TCP与UDP核心区别对比(附实战解析)
服务器·网络·数据库·后端·面试