Kubernetes部分Volume类型介绍及yaml示例–emptyDir

来源:本站原创 Kubernetes 超过108 views围观 0条评论

Kubernetes部分Volume类型介绍及yaml示例–emptyDir(本地数据卷)

说明
EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir中的同一个文件。一旦这个pod离开了这个宿主机,EmptyDir中的数据就会被永久删除。所以目前EmptyDir类型的volume主要用作临时空间,比如Web服务器写日志或者tmp文件需要的临时目录。
实战使用共享卷的标准单容器POD
#创建yaml文件
cat >> emptyDir.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
    labels:
        name: test-emptypath
        role: master
    name: test-emptypath
    namespace: test
spec:
    containers:
        – name: test-emptypath
            image: nginx:1.7.9
            volumeMounts:
             – name: log-storage
                 mountPath: /tmp/
    volumes:
    – name: log-storage
        emptyDir: {}
#启动emptyDir.yaml
kubectl create -f ./emptyDir.yaml
#查看Pod运行状态
kubectl get po -n test
NAME                         READY     STATUS    RESTARTS   AGE
test-emptypath               1/1       Running   0          3h
##说明:当 Pod 被分配给节点时,首先创建 emptyDir 卷,并且只要该 Pod
##在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。
实战使用共享卷的标准多容器POD、
#创建yaml文件
cat  >> emptyDir2.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
    name: datagrand
    namespace: test
spec:
    containers:
    – name: test1
        image: nginx:1.7.9
        volumeMounts:
        – name: log-storage
            mountPath: /usr/share/nginx/html
    – name: test2
        image: centos
        volumeMounts:
        – name: log-storage
            mountPath: /html
        command: ["/bin/sh","-c"]
        args:
            – while true;do
                    data >> /html/index.html;
                    sleep 1;
                done
volumes:
    – name: log-storage
        emptyDir: {}
##说明:在这个例子中,我们定义了一个名为HTML的卷。它的类型是emptyDir,
##这意味着当一个POD被分配到一个节点时,卷先被创建,并只要Pod在节点上
##运行时,这个卷仍存在。正如名字所说,它最初是空的。第一容器运行nginx的
##服务器并将共享卷挂载到目录/ usr /share/ nginx /html。第二容器使用centos
##的镜像,并将共享卷挂载到目录/HTML。每一秒,第二容器添加当前日期和时
##间到index.html文件中,它位于共享卷。当用户发出一个HTTP请求到POD,
##nginx的服务器读取该文件并将其传递给响应请求的用户。
#运行yaml
kubectl create -f ./emptyDir2.yaml
#查看Pod运行状态
kubectl get po -n test
NAME                         READY     STATUS    RESTARTS   AGE
datagrand                    2/2       Running   0          22m
#进入容器test1
kubectl exec -it datagrand -c test1 /bin/bash -n test
root@datagrand:/# cd /usr/share/nginx/html
root@datagrand:/usr/share/nginx/html# ls
index.html
##添加内容
root@datagrand:/usr/share/nginx/html# echo "this is a test" >> index.html
#进入容器test2
kubectl exec -it datagrand -c test2 /bin/bash -n test
[root@datagrand /]# cd html
[root@datagrand html]# ls
index.html
[root@datagrand html]# cat index.html
this is a test
##emptyDir卷是两个容器(test1和test2)共享的
参考文档
https://www.kubernetes.org.cn/2767.html

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=4116转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点

暂时还木有人评论,坐等沙发!
发表评论

您必须 [ 登录 ] 才能发表留言!