1. 获取资料 网址: https://blog.csdn.net/xts_huangxin/article/details/51494472  感谢原作者 这里面 按照自己的机器情况进行了学习模仿 并且mark一下.

2. 下载yaml 文件:

https://github.com/FlyingShit-XinHuang/my-doc/blob/master/k8s/pv%26pvc/nfs.zip

3. 解压缩文件,然后根据实际情况进行修改.

4. 创建NFS

mkdir -p /nfs/k8s
创建目录
chmod -R /nfs
修改权限
vim /etc/exports
增加内容
/nfs/k8s *(rw,insecure,sync,no_subtree_check,no_root_squash)
保存.
exportfs -r
让文件生效
systemctl enable nfs
systemctl enable rpcbind
systemctl restart nfs
systemctl restart rpcbind
启动服务

5. 创建PV 用到的yaml文件进行修改后的为:

spec 里面定义相关的内容. nfs 里面对应的 server 制定 以及 path 下面 写好了nfs的目录

创建语句为
kubectl create -f nfs-pv.yaml

yaml文件为

apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 10.24.103.1
path: "/nfs/k8s"

6. 创建PVC

据说 capacity 里面的存储大小应该保持一致 ,避免出现问题

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi

7. 进行测试验证, github 里面是定义了 一个 busybox 来写入 文件 nginx 来读取 当前目录的index.html的值

首先 busybox 相关的内容为

apiVersion: v1
kind: ReplicationController
metadata:
name: nfs-busybox
spec:
replicas:
selector:
name: nfs-busybox
template:
metadata:
labels:
name: nfs-busybox
spec:
containers:
- image:busybox
command:
- sh
- -c
- 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
imagePullPolicy: IfNotPresent
name: busybox
volumeMounts:
# name must match the volume name below
- name: nfs
mountPath: "/mnt"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs

创建 nginx 前段网页

apiVersion: v1
kind: ReplicationController
metadata:
name: nfs-web
spec:
replicas:
selector:
role: web-frontend
template:
metadata:
labels:
role: web-frontend
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort:
volumeMounts:
# name must match the volume name below
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs

创建services

kind: Service
apiVersion: v1
metadata:
name: nfs-web
spec:
ports:
- port:
selector:
role: web-frontend

然后

kubectl get service
获取信息 [root@k8smaster01 ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend NodePort 10.100.8.215 <none> :/TCP 35d
kubernetes ClusterIP 10.96.0.1 <none> /TCP 37d
nfs-web ClusterIP 10.103.125.236 <none> /TCP 1h
redis-master ClusterIP 10.111.216.233 <none> /TCP 35d
redis-slave ClusterIP 10.107.12.137 <none> /TCP 35d

然后测试验证

命令 :curl 10.103.125.236
显示结果:
[root@k8smaster01 ~]# curl 10.103.125.236
Mon Jun :: UTC
nfs-busybox-l596c
[root@k8smaster01 ~]#

7. 学习用到的其他命令

kubectl create -f *.yaml
创建资源
kubectl delete pv pvname
kubectl delete pvc pvcname
删除pv和pvc 但是如果 有 pod 在引用他们的话无法删除需要删除rc 才可以
kubectl delete pod podname
删除pod k8s 会瞬间再启动一个起来. 如果没有images 重新pull一下 用这种方式很快就能从containercreating 变成 running状态. kubectl delete rc rcname
能够删除rc定义 保证pv也被完整性的删除 kubectl get service
kubectl get pod
kubectl get nodes
kubectl get rc
kubectl get rc -n kube-system (选择显示namespace)

K8S 使用NFS 创建PV和PVC的例子 学习From https://blog.csdn.net/xts_huangxin/article/details/51494472的更多相关文章

  1. git创建使用1https://blog.csdn.net/Hanani_Jia/article/details/77950594

    这篇文章是我自己写的关于GitHub的内容,从我刚听到这个直到设置成功每一步都有详细的步骤来解释,其中有一些截图或者代码来自于网上. 首先,我先对GitHub来一个简单的介绍,GitHub有一个很强大 ...

  2. 怎样创建.NET Web Service http://blog.csdn.net/xiaoxiaohai123/article/details/1546941

    为什么需要Web Service 在通过internet网购买商品后,你可能对配送方式感到迷惑不解.经常的情况是因配送问题找配送公司而消耗你的大量时间,对于配送公司而言这也不是一项增值服务. 为了解决 ...

  3. linux进程监控和简单的重启&服务的创建 参考自http://blog.csdn.net/lockheed_hong/article/details/73549837

    脚本文件 该脚本实现了一个检测进程是否存在,不存在的情况下重启进程并且记录日志. #! /bin/sh proc_name="console/queue/gift.php" # 进 ...

  4. k8s数据持久化,pv和pvc

    k8s中为什么使用存储: k8s中的副本控制器保证了pod的始终存储,却保证不了pod中的数据.只有启动一个新pod的,之前pod中的数据会随着容器的删掉而丢失! pv和pvc的概念: Persist ...

  5. K8s存储卷、pv和pvc的使用

    emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...

  6. kubernetes存储类与PV与PVC关系及实践

    StorageClass & PV & PVC关系图 Volumes是最基础的存储抽象,其支持多种类型,包括本地存储.NFS.FC以及众多的云存储,我们也可以编写自己的存储插件来支持特 ...

  7. pv绑定pvc

    创建pvapiVersion: v1kind: PersistentVolumemetadata: name: pv003 labels: app: vnc003 namespace: vnc-spa ...

  8. [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置

    所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...

  9. kubernetes创建资源对象yaml文件例子--pod详解

    apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: ...

随机推荐

  1. day1-课堂笔记

    venv   执行方法: 1,pycharm执行 2,cmd命令窗口执行:python D:\PyCharmProjects\MyProject\day1.py 回车   java原理: HW.jav ...

  2. jqgrid 对编辑行填写的内容做格式验证

    有时,我们需要在基于jqgrid表格编辑行的单元格做规范验证.jqgrid提供有支持,通过设置字段的editrules属性来约束格式. 约束方式: 1.内置的约束参数 (required: true, ...

  3. [浅谈CSS核心概念] CSS布局模型:float和position

    1.流动模型 HTML元素在默认情况下都是按照"流动模型"进行布局的,网上也有人称之为"普通流"."文档流"之类的.这种布局模式的特点在于: ...

  4. 20155308《网络对抗》Exp6 信息搜集与漏洞扫描

    20155308<网络对抗>Exp6 信息搜集与漏洞扫描 原理与实践说明 实践内容 本实践的目标是掌握信息搜集的最基础技能.具体有: 各种搜索技巧的应用 DNS IP注册信息的查询 基本的 ...

  5. pandas 索引与列相互转化

    1. 准备数据 import pandas as pd from io import StringIO csv_txt = '''"date","player1" ...

  6. 【转载】C++文件读写详解(ofstream,ifstream,fstream)

    原文:http://blog.csdn.net/kingstar158/article/details/6859379 在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,f ...

  7. vue中的单项数据流

    在VUE中,数据从父组件流向(传递)给子组件,只能单向绑定,在子组件内部不应该修改父组件传递过来的数据. 如果必须修改子组件中接收的数据,可以: 1. 作为data中局部数据,进行改动 2. 作为子组 ...

  8. node.js学习笔记(四)——EventEmitter

    error 事件 EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到异常的时候通常会触发 error 事件.当 error 被触发时,EventEmitter ...

  9. NetBeans 插件开发简介

    希望 NetBeans 为您提供更多功能吗? 您希望倾心投入到 NetBeans 的开发中,并希望它能激发您开发另一个应用程序的热情.您希望聆听音乐.浏览网页.查看邮件.存储喜欢的 URL,以及维护日 ...

  10. Jmeter(八)-发送JDBC请求

    下午花了两个小时研究了一下Jmeter发送JDBC请求,现在把基本操作流程分享一下. 做JDBC请求,首先需要两个jar包:mysql驱动-mysql-connector-java-5.1.13-bi ...