CKA备考实验 | hostPath

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

一边学习一边整理老师的课程内容及实验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:CKA备考实验 | 汇总_热爱编程的通信人的博客-CSDN博客


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

步骤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
 
  - 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目录。

注意:不管是容器里的/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          4s
[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            NOMINATED NODE   READINESS GATES
demo   2/2     Running   0          53s   10.244.14.22   vms12.rhce.cc   <none>           <none>
[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 ~]# ls /data/
hosts
[root@vms12 ~]# 

步骤7:删除此pod。

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/131449021
今日推荐