Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere

这篇具有很好参考价值的文章主要介绍了Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

KubeSphere介绍

它是一款全栈的 Kubernetes 容器云 PaaS 解决方案(来源于官网),而我觉得它是一款强大的Kubernetes图形界面,它继承了如下组件 (下面这段内容来自官网):

  • Kubernetes DevOps 系统
    • 基于 Jenkins 为引擎打造的 CI/CD,内置 Source-to-Image 和 Binary-to-Image 自动化打包部署工具
  • 基于 Istio 的微服务治理
    • 提供细粒度的流量管理、流量监控、灰度发布、分布式追踪,支持可视化的流量拓扑
  • 丰富的云原生可观测性
    • 提供多维度与多租户的监控、日志、事件、审计搜索,支持多种告警策略与通知渠道,支持日志转发
  • 云原生应用商店
    • 提供基于 Helm 的应用商店与应用仓库,内置多个应用模板,支持应用生命周期管理
  • Kubernetes 多集群管理
    • 跨多云与多集群统一分发应用,提供集群高可用与灾备的最佳实践,支持跨级群的可观测性
  • Kubernetes 边缘节点管理
    • 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应用交付、运维、管控的需求

当然他的功能远不止这些,欢迎各位来到KubeSphere的官网了解更多内容:https://www.kubesphere.io/zh/

环境准备

KubeSphere

(摘自官网)

  • 您的 Kubernetes 版本必须为:v1.20.x、v1.21.x、* v1.22.x、* v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.21.x。
  • 确保您的机器满足最低硬件要求:CPU > 1 核,内存 > 2 GB。
  • 在安装之前,需要配置 Kubernetes 集群中的默认存储类型(这篇文章会介绍安装)。

我已经准备好了一个Kubernetes集群,如图:
k8s安装nfs,kubernetes,容器,云原生

符合KubeSphere的支持边缘节点的最高版本要求,但建议你版本号不要超过 v1.26.x

NFS动态供给

首先你需要准备一台NFS服务器,为了方便,我这次就以我的主服务器 k8s-master 来担任这个NFS服务器了。

安装NFS动态供给

搭建NFS

首先我们需要在NFS服务器(我的NFS服务器和master是同一台)和所有k8s节点当中安装 nfs-utils 软件包(master和node都需要安装),可执行下面这行命令:

yum install -y nfs-utils

安装如图:
k8s安装nfs,kubernetes,容器,云原生

然后确定一个nfs共享的目录,这次我就使用 /data/nfs/dynamic-provisioner 这个目录作为nfs的共享目录了。所以我们来执行下面命令创建并共享这个目录:

# 创建这个目录
mkdir -p /data/nfs/dynamic-provisioner
# 执行这行命令将这个目录写到写到 /etc/exports 文件当中去,这样NFS会对局域网暴露这个目录
cat >> /etc/exports << EOF
/data/nfs/dynamic-provisioner *(rw,sync,no_root_squash)
EOF
# 启动NFS服务
systemctl enable --now nfs-server

执行后如图:
k8s安装nfs,kubernetes,容器,云原生

检查是否暴露成功:

showmount -e {nfs服务器地址}

可以看到是暴露成功的:
k8s安装nfs,kubernetes,容器,云原生

下载动态供给驱动

因为Kubernetes自己不自带NFS动态供给的驱动,所以我们需要下载第三方的NFS动态供给驱动。Kubernetes官方推荐了两个第三方的驱动可供选择,如图:
k8s安装nfs,kubernetes,容器,云原生

个人觉得这个 NFS subdir 驱动比较好用,这次就用这个驱动来搭建动态供给了。我们可以来到它的官网:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner,并找到最新的release:
k8s安装nfs,kubernetes,容器,云原生

目前最新的发行版是 4.0.18 我们就下载这个版本:
k8s安装nfs,kubernetes,容器,云原生

也可直接通过命令下载:

wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/archive/refs/tags/nfs-subdir-external-provisioner-4.0.18.tar.gz

下载成功如图:
k8s安装nfs,kubernetes,容器,云原生

我们直接解压它:

tar -zxvf nfs-subdir-external-provisioner-4.0.18.tar.gz

解压之后会获得一个特别长的文件夹:
k8s安装nfs,kubernetes,容器,云原生

修改驱动文件

我们来到这个文件夹下的deploy目录:

cd nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18/deploy/

可以看到这里面有一些yaml,我们需要修改一部分:
k8s安装nfs,kubernetes,容器,云原生

首先我们需要修改的就是 deployment.yaml ,我们直接用vim修改:

vim deployment.yaml

首先就是这个镜像是在谷歌的k8s官方镜像仓库拉取的,国内拉取不到,所以我们要修改一下:
k8s安装nfs,kubernetes,容器,云原生

我已经通过一些方法将它拉取下来并且上传到了国内的阿里云镜像仓库,我们可以直接用下面这个镜像来替换:

# 这个镜像是在谷歌上的,国内拉取不到
# image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
# 使用这个我先在谷歌上拉取下来再上传到阿里云上的镜像
image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/nfs-subdir-external-provisioner:v4.0.2

修改后如图:
k8s安装nfs,kubernetes,容器,云原生

然后我们还需要修改一下下面的nfs服务器地址和nfs服务器内共享的目录:
k8s安装nfs,kubernetes,容器,云原生

我的nfs服务器地址为 172.18.0.2 ,且按照上面的安装步骤,我nfs服务器暴露的共享目录为 /data/nfs/dynamic-provisioner ,所以我修改文件为(你的有可能和我不一样,根据自己设置的共享目录和nfs服务器地址修改此文件):
k8s安装nfs,kubernetes,容器,云原生

执行下面这一段脚本我们可以看到还是有很多资源是存放在默认命名空间下:

yamls=$(grep -rl 'namespace: default' ./)
for yaml in ${yamls}; do
  echo ${yaml}
  cat ${yaml} | grep 'namespace: default'
done

执行结果:
k8s安装nfs,kubernetes,容器,云原生

我们可以新创建一个命名空间专门装这个驱动,也方便以后管理,所以我决定创建一个名为 nfs-provisioner 命名空间,为了方便就不用yaml文件了,直接通过命令创建:

kubectl create namespace nfs-provisioner

执行后可以看到这个命名空间创建成功:
k8s安装nfs,kubernetes,容器,云原生

涉及命名空间这个配置的文件还挺多的,所以我们干脆通过一行脚本更改所有:

sed -i 's/namespace: default/namespace: nfs-provisioner/g' `grep -rl 'namespace: default' ./`

这行批量替换脚本直接将所有文件的命名空间都改过来了:
k8s安装nfs,kubernetes,容器,云原生

安装动态供给

之前我们已经修改好了所有的yaml资源清单文件,接下来我们直接执行安装。安装也是非常简单,直接通过下面一行命令就可以安装完成:

kubectl apply -k .

执行结果如图:
k8s安装nfs,kubernetes,容器,云原生

可以执行下面这个行命令查看是否部署完成:

kubectl get all -o wide -n nfs-provisioner

看到READY为 1/1 并且STATUS状态为 Running 那么动态供给就已经部署完毕:
k8s安装nfs,kubernetes,容器,云原生

可以执行下面命令查询安装的动态供应存储类的名字:

kubectl get storageclass

可以看到动态供应类的名字为 nfs-client
k8s安装nfs,kubernetes,容器,云原生

nfs动态供应就已经安装完毕了

如果你只打算安装动态供给的存储类,那么到这里就结束了哦,接下来是KubeSphere相关的内容

安装KubeSphere

下载KubeSphere的yaml资源清单文件

此次安装的是最新的 v3.4.0 的 KubeSphere,可以通过以下命令下载资源清单文件(共两个):

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

可以看到一共下载了两个文件:
k8s安装nfs,kubernetes,容器,云原生

其中这两个文件的作用:

  • kubesphere-installer.yaml: KubeSphere的安装器
  • cluster-configuration.yaml: KubeSphere的集群配置文件

我们需要修改一下 cluster-configuration.yaml 文件,还记得我们之前的那个存储类吗?我们记住这个名字:
k8s安装nfs,kubernetes,容器,云原生

然后我们开始修改这个文件:

vim cluster-configuration.yaml

可以看到后面注释的说明,所以我们将 nfs-client 这个存储类的名字写在后面:
k8s安装nfs,kubernetes,容器,云原生

安装KubeSphere

然后我们先创建 kubesphere-installer.yaml 里面的资源:

kubectl apply -f kubesphere-installer.yaml

可以看到创建了一些资源:
k8s安装nfs,kubernetes,容器,云原生

然后我们检查这个资源是否创建成功:

kubectl get pod -o wide -n kubesphere-system

同样当READY为 1/1 并且STATUS状态为 Running 的时候这个文件就执行完毕了:
k8s安装nfs,kubernetes,容器,云原生

接下来我们来执行 cluster-configuration.yaml 文件:

kubectl apply -f cluster-configuration.yaml

它虽然只有一个资源,但是里面还是要做很多事的:
k8s安装nfs,kubernetes,容器,云原生

执行下面命令检查KubeSphere的执行日志:

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

一段时间之后看到这个就是安装成功了:
k8s安装nfs,kubernetes,容器,云原生

因为我使用的是云服务器,所以我使用任何一个云服务器的公网IP地址+端口就能访问KubeSphere了,默认的用户名/密码是 admin/P@88w0rd
k8s安装nfs,kubernetes,容器,云原生

初次登陆需要修改admin用户的密码:
k8s安装nfs,kubernetes,容器,云原生

随后即可以登录到KubeSphere的首页了:
k8s安装nfs,kubernetes,容器,云原生

同时我们来到NFS服务器共享的目录,可以看到KubeSphere的持久化数据存储在这:
k8s安装nfs,kubernetes,容器,云原生

使用KubeSphere部署应用

创建项目

因为KubeSphere的管理是基于项目的,所以我们先要创建一个项目,先点击企业空间:
k8s安装nfs,kubernetes,容器,云原生

选择这个默认企业(一般是新建一个企业,这里就简化了):
k8s安装nfs,kubernetes,容器,云原生

然后点击项目->创建:
k8s安装nfs,kubernetes,容器,云原生

创建一个测试项目:
k8s安装nfs,kubernetes,容器,云原生

创建一个项目其实就是创建了一个命名空间:
k8s安装nfs,kubernetes,容器,云原生

部署MySQL

现在我们开始部署MySQL了,点击这个刚创建的项目:
k8s安装nfs,kubernetes,容器,云原生

然后依次点击 工作负载->有状态副本集->创建
k8s安装nfs,kubernetes,容器,云原生

填写部署一个测试的数据库然后点击下一步:
k8s安装nfs,kubernetes,容器,云原生

点击添加容器:
k8s安装nfs,kubernetes,容器,云原生

搜索指定的镜像并填写要创建的容器名字:
k8s安装nfs,kubernetes,容器,云原生

网下面拉可以设置CPU和内存限制还有需要使用的端口:
k8s安装nfs,kubernetes,容器,云原生

然后我们往下拉勾选环境变量,然后点击创建保密字典:
k8s安装nfs,kubernetes,容器,云原生

我们来设置mysql的密码,这个名字可以随便写,但是自己要记住:
k8s安装nfs,kubernetes,容器,云原生

类型选择默认后点击添加数据:
k8s安装nfs,kubernetes,容器,云原生

在这里设置mysql的root用户密码:
k8s安装nfs,kubernetes,容器,云原生

然后点击创建:
k8s安装nfs,kubernetes,容器,云原生

最后创建的Secret会自动填充,但是注意MySQL设置root用户密码的环境变量名不能自定义,是由Docker规定死的 MYSQL_ROOT_PASSWORD
k8s安装nfs,kubernetes,容器,云原生

点击勾选同步主机时区:
k8s安装nfs,kubernetes,容器,云原生

点击下面的对勾✅:
k8s安装nfs,kubernetes,容器,云原生

最后点击下一步:
k8s安装nfs,kubernetes,容器,云原生

到了下一步点击添加持久卷声明模版:
k8s安装nfs,kubernetes,容器,云原生

然后按照提示输入内容:
k8s安装nfs,kubernetes,容器,云原生

最后点击下一步:
k8s安装nfs,kubernetes,容器,云原生

点击创建:
k8s安装nfs,kubernetes,容器,云原生

点击部署的这个mysql进来:
k8s安装nfs,kubernetes,容器,云原生

可以看到容器状态并且可以快速伸缩容器:
k8s安装nfs,kubernetes,容器,云原生

当这个变绿了就代表创建好了:
k8s安装nfs,kubernetes,容器,云原生

然后点击容器右边的向下的小箭头,最后点击终端:
k8s安装nfs,kubernetes,容器,云原生

最后在终端中即可运行mysql相关的命令了:
k8s安装nfs,kubernetes,容器,云原生

这篇文章就先写到这里,更多的KubeSphere操作,可以登录KubeSphere的官网了解,关注我,我以后一会写更多相关知识的哦!
KubeSphere官网:https://www.kubesphere.io/zh/文章来源地址https://www.toymoban.com/news/detail-703844.html

到了这里,关于Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s 配置hadoop集群,nfs作为存储

    目录 一、简介 二、nfs服务nfs-provisioner配置 1、k8S服务器需安装nfs客户端 2、nfs服务端安装配置 3、使用nfs-provisioner动态创建PV  (文件已修改) 三、hadoop配置文件 1、# cat hadoop.yaml 2、# cat hadoop-datanode.yaml 3、# cat yarn-node.yaml  4、执行文件并查看 5、联通性验证  四、报错解决

    2024年02月10日
    浏览(17)
  • k8s 部署zookeeper-kafka,nfs作为存储

    目录 备注:nfs存储参考链接 一、zk镜像拉取并制作为自己镜像 二、编辑zookeeper.yaml文件  三、安装zk并检查状态  四、验证zookeeper集群可用性 五、制作对应版本的kafka镜像 六、编辑kafka.yaml文件 七、创建kafka并查看状态 八、zk与kafka连通性查看 九、错误解决 k8s 配置hadoop集群,

    2024年02月16日
    浏览(12)
  • K8S使用持久化卷存储到NFS(NAS盘)

    参考文章:K8S-v1.20中使用PVC持久卷 - 知乎 目录 1、概念: 1.1 基础概念 1.2 PV的配置 1.2.1 静态PV配置 1.2.2 动态PV配置 1.2.3 PVC与PV的绑定 1.2.4 PVC及PV的使用 2 部署PV及PVC 2.1 所有K8S机器都需要安装NFS程序 2.2 仅针对需要暴露文件服务的机器开启NFS服务         2.2.1 Linux为例开启NFS服

    2023年04月26日
    浏览(21)
  • k8s通过nfs-provisioner配置持久化存储

    一、nfs-client-provisioner简介 Kubernetes集群中NFS类型的存储没有内置 Provisioner。但是你可以在集群中为NFS配置外部Provisioner。 Nfs-client-provisioner是一个开源的NFS 外部Provisioner,利用NFS Server为Kubernetes集群提供持久化存储,并且支持动态购买PV。但是nfs-client-provisioner本身不提供NFS,需

    2024年02月11日
    浏览(12)
  • Kubernetes(K8S之存储)

    configMap功能在Kubernetes1.2版本中引入,许多应用程序会从配置文件,命令行参数或环境变量中读取配置信息。ConfigMap API给我们提供了向容器中注入配置信息的机制。ConfigMap可以被用来保存单个属性。 也可以用来保存整个配置文件或者JSON二进制大对象。 1,使用目录创建 $ls d

    2024年03月08日
    浏览(27)
  • Kubernetes(k8s)实战:深入详解Volume,详解k8s文件同步存储

    Volume官网:https://kubernetes.io/docs/concepts/storage/volumes/ On-disk files in a Container are ephemeral, which presents some problems for non-trivial applications when running in Containers. First, when a Container crashes, kubelet will restart it, but the files will be lost - the Container starts with a clean state. Second, when running Containers to

    2024年02月13日
    浏览(19)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(15)
  • Kubernetes/k8s的存储卷/数据卷

    k8s的存储卷/数据卷 容器内的目录和宿主机的目录挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会回复到初始状态 一旦回到初始状态,所有的后天编辑的文件都会消失 容器和节点之间创建一个可以持久化保存容器内文件

    2024年01月24日
    浏览(11)
  • 【Kubernetes】k8s使用minio作为对象存储

    k8s version:v1.20.15 minio version :v4.4.16 (1)安装kubectl-minio插件 自选minio-operaterd的版本下载包 minio-operater plugin 访问地址:http://ip:9090 1、sc-minio.yaml 创建 2、 创建所需的永久卷 序号 路径 容量 (G) 说明 所在节点 1 /data/1 5 租户使用 3个节点各1个 2 /data/log1 5 租户使用 3个节点各1个

    2024年04月09日
    浏览(23)
  • Kubernetes基础(二十三)-k8s持久化存储详解

    1.1 介绍 在容器中的磁盘文件是短暂的,当容器崩溃时,Kubelet会重新启动容器,但容器运行时产生的数据文件都将会丢失,之后容器会以最干净的状态启动。另外,当一个Pod运行多个容器时,各个容器可能需要共享一些文件,诸如此类的需求都可以使用Volume解决。Pod只需要通

    2024年03月17日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包