Kubernetes认证考试自学系列 | hostPath

书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》

一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Kubernetes认证考试自学系列 | 汇总_COCOgsta的博客-CSDN博客


使用hostPath的存储方式,就类似于在创建docker容器时的命令docker run -v /data:/xx,意思是在物理机里的目录/data映射到容器的/xx目录里,如果删除了pod之后,则数据仍然是保留的。

步骤1:创建一个pod的yaml文件host.yaml,内容如下。

[root@vms10 volume]# cat host.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo
  labels:
    purpose: demonstrate-envars 
spec:
  volumes:
  - name: volume1
    hostPath:
      path: /data 
  containers:
  - name: demo1
    image: busybox 
    imagePullPolicy: IfNotPresent 
    command: ['sh', '-c', 'sleep 5000']
    volumeMounts: 
    - mountPath: /xx 
      name: volume1
 
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bfb4165679264e149a846eeab8cb63b8~tplv-k3u1fbpfcp-watermark.image?)
  - name: demo2
    image: busybox 
    imagePullPolicy: IfNotPresent 
    command: ['sh', '-c', 'sleep 5000']
    volumeMounts:
    - mountPath: /xx 
      name: volume1
[root@vms10 volume]#

在此yaml文件里,在volumes字段下创建了一个名字为volume1的卷,类型是hostPath,对应物理机的目录/data(由path指定)。

定义了2个容器,在每个容器里分别用volumeMounts把卷volume1挂载到本容器的/xx目录(mount Path指定),所以每个容器里目录/xx挂载的是物理机的/data目录。

步骤2:创建并查看pod。

[root@vms10 volume]# kubectl apply -f host.yaml 
pod/demo created
[root@vms10 volume]# kubectl get pods
NAME   READY   STATUS  RESTARTS  AGE 
demo   2/2    Running   0        11s 
[root@vms10 volume]#

步骤3:查看pod的属性,确认现在使用的是HostPath。

[root@vms10 volume]# kubectl describe pod demo | grep -A3 Volumes 
Volumes:
  volume1:
    Type:     HostPath (bare host directory volume)
    Path:     /data 
[root@vms10 volume]#

从上面可以看到,pod里的/xx挂载的是物理机的/data目录。

步骤4:查看pod所在机器。

[root@vms10 volume]# kubectl get pods -o wide 
NAME   READY   STATUS    RESTARTS     AGE     IP             NODE 
demo   2/2     Running   0            3m14s   10.244.3.31    vms12.rhce.cc 
[root@vms10 volume]#

可以看到pod是运行在vms12上的。

步骤5:在master上拷贝一个文件到此pod里demo1容器的/xx目录。

[root@vms10 volume]# kubectl cp /etc/hosts demo:/xx -c demo1
[root@vms10 volume]#

步骤6:切换到vms12,检查文件是否放在vms12的/data目录里。

[root@vms12 ~]#
[root@vms12 ~]# ls /data/
hosts
[root@vms12 ~]#

步骤7:删除此pod。

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/130722743