kubernetes:volumes 配置管理

1. 卷的作用

在这里插入图片描述

2. kubernetes支持的卷

在这里插入图片描述

3. emptyDir的使用场景

在这里插入图片描述

[kubeadm@server2 volumes]$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: vol1
spec:
  containers:
  - image: busyboxplus
    name: vm1
    command: ["sleep","300"]
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  - name: vm2
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: 
      medium: Memory
      sizeLimit: 100Mi

[kubeadm@server2 volumes]$ kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
vol1   2/2     Running   0          2m26s

vm1和vm2挂载在同一个地方cache-volume

[kubeadm@server2 volumes]$ kubectl describe pod vol1 
Containers:
  vm1:
    Mounts:
      /cache from cache-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-64lq2 (ro)
  vm2:
    Mounts:
      /usr/share/nginx/html from cache-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-64lq2 (ro)

[kubeadm@server2 volumes]$ kubectl exec -it vol1 -- sh
Defaulting container name to vm1.
Use 'kubectl describe pod/vol1 -n default' to see all of the containers in this pod.
/ # cd /cache/
/cache # echo hello > index.html
/cache # cat index.html 
hello
/cache 

[kubeadm@server2 volumes]$ kubectl get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
vol1   2/2     Running   1          9m51s   10.244.1.45   server3   <none>           <none>

[kubeadm@server2 volumes]$ curl 10.244.1.45
hello

emptydir的缺点
在这里插入图片描述

4. hostpath卷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[kubeadm@server2 volumes]$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath: 
      path: /data
      type: DirectoryOrCreate

[kubeadm@server2 volumes]$ kubectl apply -f pod.yaml 
pod/test-pd created

[kubeadm@server2 volumes]$ kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
test-pd   1/1     Running   0          39s   10.244.1.46   server3   <none>           <none>

[root@server3 data]# pwd
/data

[kubeadm@server2 volumes]$ kubectl exec -it test-pd -- bash
root@test-pd:/# cd /test-pd/
root@test-pd:/test-pd# ls
root@test-pd:/test-pd# touch file
root@test-pd:/test-pd# exit

[root@server3 data]# ls
file

5. nfs示例

server1上配置nfs

[root@server1 /nfs]#cat /etc/exports
/nfs 	*(rw,no_root_squash)

[root@server1 /nfs]#systemctl start nfs

[root@server1 /nfs]#showmount -e
Export list for server1:
/nfs *

在节点上安装

yum install nfs-utils -y
[kubeadm@server2 volumes]$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 172.25.60.1
      path: /nfs
[kubeadm@server2 volumes]$ kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
test-pd   1/1     Running   0          10s   10.244.2.45   server3   <none>           <none>

[kubeadm@server2 volumes]$ kubectl exec -it test-pd -- bash
root@test-pd:/# cd /usr/share/nginx/html/
root@test-pd:/usr/share/nginx/html# echo westos > index.html
root@test-pd:/usr/share/nginx/html# cat index.html 
westos
root@test-pd:/usr/share/nginx/html# exit
exit

[root@server1 /nfs]#ls
config  index.html
[root@server1 /nfs]#cat index.html 
westos

[root@server3 yum.repos.d]# mount|grep nfs
172.25.60.1:/nfs on /var/lib/kubelet/pods/cf3083fd-09fc-4b32-a052-f390a7e8a9b2/volumes/kubernetes.io~nfs/test-volume type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.25.60.3,local_lock=none,addr=172.25.60.1)

6. persistentVolume持久卷

6.1 nfs的pv示例

创建pv

[kubeadm@server2 pv]$ cat pv1.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  nfs:
    path: /nfs
    server: 172.25.60.1

[kubeadm@server2 pv]$ kubectl apply -f pv1.yaml 
persistentvolume/pv1 created

[kubeadm@server2 pv]$ kubectl get pv
NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv1    1Gi        RWO            Recycle          Available           slow                    5s

在这里插入图片描述
在这里插入图片描述
创建pv

[kubeadm@server2 pv]$ cat pv1.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /nfs
    server: 172.25.60.1

创建pvc

[kubeadm@server2 pv]$ cat pvc1.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc1
spec:
  storageClassName: nfs
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

[kubeadm@server2 pv]$ kubectl apply -f pv1.yaml

[kubeadm@server2 pv]$ kubectl apply -f pvc1.yaml

[kubeadm@server2 pv]$ kubectl get pvc
NAME   STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc1   Bound    pv1      1Gi        RWO            nfs            4m35s

[kubeadm@server2 pv]$ kubectl get pv
NAME   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM          STORAGECLASS   REASON   AGE
pv1    1Gi        RWO            Recycle          Bound    default/pvc1   nfs                     10m

pod挂载pv

[kubeadm@server2 pv]$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: storage1
  volumes:
  - name: storage1
    persistentVolumeClaim:
      claimName: pvc1
[kubeadm@server2 pv]$ kubectl apply -f pod.yaml 
pod/test-pd created

[kubeadm@server2 pv]$ kubectl describe pod test-pd 
    Mounts:
      /usr/share/nginx/html from storage1 (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-64lq2 (ro)

[kubeadm@server2 pv]$ kubectl exec -it test-pd -- bash
root@test-pd:/# cd /usr/share/nginx/html/
root@test-pd:/usr/share/nginx/html# ls
config	index.html
root@test-pd:/usr/share/nginx/html# echo westos > index.html
root@test-pd:/usr/share/nginx/html# exit

[kubeadm@server2 pv]$ kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
test-pd   1/1     Running   0          2m48s   10.244.1.49   server3   <none>           <none>
[kubeadm@server2 pv]$ curl 10.244.1.49
westos

[root@server1 /nfs]#cat index.html 
westos
[root@server1 /nfs]#ll
total 4
drwx------ 2 root root 6 Apr  9 22:48 config
-rw-r--r-- 1 root root 7 Apr 26 11:30 index.html

删除pod,重新建立一个新的pod,检测是否还能访问到westos

[kubeadm@server2 pv]$ kubectl delete -f pod.yaml 
pod "test-pd" deleted

[kubeadm@server2 pv]$ cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd2
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: storage1
  volumes:
  - name: storage1
    persistentVolumeClaim:
      claimName: pvc1

[kubeadm@server2 pv]$ kubectl get pod -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
test-pd2   1/1     Running   0          12s   10.244.2.46   server4   <none>           <none>

[kubeadm@server2 pv]$ curl 10.244.2.46
westos

删除pvc

在这里插入图片描述
在这里插入图片描述

index.html文件也相应删除
[root@server1 /nfs]#ls
config  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值