前面那篇是知识,自己动手了才是留下来的才是经验。
一般的教程会教你从第一步到第一百步怎么走,而优秀的教程则会教你从第一步到第一百步为什么要那么走,以及有哪些坑。当然,差劲点的直接半路夭折了。显然,本篇是一般的教程。跟着做最终是能动,但是中间那些坑坑洼洼的只有从白板做起的人知道。 看到这段话的小伙伴,可以现在退出去,自己从白板做一份,走不通了,在来比对一下咱的差别,再走过,就是你的经验了。
1、准备:一个挂载的本地目录并且目录下有个文件
代码语言:javascript复制mkdir /root/data
echo 'Hello from Kubernetes storage' > /mnt/data/index.html
2、创建 一个hostpath类型的PersistentVolume
代码语言:javascript复制apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
3、创建 PersistentVolumeClaim
代码语言:javascript复制apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
4、创建 pod
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
5、验证
代码语言:javascript复制#创建pod
kubectl create -f pods/storage/pv-pod.yaml
# 查看是否正常
kubectl get pod task-pv-pod
#进入pod
kubectl exec -it task-pv-pod -- /bin/bash
#验证是nginx服务否正常
root@task-pv-pod:/# apt-get update
root@task-pv-pod:/# apt-get install curl
root@task-pv-pod:/# curl localhost
Hello from Kubernetes storage
访问控制
使用 group ID(GID)配置的存储仅允许 Pod 使用相同的 GID 进行写入。 GID 不匹配或缺少将会导致许可被拒绝的错误。 为了减少与用户的协调,管理员可以使用 GID 对 PersistentVolume 进行注解。 这样 GID 就能自动的添加到使用 PersistentVolume 的任何 Pod 中。
使用 pv.beta.kubernetes.io/gid 注解的方法如下所示:
代码语言:javascript复制kind: PersistentVolume
apiVersion: v1
metadata:
name: pv1
annotations:
pv.beta.kubernetes.io/gid: "1234"
。。。