Kubernetes从0到1-第二篇 安装NFS Provisioner存储置备程序

2024-05-31 07:38

本文主要是介绍Kubernetes从0到1-第二篇 安装NFS Provisioner存储置备程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 架构
    • 准备工作
      • kubectl自动补全
      • 安装helm
    • 部署NFS服务器
    • 使用helm部署NFS Subdir External Provisioner
    • 测试
      • 自定义存储类
      • 创建一个tomcat应用进行测试

想必大家对PV、PVC的概念都不会陌生,它们的好处也应该了解,对静态卷配置、动态卷配置也应该有了解,所以这里不再做讲解。熟悉ACK的都知道,ACK集群有flexvolume、CSI存储置备程序,现在我们基于NFS服务器搭建一套自己的存储置备程序。

架构

NFS subdir external provisioner 可动态为kubernetes提供pv卷,是Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储。持久卷目录的命名规则为: n a m e s p a c e − {namespace}- namespace{pvcName}-${pvName}。
在这里插入图片描述

准备工作

kubectl自动补全

yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

安装helm

wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz
tar -zxvf helm-v3.3.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version

命令补全

vim ~/.bashrc
source <(helm completion bash)source ~/.bashrc

部署NFS服务器

yum -y install nfs-utils rpcbindmkdir -p /nfs-data
chmod -R 777 /nfs-datacat >> /etc/exports << EOF
/nfs-data *(rw,no_root_squash,sync)
EOFexportfs -arv
exportfs -s# 启动,注意:先启动rpc服务,再启动nfs服务systemctl start rpcbind
systemctl enable rpcbindsystemctl start nfs-server
systemctl enable nfs-server

kubernetes集群所有节点安装nfs客户端

yum -y install nfs-utils

使用helm部署NFS Subdir External Provisioner

为了操作方便,我直接在master上操作。

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/helm repo updatehelm search repo nfs-subdir-external-provisioner
NAME                                                    CHART VERSION   APP VERSION     DESCRIPTION
nfs-subdir-external-provisioner/nfs-subdir-exte...      4.0.13          4.0.2           nfs-subdir-external-provisioner is an automatic...helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --version 4.0.13tar -xvf nfs-subdir-external-provisioner-4.0.13.tgzcd nfs-subdir-external-provisioner/

修改values.yaml

...
replicaCount: 2 # 修改副本数image:repository: willdockerhub/nfs-subdir-external-provisioner # 修改镜像仓库tag: v4.0.2nfs:server: 192.168.238.145  # nfs服务器地址path: /nfs-data  # 路径storageClass:defaultClass: true  # 开启默认存储类
...

开始安装,将其安装至kube-system命名空间下

helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner -f /root/nfs-subdir-external-provisioner/values.yaml

查看安装

kubectl get pods -n kube-system
NAME                                               READY   STATUS    RESTARTS   AGE
...
nfs-subdir-external-provisioner-677789d968-lsvp5   1/1     Running   0          21s
nfs-subdir-external-provisioner-677789d968-xvgs8   1/1     Running   0          21s

查看是否创建了默认存储类

kubectl get sc
NAME                   PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client (default)   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   64s

测试

自定义存储类

创建yaml文件

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: managed-nfs-storage
provisioner: cluster.local/nfs-subdir-external-provisioner  # 可以是其他名字,但是必须是deployment环境变量 PROVISIONER_NAME 的值
parameters:archiveOnDelete: "true"  # false表示不存档,即删除数据,true表示存档,即重命名路径
allowVolumeExpansion: true  # 是否允许pvc扩容

查看创建的storageClass

kubectl get sc
NAME                   PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage    cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   4s
nfs-client (default)   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   39m

创建一个tomcat应用进行测试

helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo updatehelm install tomcat bitnami/tomcat \--namespace=test01 \--create-namespace \--set global.storageClass=managed-nfs-storage \  # 此处使用自定义的storageClass,也可用使用默认的--set replicaCount=2 \--set service.type=NodePort \--set service.nodePort=30089
  1. 查看是否自动创建pv
kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM           STORAGECLASS          REASON   AGE
pvc-6300d49b-f3f1-4874-ad77-f174c0acf48f   8Gi        RWO            Delete           Bound    test01/tomcat   managed-nfs-storage            27s
  1. 查看应用是否创建pvc
kubectl get pvc -n test01
NAME     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          AGE
tomcat   Bound    pvc-6300d49b-f3f1-4874-ad77-f174c0acf48f   8Gi        RWO            managed-nfs-storage   40s
  1. 查看pod状态
kubectl get pods -n test01 -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP           NODE      NOMINATED NODE   READINESS GATES
tomcat-697685bcd9-mzdqn   1/1     Running   0          4m37s   10.244.1.6   k8s-n01   <none>           <none>
tomcat-697685bcd9-z9cmt   1/1     Running   0          4m37s   10.244.2.7   k8s-n02   <none>           <none>
  1. 查看service
kubectl get svc -n test01
NAME     TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
tomcat   NodePort   10.1.161.183   <none>        80:30089/TCP   5m33s
  1. 访问tomcat

http://192.168.238.147:30089/

如下图:
在这里插入图片描述

  1. 到nfs服务器上验证文件是否存储归档
tree /nfs-data/ -L 3
/nfs-data/
├── archived-test01-tomcat-pvc-f9bca252-1150-4cd9-bb9b-c29f8c6b2042
└── test01-tomcat-pvc-6300d49b-f3f1-4874-ad77-f174c0acf48f└── webapps├── docs├── examples├── host-manager├── manager└── ROOT8 directories, 0 files

参考文档:
[1]: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

这篇关于Kubernetes从0到1-第二篇 安装NFS Provisioner存储置备程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017576

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能