알리 클라우드는 Kubernetes 지속 동적 스토리지를 달성하기 위해 NAS를 사용하여

동적 메모리는 서두 공급

코어 동적 프로비저닝 API의 작동 메커니즘은 StorageClass 객체
자동으로 PV를 만드는 데 사용 StorageClass 문 메모리 카드,
는 Kubernetes 메모리 카드의 동적 공급을 지원 https://kubernetes.io/docs/concepts/storage/storage-classes/
 
흐름도 :
원리 :
메모리 제어기 볼륨 제어기는 결합 PV 및 PVC PersistentVolumeController의 하위 제어 사이클을 담당하는 영구 저장 장치 제어기를 처리하도록 설계된다. PersistentVolumeController는 KUBE-apiserver의 PVC 대상을 볼 것입니다. 당신은 PVC 객체가 생성 찾을 경우 바인딩이있는 경우, 당신은 바인드 StorageClass 구성 및 PVC 설명에 사용됩니다하지 않을 경우, PV를 생성, 사용 가능한 모든 PV를 볼 수 있습니다
특징 :
동적 볼륨의 공급이 기능은 스토리지가 내장 된 온 디맨드 만들 수 있습니다,는 Kubernetes에게 독특한 기능이다. 이에 앞서, 클러스터 관리자는 클러스터 외부의 클라우드 스토리지 제공 업체 또는 제공하여 스토리지 볼륨을 생성하고, 성공적인 PersistentVolume가에는 Kubernetes에서 사용할 수 있도록 한 후 다음 객체를 생성해야합니다. 동적 볼륨의 공급은 클러스터 관리자는 스토리지 볼륨을 미리 만들 필요가 없습니다 수 있지만 사용자의 요구로 만들 수 있습니다.

둘째, 배포 단계

제공자의 NFS 서비스 만들기 (1)
# 빔의 NFS 클라이언트 - 수수료 deploy.yaml
종류 : 배포 
apiVersion : 확장 / v1beta1의 
메타 데이터 
  이름 : NFS -client- 제공자 
사양 : 
  복제본 : 1 개 
  전략 : 
    유형 : 재 작성의 
  템플릿 : 
    메타 데이터 : 
      라벨 : 
        응용 프로그램 : NFS -client- 제공자 
    사양 : 
      serviceAccountName : NFS -client- 제공자 
      용기 :
         - 이름 : NFS-클라이언트 - 제공자의 
          이미지 : quay.io / external_storage / NFS-클라이언트 - 제공자 : 최신 
          volumeMounts :
             - 이름 : NFS-클라이언트 - 루트
              경로 (mountpath) : / persistentvolumes 
          ENV :
             - 이름 : PROVISIONER_NAME의 
              값 : fuseim.pri / IFS
             - 이름 : NFS_SERVER의 
              값 : . * - * CN- beijing.nas.aliyuncs.com
             - 이름 : NFS_PATH의 
              값 : / pods- 볼륨 
      볼륨 :
         - 이름 : NFS-클라이언트 - 루트 
          NFS : 
            서버 :   * - * - beijing.nas.aliyuncs.com 
            경로 : / 포드 - 볼륨

# -f NFS 클라이언트 - 제공자 - deploy.yaml을 적용 kubectl

 

SA와 RBAC 인증을 작성합니다

# 빔의 NFS 클라이언트 - rbac.yaml
apiVersion : V1 
종류 : ServiceAccount의 
메타 데이터
  이름 : NFS 클라이언트 - 제공자의 
  # 네임 스페이스로 교체 제공자가 배포 
  네임 스페이스 : 기본 
--- 
종류 : ClusterRole 
apiVersion : rbac.authorization.k8s.io / V1 
메타 데이터 : 
  이름 : NFS -client -provisioner- 러너 
규칙 :
   - apiGroups을 : [ "" ] 
    자원 : [ " persistentvolumes " ] 
    동사 : " " , " 목록 " , " 시계 " , "생성 " , " 삭제 " ]
   - apiGroups을 : [ " " ] 
    자원 : [ " persistentvolumeclaims " ] 
    동사 : [ " " , " 목록 " , " 시계 " , " 업데이트 " ]
   - apiGroups를 : " storage.k8s.io " ] 
    자원 : [ " storageclasses " ] 
    동사 : [ " ", " 목록" , " 시계 " ]
   - apiGroups : [ " " ] 
    자원 : [ " 이벤트 " ] 
    동사 : " 생성 " , " 갱신 " , " 패치 " ]
 --- 
종류 : ClusterRoleBinding 
apiVersion : rbac.authorization.k8s.io / V1 
메타 데이터 : 
  이름 : 실행 -nfs - 클라이언트 - 제공자의 
주제 :
   - 종류 : ServiceAccount의 
    이름 : NFS 클라이언트 - 제공자의 NFS 클라이언트 - 제공자의 
    #은 제공자가 배포되는 경우 네임 스페이스로 교체
    네임 스페이스 : 기본적 
roleRef : 
  종류 : ClusterRole의 
  이름 : NFS 클라이언트 - 제공자 - 러너 
  apiGroup : rbac.authorization.k8s.io 
--- 
종류 : 역할 
apiVersion : rbac.authorization.k8s.io/v1 
메타 데이터 : 
  이름 : 리더 잠금-NFS -client-제공자의 
  제공자가 배포 네임 스페이스로 대체 # 
  기본 : 네임 스페이스 
: 규칙
   apiGroups를 - : [ "" ] 
    자원 : [ " 엔드 포인트 " ] 
    동사 : " " , " 목록 " , " 시계 " , "만들 "," 갱신 " , " 패치 " ]
 --- 
종류 : RoleBinding 
apiVersion : rbac.authorization.k8s.io/v1 
메타 데이터 : 
  이름 : 리더 잠금-NFS 클라이언트 - 제공자의 
  제공자가 배포되는 경우 네임 스페이스로 # 대체 
  기본 : 네임 스페이스 
과목을 : 
  - 종류 : ServiceAccount의 
    이름 : NFS 클라이언트 - 제공자의 
    #은 제공자가 배포 네임 스페이스로 교체 
    기본값 : 네임 스페이스 
roleRef : 
  종류 : 역할 
  이름 : 리더 -locking-NFS-클라이언트 - 제공자의 
  apiGroup : rbac.authorization.k8s.io

# -f NFS 클라이언트 - rbac.yaml을 적용 kubectl

 

3, 스토리지 클래스를 생성

# 빔-NFS-sotrage class.yaml

apiVersion : storage.k8s.io/ V1 
#allowVolumeE 확관이 : 참으로 차례로 확장 기능을 허용하지만, NFS의 유형을 지원하지 않는 
종류 : StorageClass 
메타 데이터 : 
  : 이름 yiruike -nfs- 저장 
mountOptions을 :
 - = 적이있는 4. 
- MinorVersion = 0 
- noresvport 
제공자 : fuseim.pri가 / IFS 
매개 변수를 : 
  archiveOnDelete를 : " 거짓 "
# -f NFS 스토리지-class.yaml을 적용 kubectl

제공 pointsmart-NFS 스토리지 SC 기본 스토리지 클래스 백엔드 : 

# kubectl 패치 storageclass yiruike-NFS 스토리지 -p '{ "메타 데이터": { "주석": { "storageclass.kubernetes.io/is-default-class":"true"}}}'

# kubecctl GET SC
[루트 @ 마스터-92는 PV-PVC] # kubectl GET SC 
NAME 제공자 AGE 
yiruike-NFS 스토리지 ( 기본 ) fuseim.pri은 / 48S를 IFS

셋째, 검증 결과의 배포

1, 테스트 파일의 PVC를 만들

# 정력 테스트 claim.yaml

종류 : PersistentVolumeClaim 
apiVersion : V1의 
메타 데이터 
  이름 : 테스트 - 청구 
  주석 : 
    volume.beta.kubernetes.i O / 저장소 클래스 : " yiruike-NFS 스토리지 " 
사양 : 
  accessModes :
     - ReadWriteMany 
  #persistentVolumeReclaimPolicy : 유지 
  : 자원 
    요청을 : 
      저장 : 2Gi

# -f 테스트 claim.yaml을 적용 kubectl

# kubectl GET 태양 광 발전, PVC

NAME의 용량 ACCESS MODES RECLAIM 정책 상태 청구 STORAGECLASS 이유 AGE 
persistentvolume / pvc- * 2Gi RWX 삭제            바운드     기본 / 테스트 주장 yiruike-NFS 또는 저장 1S 

NAME 상태의 볼륨 용량 ACCESS MODES STORAGECLASS 나이 
persistentvolumeclaim / 테스트 주장    바운드     PVC-2fc935df-62f2 -11ea-9e5a-00163e0a8e3e 2Gi RWX yiruike-NFS 저장 5S

 

테스트 POD 만들기 (2)

포드는 태양 광 테스트 청구의에서 테스트 성공 파일을 접촉 시작

# 빔 테스트 - pod.yaml

종류 : 포드 
apiVersion : V1의 
메타 데이터 
  이름 : 테스트 포드 
사양 : 
  컨테이너 : 
  - 이름 : 테스트 포드 
    이미지 : 비지 박스 : 1.24 
    명령 
      - "/ 빈 / SH" 
    인수 : 
      - "-c" 
      - "터치 / MNT / 성공 && 종료 0 || 1 번 출구 " 
    volumeMounts : 
      - 이름 : NFS-PVC 
        경로 (mountpath) :"/ MNT " 
  restartPolicy :"결코 " 
  볼륨 : 
    - 이름 : NFS-PVC 
      persistentVolumeClaim : 
        claimName : 테스트 -claim

# -f 테스트 pod.yaml을 적용 kubectl

# Df를 번째 | 그렙 aliyun

* - *. cn-beijing.nas.aliyuncs.com:/pods-volumes NFS4   10P   0   10P   0 % /data/k8s/k8s/kubelet/pods/77a4ad8b-62e1-11ea-89e3-00163e301bb2/volumes/kubernetes.io ~ NFS / NFS 클라이언트 루트

# LS /data/k8s/k8s/kubelet/pods/77a4ad8b-62e1-11ea-89e3-00163e301bb2/volumes/kubernetes.io~nfs/nfs-client-root

기본 테스트-주장-PVC-0b1ce53d-62f4-11ea-9e5a-00163e0a8e3e

# LS /data/k8s/k8s/kubelet/pods/77a4ad8b-62e1-11ea-89e3-00163e301bb2/volumes/kubernetes.io~nfs/nfs-client-root/ 기본 테스트-주장-PVC-0b1ce53d-62f4-11ea -9e5a-00163e0a8e3e

성공

따라서, 일반 배포, 동적 공유 볼륨을 할당 할 수있다 NFS

 

(3) 인증 데이터 지속성

이제 우리는 테스트-POD 수있는이 포드는 사라지지 않을 것이며, 파일 내부 테스트 데이터 볼륨을 삭제합니다. 

# Kubectl 삭제 포드 / 테스트 포드

나중에 포드를 삭제할 수를 본 후, 데이터는 우리가 동적 데이터 지속성을 달성 그래서, 손실되지 않습니다 

 

 

추천

출처www.cnblogs.com/wjoyxt/p/12459969.html