Kubernetes pv-pvc-nfs-service综合实验

这篇具有很好参考价值的文章主要介绍了Kubernetes pv-pvc-nfs-service综合实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

实验:pv-pvc-nfs-service综合实验

实验环境

实验描述

实验拓扑图: 

实验步骤:

1、修改nfs服务器的主机名:

2、搭建nfs服务器:(131条消息) 搭建NFS服务器_搭建nfs存储_Claylpf的博客-CSDN博客

3、测试k8s上所有节点服务器是否可以挂载到NFS服务器上去

4、在master机器上创建pv使用nfs服务器上的共享目录

5、在master机器上创建pvc使用pv

6、在master机器上创建pod使用pvc

7、测试去访问它(在node1上去访问)

8、使用deployment方式部署pod

9、创建一个service发布我们的Pod

10、测试访问


实验:pv-pvc-nfs-service综合实验

实验环境

4台centos7虚拟机 (都已经搭建好k8s) 和一台准备搭建nfs服务器的centos7虚拟机

实验描述

使用pv持久卷和pvc持久卷申请结合nfs将内网的数据发布出去,让外网的用户可以访问到内网的数据,更深刻的理解pv、pvc和nfs的使用流程,有更深刻的体会。

实验拓扑图: 

Kubernetes pv-pvc-nfs-service综合实验,kubernetes,容器,云原生

实验步骤:

1、修改nfs服务器的主机名:

[root@nginx-lb1 ~]# hostnamectl set-hostname nfs
[root@nginx-lb1 ~]# su - root
上一次登录:一 7月 17 00:16:08 CST 2023从 192.168.2.43pts/1 上
[root@nfs ~]# 

2、搭建nfs服务器:(131条消息) 搭建NFS服务器_搭建nfs存储_Claylpf的博客-CSDN博客

[root@nfs ~]# ps aux|grep nfs
root       3248  0.0  0.0      0     0 ?        S<   00:36   0:00 [nfsd4_callbacks]
root       3254  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3255  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3256  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3257  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3258  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3259  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3260  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3261  0.0  0.0      0     0 ?        S    00:36   0:00 [nfsd]
root       3271  0.0  0.0 112824   988 pts/1    R+   00:36   0:00 grep --color=auto nfs
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# mkdir /web
[root@nfs ~]# cd /web/
[root@nfs web]# ls
[root@nfs web]# exportfs -rv
exporting 192.168.2.0/24:/web

成功搭建NFS服务器

3、测试k8s上所有节点服务器是否可以挂载到NFS服务器上去

[root@master ~]# mkdir /sanchuang
[root@master ~]# mount 192.168.2.77:/web /sanchuang      #挂载命令
[root@master ~]# df|grep web
192.168.2.77:/web       17811456 1769728 16041728   10% /sanchuang
[root@master ~]# 

4、在master机器上创建pv使用nfs服务器上的共享目录

创建pv-nfs.yaml文件

[root@master pv]# vim pv-nfs.yaml
[root@master pv]# cat pv-nfs.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: sc-nginx-pv
  labels:
    type: sc-nginx-pv
spec:
  capacity:
    storage: 5Gi 
  accessModes:
    - ReadWriteMany
  storageClassName: nfs         #pv对应的名字
  nfs:
    path: "/web"       #nfs共享的目录
    server: 192.168.2.77   #nfs服务器的ip地址
    readOnly: false   #访问模式
[root@master pv]# 

创建Pod

[root@master pv]# kubectl apply -f pv-nfs.yaml 
persistentvolume/sc-nginx-pv created
[root@master pv]# 

查看效果

[root@master pv]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                   STORAGECLASS   REASON   AGE
sc-nginx-pv      5Gi        RWX            Retain           Available                           nfs                     23s
task-pv-volume   10Gi       RWO            Retain           Bound       default/task-pv-claim   manual                  14h
[root@master pv]# 

5、在master机器上创建pvc使用pv

创建pvc使用pv

[root@master pv]# vim pvc-nfs.yaml
[root@master pv]# cat pvc-nfs.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sc-nginx-pvc
spec:
  accessModes:
  - ReadWriteMany      
  resources:
     requests:
       storage: 1Gi
  storageClassName: nfs #使用nfs类型的pv
[root@master pv]# 

创建Pod使用pvc

[root@master pv]# kubectl apply -f pvc-nfs.yaml 
persistentvolumeclaim/sc-nginx-pvc created
[root@master pv]# 

查看效果

[root@master pv]# kubectl get pvc
NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
sc-nginx-pvc    Bound    sc-nginx-pv      5Gi        RWX            nfs            57s
task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual         13h
[root@master pv]# 

6、在master机器上创建pod使用pvc

创建pod使用pvc

[root@master pv]# vim pod-nfs.yaml
[root@master pv]# cat pod-nfs.yaml 
apiVersion: v1
kind: Pod      #这里使用pod方式去部署,下面也会介绍用deployment方式部署
metadata:
  name: sc-pv-pod-nfs
spec:
  volumes:
    - name: sc-pv-storage-nfs
      persistentVolumeClaim:
        claimName: sc-nginx-pvc
  containers:
    - name: sc-pv-container-nfs
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: sc-pv-storage-nfs
[root@master pv]# 

应用和验证

[root@master pv]# kubectl apply -f pod-nfs.yaml 
pod/sc-pv-pod-nfs created
[root@master pv]# kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
my-nginx-575db987b-d74hs   1/1     Running   0          12h   10.244.1.8   node1   <none>           <none>
my-nginx-575db987b-rmnvh   1/1     Running   0          16h   10.244.3.5   node3   <none>           <none>
my-nginx-575db987b-w2xvf   1/1     Running   0          16h   10.244.2.5   node2   <none>           <none>
sc-pv-pod-nfs              1/1     Running   0          13s   10.244.1.9   node1   <none>           <none>
test                       1/1     Running   0          13h   10.244.2.7   node2   <none>           <none>
[root@master pv]# 

7、测试去访问它(在node1上去访问)

[root@node1 sanchuang]# curl 10.244.1.12
Welcome tow sanchuang!
[root@node1 sanchuang]# 

在nfs服务器上修改共享目录的内容,然后再重新在node机器上访问,观察是否变化,若跟nfs服务器上的共享目录一样,则证明成功

8、使用deployment方式部署pod

[root@master pv]# cat pod-nfs-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: claylpf-nginx
spec:
  replicas: 5  #创建5个副本
  selector:
    matchLabels:
      app: claylpf-nginx
  template:
    metadata:
      labels:
        app: claylpf-nginx
    spec:
     volumes:
     - name: sc-pv-storage-nfs-2
       persistentVolumeClaim:
          claimName: sc-nginx-pvc
     containers:
     - name: sc-pv-container-nfs-2
       image: nginx
       ports:
        - containerPort: 80
          name: "http-server"
       volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: sc-pv-storage-nfs-2
[root@master pv]# 

应用和查看

[root@master pv]# kubectl apply -f pod-nfs-deploy.yaml 
deployment.apps/nginx-deployment created
[root@master pv]# kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-nginx-575db987b-d74hs            1/1     Running   0          13h   10.244.1.8    node1   <none>           <none>
my-nginx-575db987b-rmnvh            1/1     Running   0          17h   10.244.3.5    node3   <none>           <none>
my-nginx-575db987b-w2xvf            1/1     Running   0          17h   10.244.2.5    node2   <none>           <none>
nginx-deployment-849bdd77bb-5p6ms   1/1     Running   0          21s   10.244.1.14   node1   <none>           <none>
nginx-deployment-849bdd77bb-h5vvr   1/1     Running   0          22s   10.244.3.6    node3   <none>           <none>
nginx-deployment-849bdd77bb-r7cdk   1/1     Running   0          21s   10.244.3.7    node3   <none>           <none>
nginx-deployment-849bdd77bb-whcn2   1/1     Running   0          22s   10.244.1.13   node1   <none>           <none>
nginx-deployment-849bdd77bb-z6r52   1/1     Running   0          22s   10.244.2.8    node2   <none>           <none>
test                                1/1     Running   0          14h   10.244.2.7    node2   <none>           <none>

9、创建一个service发布我们的Pod

[root@master pv]# cat pod-nfs-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-nfs
  labels:
    run: my-nginx-nfs
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 80
    protocol: TCP
    name: http
  selector:
    app: claylpf-nginx     #注意这里要用app的形式,跟前面的nfs-pod文件对应,有些使用方法是run,不要搞错了
[root@master pv]# 

应用和查看

[root@master pv]# kubectl apply -f pod-nfs-service.yaml 
[root@master pv]# kubectl get service
NAME           TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes     ClusterIP   10.0.0.1      <none>        443/TCP          18h
my-nginx-nfs   NodePort    10.10.6.200   <none>        8080:31058/TCP   72s
[root@master pv]# 

10、测试访问

随意访问一台主机的ip地址的31058端口,看是否出现画面

Kubernetes pv-pvc-nfs-service综合实验,kubernetes,容器,云原生文章来源地址https://www.toymoban.com/news/detail-604621.html

到了这里,关于Kubernetes pv-pvc-nfs-service综合实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 使用k8s部署Mysql实例~hostpath,nfs服务器,PV和PVC持久化

    1.基础存储的分类: 分类 说明 EmptyDir EmptyDir是在Pod 被分配到Node时 创建的, 无须手动指定 ,当 Pod销毁时 , EmptyDir中的数据也会被 永久删除 HostPath HostPath就是将Node主机中一个实际目录挂载到Pod中,保证 Pod销毁 了,但是 数据依旧可以存在 于Node主机上 NFS NFS是一个网络文件

    2024年02月20日
    浏览(30)
  • 【Kubernetes存储篇】持久化存储PV、PVC详解

    官方中文参考文档: 1、PV、PVC是什么? PersistentVolume(PV) 是群集中的一块存储,可以是NFS、iSCSI、本地存储等,由管理员配置或使用存储类动态配置 。 PV定义了存储的容量、访问模式、持久化存储的类型等属性。PV的生命周期是独立于Pod的,即使Pod被删除,PV仍然存在,可以

    2024年02月09日
    浏览(34)
  • Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

    先来个 一句话总结 :PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得 可控 ,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去 自动化创建 PV的组件。所有Pod使用存储只有一个原则: 先规划  →  后申请  →  再使用 。 1.1 PV概念

    2024年02月20日
    浏览(29)
  • Kubernetes(K8S)使用PV和PVC做存储安装mysql

    首先你需要一个k8s环境,可以参考我写的文章:https://blog.csdn.net/m0_51510236/article/details/130842122 我们可以简单看一下官网的描述:https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#introduction 持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先制备, 或者使用

    2024年02月03日
    浏览(26)
  • 【云原生-Kubernetes篇】K8s的存储卷/数据卷+PV与PVC

    容器部署过程中一般有以下三种数据: • 启动时需要的 初始数据 :例如配置文件 (init container) • 启动过程中产生的 临时数据 :该临时数据需要多个容器间共享 • 启动过程中产生的 持久化数据 :例如MySQL的data目录 (业务数据–很重要) 而容器中的文件在磁盘上是 临时

    2024年02月05日
    浏览(26)
  • [Kubernetes]5. k8s集群StatefulSet详解,以及数据持久化(SC PV PVC)

    前面通过 deployment 结合 service 来部署 无状态的应用 ,下面来讲解通过 satefulSet 结合 service 来部署 有状态的应用 无状态: 无状态 (stateless) 、牲畜 (cattle) 、无名 (nameless) 、可丢弃 (disposable) 有状态: 有状态 (stateful) 、宠物 (pet) 、具有名 (haviing name) 、不可丢弃 (non-disposable) St

    2024年02月01日
    浏览(29)
  • PV、PVC的知识

    PV : 持久化卷的意思,是对底层的共享存储的一种抽象 PVC(Persistent Volume Claim)是持久卷请求于存储需求的一种声明(PVC其实就是用户向kubernetes系统发出的一种资源需求申请。) 使用了PV和PVC之后,工作可以得到进一步的细分: 存储:存储工程师维护 PV: kubernetes管理员维护

    2024年02月06日
    浏览(21)
  • PV、PVC介绍和使用

       PersistentVolume (PV):  PV是集群中配置好的一个网络存储,是集群的全局资源,不属于任何namespace;PV无法与pod直接关联,它的设计是用来和存储对接的,所以用于绑定后端存储,写入PV的数据最终都是存放在后端存储服务器上  PersistentVolumeClaim (PVC):PVC可以直接被pod挂载,同

    2023年04月25日
    浏览(22)
  • 搭建DHCP、PXE、DNS、HTTP以及NFS服务综合实验的超详细讲解

    (1)准备 3台虚拟机,一台Windows虚拟机PC1(不限制win7或者win10) ; 一台Linux服务器server1(IP是172.16.100.100/24)、一台网卡为DHCP类型的Linux服务器server2和一台空虚拟机server3 。虚拟机网络使用仅主机模式。 (2) server1提供DHCP服务给PC1和server2 分配对应网段的IP地址。 (3) se

    2024年02月03日
    浏览(26)
  • 浅析kubernates的pv和pvc

    最近,在看许多Kubenates的相关文章的时候,了解到了一个概念,是我之前不清楚的。 – PVPVC 。那么今天就总结下这几天的收获。 在总结之前我先解释下PV和PVC是什么意思。 PV:Persistent Volume PVC:Persistent Volume Claim 【通俗字面理解】 从英文的解释上看,大致可以理解为PV就是

    2024年02月08日
    浏览(19)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包