k8s存储卷与数据持久化(4)
时间:2020-09-23 15:52 来源:未知 作者:liangzh 点击:次
用提供高性能缓存,下面是一个配置示例:
volumes:
- name: cache
emptyDir:
medium: Memory
empty Dir 卷简单易用,但仅能用于临时存储另外还存在一些类型的存储卷建
empty Dir 之上,并额外提供了它所没有的功能,例如后面介绍的gitRepo存储卷
2>gitRepo 存储卷
gitRepo 存储卷可以看作是 emptyDir 存储卷的一种实际应用,使用该存储卷的 Pod
源可以通过挂载目录访问指定的代码仓库中的数据 使用gitRepo 存储卷的Pod资源在
时, 会首先创建一个空目录( emptyDir )并克隆( clone 一份指定 Git 中的数据至该
目录,而后再创建容器并挂载该存储卷
定义gitRepo 类型的存储卷时,其可嵌套使用的字段具体包含如
repository <string>: Git 仓库的 URL ,必选字段
directory <string>:目标目录名称,名称中不能包含“..”字符;
“.”表示将仓库中数据直接复制到卷目录中,否则即为复制到卷目录中以用户指定的字符串
称的子目录中。
revision <string> 特定 revision 提交哈希码
注意:使用 gitRepo 存储卷的 Pod 资源运行的工作节点上必须安装有 Git 程序 否则克隆仓
库的操作将无从完成 另外 Kubernet 1.12 起, gitRepo 存储卷已经被废弃。
首先会创建一个空目录,将指定 Git 仓库 https://github.com/iKubernetes/k8s_book.git 中的数据 一份直接保
存于此目录中,而后将此目录创建为存储卷 html ,最后由容器 Nginx 将此存储卷挂载于/usr/share/nginx/html目录上
[root@zfb-jyhpt-bgcsjyh1 k8s]# kubectl apply -f vol-gitrepo-pod.yaml
pod/vol-gitrepo-pod created
[root@zfb-jyhpt-bgcsjyh1 k8s]# cat vol-gitrepo-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: vol-gitrepo-pod
spec:
volumes:
- name: html
gitRepo:
repository: http://your-count:your-password@112.74.35.81:9097/liangzonghua/09-dali-jyh.git
directory: .
revision: "master"
containers:
- name: nginx
image: nginx:1.17.10
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
[root@zfb-jyhpt-bgcsjyh1 k8s]# kubectl get pod vol-gitrepo-pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
vol-gitrepo-pod 1/1 Running 0 86s 10.244.4.8 172.19.33.2 <none> <none>
[root@zfb-jyhpt-bgcsjyh1 k8s]# curl 10.244.4.8
gitrepo volune test page!!!
访问此 Pod 资源中的 Nginx 服务即可看到其来自于 Git 仓库中的页面资源 不过, gitRepo
存储卷在其创建完成后不会再与指定的仓库执行同步操作,这就 着在 Pod 资源运行期
间,如果仓库中的数据发生了变化,那么 gitRepo 存储卷不会同步到这些内容。当然 ,此时
可以为 Pod 资源创建一个专用的边车容器用于执行此类的同步操作,尤其是数据来源于私
有仓库时,通过边车容器完成其复制就更为必要
gitRepo 存储卷建构于 emptyDir 存储卷之上,它的生命周期与隶属的 Pod 对象相同,
因此使用时不建议在此类存储卷中保存由容器生成的重要数据 另外,自 bemetes 1.12
版起, gitRepo 存储卷已经被废弃,所以在之后的版本中若要使用它配置 Pod 对象,建议读
者借助初始 容器( InitContainer )将仓库中的数据复制到 mptyDir 存储卷上,并在主容器
中使用此存储卷
|