【实操】配置 Pod 以使用 PersistentVolume 作为存储

2022-05-14 09:25:29 浏览数 (1)

前面那篇是知识,自己动手了才是留下来的才是经验。

一般的教程会教你从第一步到第一百步怎么走,而优秀的教程则会教你从第一步到第一百步为什么要那么走,以及有哪些坑。当然,差劲点的直接半路夭折了。显然,本篇是一般的教程。跟着做最终是能动,但是中间那些坑坑洼洼的只有从白板做起的人知道。 看到这段话的小伙伴,可以现在退出去,自己从白板做一份,走不通了,在来比对一下咱的差别,再走过,就是你的经验了。

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"

。。。

0 人点赞