08-kubernetesストレージボリューム
9852 ワード
目次ストレージボリューム emptyDirテストおよび の使用
Podテストは共有NFSに掛かっている テストリスト を書くテスト pv, pvc いくつかのPV を作成テストのPodとPVC を作成
4つに分けられます.ステータスあり、 を格納必要がある.ステータスあり、 を保存する必要はありません.ステータスなし、 を記憶する必要がある.ステータスなし、 を保存する必要はありません.
Podはローカルのディスクまたはメモリにマウントされ、emptyDIrと呼ばれ、一時的に空のディレクトリと呼ばれ、Podが削除されるにつれて削除されます.
hostPathホストディレクトリは、Podコンテナにホストディレクトリデータが表示されます.
分散ストレージ:
glusterfs, ceph-rbd, cephfs
emptyDirは、ローカルディスクまたはメモリが使用することを示す(
対応するインベントリファイルを作成するには、次の手順に従います.
作成
アクセスPod対応ipのテスト
書き込みもアクセスも正常で、所望の効果を達成していることがわかります.
今回のテストでは、マスターノードにNFSをインストールし、以下のように構成しました.
テストの開始
に注意
テストページへの書き込み
ビューの作成
Podがnode 03ノードに割り当てられていることがわかります
アクセスのテスト
Podを削除して再度テストを作成
PVはクラスタ資源に属し、クラスタ内のすべての名称空間が利用可能であり、全行程
PVCは名称空間レベル、すなわち標準資源類であり、全行程
PodではPVCを定義、その後は定義容量の大きさに応じて、PVCはいずれかのPV以上に自動的にバインドされる.
ビューの作成
PVC PVステータスの作成と表示
転載先:https://www.cnblogs.com/winstom/p/11308450.html
ストレージボリューム
4つに分けられます.
Podはローカルのディスクまたはメモリにマウントされ、emptyDIrと呼ばれ、一時的に空のディレクトリと呼ばれ、Podが削除されるにつれて削除されます.
hostPathホストディレクトリは、Podコンテナにホストディレクトリデータが表示されます.
分散ストレージ:
glusterfs, ceph-rbd, cephfs
emptyDirのテストと使用
emptyDirは、ローカルディスクまたはメモリが使用することを示す(
,
).対応するインベントリファイルを作成するには、次の手順に従います.
[root@master volume]# cat pod-vol-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
tier: frontend
annotations:
jubaozhu.com/created-by: "cluster admin"
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/ # myapp , html /usr/share/nginx/html/
- name: busybox
image: busybox:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: html
mountPath: /data/ # busybox ,, html /data/
command: ["/bin/sh", "-c", "while true; do echo $$(date) >> /data/index.html; sleep 2; done"] # /data/index.html , myapp web
volumes:
- name: html # html volumes
emptyDir: {} # , emptyDir medium sizeLimit 。
作成
[root@master volume]# kubectl apply -f pod-vol-demo.yaml
pod/pod-demo created
[root@master volume]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-demo 2/2 Running 0 29s 10.244.2.25 node02.kubernetes
アクセスPod対応ipのテスト
[root@master volume]# curl 10.244.2.25
Thu Aug 1 08:41:18 UTC 2019
Thu Aug 1 08:41:20 UTC 2019
Thu Aug 1 08:41:22 UTC 2019
Thu Aug 1 08:41:24 UTC 2019
Thu Aug 1 08:41:26 UTC 2019
Thu Aug 1 08:41:28 UTC 2019
Thu Aug 1 08:41:30 UTC 2019
Thu Aug 1 08:41:32 UTC 2019
Thu Aug 1 08:41:34 UTC 2019
Thu Aug 1 08:41:36 UTC 2019
Thu Aug 1 08:41:38 UTC 2019
Thu Aug 1 08:41:40 UTC 2019
Thu Aug 1 08:41:42 UTC 2019
Thu Aug 1 08:41:44 UTC 2019
Thu Aug 1 08:41:46 UTC 2019
Thu Aug 1 08:41:48 UTC 2019
Thu Aug 1 08:41:50 UTC 2019
Thu Aug 1 08:41:52 UTC 2019
書き込みもアクセスも正常で、所望の効果を達成していることがわかります.
Podテストは共有NFSに掛かっている
今回のテストでは、マスターノードにNFSをインストールし、以下のように構成しました.
[root@master volume]# cat /etc/exports
/data/volumes *(rw,no_root_squash)
テストの開始
[root@master data]# systemctl start nfs
[root@master data]# systemctl start rpcbind
[root@master data]# showmount -e localhost
Export list for localhost:
/data/volumes 0.0.0.0/0
に注意
`nfs-utils` , Pod , , `mount.nfs`
テストページへの書き込み
[root@master volume]# echo 'NFS stor01' > /data/volumes/index.html
テストリストを書く
[root@master volume]# cat pod-vol-nfs.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-vol-nfs
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
nfs:
path: /data/volumes
server: 10.0.20.20
ビューの作成
[root@master volume]# kubectl apply -f pod-vol-nfs.yaml
pod/pod-vol-nfs created
[root@master volume]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-hostpath-vol 1/1 Running 0 88m 10.244.3.32 node01.kubernetes
pod-vol-nfs 1/1 Running 0 5s 10.244.1.29 node03.kubernetes
Podがnode 03ノードに割り当てられていることがわかります
テスト
アクセスのテスト
[root@master volume]# curl 10.244.1.29
NFS stor01 #
Podを削除して再度テストを作成
[root@master volume]# kubectl delete -f pod-vol-nfs.yaml
pod "pod-vol-nfs" deleted
[root@master volume]# kubectl apply -f pod-vol-nfs.yaml
pod/pod-vol-nfs created
[root@master volume]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-hostpath-vol 1/1 Running 0 90m 10.244.3.32 node01.kubernetes
# Pod node02
pod-vol-nfs 1/1 Running 0 2s 10.244.2.27 node02.kubernetes
[root@master volume]# curl 10.244.2.27
NFS stor01 #
pv, pvc
PVはクラスタ資源に属し、クラスタ内のすべての名称空間が利用可能であり、全行程
PersistentVolume
である.PVCは名称空間レベル、すなわち標準資源類であり、全行程
PersistentVolumeClaim
である.PodではPVCを定義、その後は定義容量の大きさに応じて、PVCはいずれかのPV以上に自動的にバインドされる.
いくつかのPVを作成
[root@master volumes]# mkdir /data/volumes/v{1,2,3,4,5} -p
[root@master volume]# cat pv-demo.yaml
apiVersion: v1
kind: PersistentVolume #
metadata:
name: pv001 # PV
labels:
name: pv001 #
spec:
nfs:
path: /data/volumes/v1 # PV
server: 10.0.20.20
accessModes: ["ReadWriteMany", "ReadWriteOnce"] #
capacity:
storage: 2Gi # PV
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv002
labels:
name: pv002
spec:
nfs:
path: /data/volumes/v2
server: 10.0.20.20
accessModes: ["ReadWriteMany"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv003
labels:
name: pv003
spec:
nfs:
path: /data/volumes/v3
server: 10.0.20.20
accessModes: ["ReadWriteMany", "ReadWriteOnce"]
capacity:
storage: 20Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv004
labels:
name: pv004
spec:
nfs:
path: /data/volumes/v4
server: 10.0.20.20
accessModes: ["ReadWriteMany", "ReadWriteOnce"]
capacity:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv005
labels:
name: pv005
spec:
nfs:
path: /data/volumes/v5
server: 10.0.20.20
accessModes: ["ReadWriteMany", "ReadWriteOnce"]
capacity:
storage: 10Gi
ビューの作成
[root@master volume]# kubectl apply -f pv-demo.yaml
persistentvolume/pv001 created
persistentvolume/pv002 created
persistentvolume/pv003 created
persistentvolume/pv004 created
persistentvolume/pv005 created
[root@master volume]# kubectl get pv -o wide
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pv001 2Gi RWO,RWX Retain Available 51s Filesystem
pv002 5Gi RWX Retain Available 29s Filesystem
pv003 20Gi RWO,RWX Retain Available 29s Filesystem
pv004 10Gi RWO,RWX Retain Available 29s Filesystem
pv005 10Gi RWO,RWX Retain Available 51s Filesystem
テスト用のPodとPVCの作成
[root@master volume]# cat pod-vol-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim # PVC
metadata:
name: mypvc
namespace: default #
spec:
accessModes: ["ReadWriteMany"] #
resources:
requests:
storage: 6Gi #
---
apiVersion: v1
kind: Pod
metadata:
name: pod-vol-pvc
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
persistentVolumeClaim:
claimName: mypvc
PVC PVステータスの作成と表示
[root@master volume]# kubectl apply -f pod-vol-pvc.yaml
persistentvolumeclaim/mypvc created
pod/pod-vol-pvc created
[root@master volume]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-vol-pvc 1/1 Running 0 3s
[root@master volume]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mypvc Bound pv005 10Gi RWO,RWX 36s # PVC PV,PV pv005, 10G
[root@master volume]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv001 2Gi RWO,RWX Retain Available 9m37s
pv002 5Gi RWX Retain Available 9m15s
pv003 20Gi RWO,RWX Retain Available 9m15s
pv004 10Gi RWO,RWX Retain Available 9m15s
pv005 10Gi RWO,RWX Retain Bound default/mypvc 9m37s # Bound, Retain
転載先:https://www.cnblogs.com/winstom/p/11308450.html