는 Kubernetes 저장 포드 구성 PersistentVolume

간략한 소개

이 문서하는 방법에 대해 설명 PersistentVolumeClaim포드 저장, 다음 단계를 구성합니다

  • 클러스터 관리자는 PersistentVolume에서 지원하는 물리적 스토리지를 만들 수 있습니다. 볼륨은 어떤 포드와 연결되어 있지 않습니다.
  • 개발자 / 클러스터 사용자로 PersistentVolumeClaim 만들기, 자동으로 적절한 PersistentVolume에 바인딩
  • PersistentVolumeClaim의 저장을 사용하여 포드를 만듭니다.

참고 :이 문서는 공식 문서를 참조하여 이해되어야합니다. 오해의 소지가있는 경우, 비판을하시기 바랍니다.

시작 전 준비

생성, 쉘을 입력 클러스터의 노드 노드를 선택 /mnt/data디렉토리를

# mkdir /mnt/data

입력 /mnt/data디렉토리를하는 생성 index.html파일을

# sudo sh -c "echo 'Hello from Kubernetes storage' > /mnt/data/index.html"

파일이 성공적으로 생성되어 있는지 확인

cat /mnt/data/index.html

출력은 다음과

Hello from Kubernetes storage

PersistentVolume 만들기

크리에이트 hostPath타입 创建PersistentVolume. 는 Kubernetes는 클러스터 노드에서 노드의 사용을 지원하는 hostPath개발 및 테스트를. hostPath유형 PersistentVolume시뮬레이션 네트워크 연결 스토리지에 사용되는 노드 노드에서 파일이나 디렉토리.

프로덕션 환경에서는 사용하지 마십시오 hostPath. 클러스터 관리자는 사용할 수 있습니다 Google Compute Engine persistent disk, NFS, Amazon Elastic Block Store volume대신 네트워크 스토리지 제공 업체. 클러스터 관리자가 사용할 수있는 StorageClasses세트 dynamic provisioning.

만들기 hostPath의 유형 PersistentVolume객체, 문서를 물었다 :pv-volume.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

프로필 정의 volumes클러스터 노드의 노드 /mnt/data. 구성 저장소 크기 지정 10 gibibytes, ReadWriteOnce판독 및 기록 가능 수단은 하나의 노드에 탑재 모드. 구성은 정의 된 StorageClass name바와 같이 manual결합 PersistentVolumeClaim을 요청 PersistentVolume.

# kubectl apply -f /root/k8s-example/volume/pv-volume.yaml

보기 PersistentVolume자원 정보

# kubectl get pv task-pv-volume -o wide

결과는 것으로 나타났다 . 설명은 아직 바인딩되지 않은PersistentVolumeSTATUSAvailablePersistentVolumePersistentVolumeClaim

NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
task-pv-volume   10Gi       RWO            Retain           Available           manual                  9s    Filesystem

만들기 PersistentVolumeClaim

사용자가 만든 다음 PersistentVolumeClaim. 포드의 사용은 PersistentVolumeClaim물리적 스토리지를 요청합니다.

만들기 PersistentVolumeClaim, 요청 된 볼륨은 적어도입니다 3 gibibytes읽고 적어도 하나 개의 노드에 대한 쓰기 액세스를 제공 할 수있다. 파일 이름 :pv-claim.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
# kubectl apply -f /root/k8s-example/volume/pv-claim.yaml

보기 PersistentVolume자원 정보,

# kubectl get pv task-pv-volume
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Bound    default/task-pv-claim   manual                  28m

보기 PersistentVolumeClaim자원 상태

# kubectl get pvc task-pv-claim

결과는 출력이 보여 PersistentVolumeClaim바인딩 PersistentVolume, 즉task-pv-volume

NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual

포드 만들기

포드를 생성, 사용 PersistentVolumeClaim으로 volume. 파일 이름 :pv-pod.yaml

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
# kubectl apply -f /root/k8s-example/volume/pv-pod.yaml
# kubectl get pod task-pv-pod
NAME          READY   STATUS    RESTARTS   AGE
task-pv-pod   1/1     Running   0          14s

입력 task-pv-pod에 쉘을

kubectl exec -it task-pv-pod -- /bin/bash

쉘에서, 당신은의 nginx 출신 여부를 확인 hostPath볼륨 제공 index.html파일을

apt update
apt install curl
curl http://localhost/

출력 :

Hello from Kubernetes storage

이 메시지가 표시되면 당신은 성공적으로의 PersistentVolumeClaim에서 포드 저장소를 사용하도록 구성했습니다.

정리 자료

kubectl delete pod task-pv-pod
kubectl delete pvc task-pv-claim
kubectl delete pv task-pv-volume

생성 /mnt/data디렉토리 노드 노드 것은 디렉토리를 삭제

sudo rm /mnt/data/index.html
sudo rmdir /mnt/data

추천

출처www.cnblogs.com/mcsiberiawolf/p/12220856.html