apiVersion: v1
kind: Pod
metadata:
name: gitrepo-volume-pod
spec:
containers:
- image: nginx: alpine
name: web-nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
gitRepo:
repository: https://github.com/luksa/kubia-website-example.git
revision: master
directory: . (这个.很重要,表示在当前emptyDir目录下不然就会创建一个kubia-website-example目录)
以上就是gitRepo的用法,其中有个问题就是pod中的gitrepo并不会及时更新。如果想要及时更新需要用到sidecar ,加入到pod中,在Docker Hub搜索 “git ryc”获取相关镜像。
还有一个情况不得不使用sidecar container 。gitrepo 不支持连接私有库,也就是不能是ssh密钥连接,也不可以有用户名和密码。这时候就需要使用支持验证连接的sidecar container来实现了。具体怎么使用,用到的时候在研究吧.
至此gitRepo卷类型算是简单介绍了,下面学习hostpath
大多数时候pod应该忽略他们的主机节点,因此他们也不需要访问节点文件系统上的文件。但是某些系统级别的pod(通常由DaemonSet管理)确实需要读取节点的文件或使用节点文件系统来访问节设备,这时候就需要用到hostPath
hostPath 算是第一个持久化存储卷了,但是这个很少用到,因为这个卷只能在某一单一节点上,pod重启后很可能在另外一个节点上。当然可以使用NodeSelector但这样看起来也不高明。所以建议使用网络存储。hostPath过
接下来是网络存储和云平台提供的存储磁盘卷。这两种在用到的时候找相关的属性进行配置即可。也没什么要注意的,实际应用场景用到最多的持久存储是pv,pvc,storageClass
configmap
kubectl create configmap fortune-config --from-literal=sleep-interval=25
一般configmap包含多个映射条目所以创建时可以多次使用--from-literal参数
kubectl create conigmap fortune-config --from-literal=foo=bar --from-literal=bar=baz --from-literal=one=two
kubectl get configmap fortune-config -o yaml
configmap同样可以存储粗力度的配置数据,比如完整的配置文件。kubectl create configmap 命令支持从硬盘上读取文件,并将文件内容单独存储为ConfigMap中的条目:
kubectl create configmap my-config --from-file=config-file.conf
运行此命令,kubectl 会在当前目录下找config-file.conf文件,并将文件内容存储在configmap中以config-file.conf 为键名的条目下。当然也可以手动指定键名
kubectl create configmap my-config --from-file=customkey=config-file.conf
kubectl create configmap my-config --from-file=/path/to/dir
这时候,kubectl会为文件中每个文件单独创建条目,仅限文件名可作为合法ConfigMap键名的文件。
当然也可以将上面的参数混合使用
configmap设置完成了,如何将映射的值传递给pod的容器?三种方法
一,设置环境变量,例子如下:
apiVersion: v1
kind: Pod
metadata:
name: fortune-env-from-configmap
spec:
containers:
- image: luksa/fortu