Skip to main content
BeeGFS on NetApp with E-Series Storage
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

BeeGFS CSI 드라이버 배포

기여자 mcwhiteside

Kubernetes 환경에서 BeeGFS CSI 드라이버를 배포하기 위한 지침입니다.

에어갭 배치

Air-Gapped(오프라인) 배포를 수행하려면 Kubernetes YAML 구성 파일과 필요한 컨테이너 이미지를 모두 인터넷 접속이 가능한 시스템에 미리 다운로드해야 합니다. 그런 다음 이러한 파일을 CSI 드라이버가 설치될 대상 노드로 전송해야 합니다.

드라이버 및 이미지 검색

공기 간격이 있는 환경에서 BeeGFS CSI 드라이버를 배포하려면 다음 단계를 수행하세요.

  1. 인터넷 접속이 가능한 시스템에 BeeGFS CSI 드라이버 GitHub 저장소를 복제합니다.

    git clone https://github.com/ThinkParQ/beegfs-csi-driver.git
  2. 아래 나열된 이미지에서 최신 이미지 버전 태그를 수집하여 기록합니다. 각 이미지의 공식 레지스트리나 GitHub 릴리스를 방문하여 최신 버전 태그를 확인할 수 있습니다.

    이미지 이름 레지스트리 URL/참조

    beegfs-csi-드라이버

    https://github.com/ThinkParQ/beegfs-csi-driver/pkgs/container/beegfs-csi-driver

    csi-프로비저너

    https://github.com/kubernetes-csi/external-provisioner/releases

    csi-리사이저

    https://github.com/kubernetes-csi/external-resizer/releases

    라이브니스 프로브

    https://github.com/kubernetes-csi/livenessprobe/releases

    csi-노드-드라이버-등록자

    https://github.com/kubernetes-csi/node-driver-registrar/releases

  3. containerd를 사용하여 각 이미지를 시스템으로 가져오고 다음을 교체해야 합니다. <latest-tag> 각 이미지에 대한 실제 최신 태그 포함:

    ctr -n k8s.io images pull ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag>
    ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-provisioner:<latest-tag>
    ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-resizer:<latest-tag>
    ctr -n k8s.io images pull registry.k8s.io/sig-storage/livenessprobe:<latest-tag>
    ctr -n k8s.io images pull registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag>
  4. 가져온 각 이미지는 별도로 내보내야 합니다. .tar 파일. 이 작업은 이미지를 Air-Gapped 환경으로 전송하고 대상 시스템의 containerd로 가져오는 데 필요합니다. 예를 들어:

    ctr -n k8s.io images export beegfs-csi-driver_<latest-tag>.tar ghcr.io/thinkparq/beegfs-csi-driver:<latest-tag>
    ctr -n k8s.io images export csi-provisioner_<latest-tag>.tar registry.k8s.io/sig-storage/csi-provisioner:<latest-tag>
    ctr -n k8s.io images export csi-resizer_<latest-tag>.tar registry.k8s.io/sig-storage/csi-resizer:<latest-tag>
    ctr -n k8s.io images export livenessprobe_<latest-tag>.tar registry.k8s.io/sig-storage/livenessprobe:<latest-tag>
    ctr -n k8s.io images export csi-node-driver-registrar_<latest-tag>.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:<latest-tag>

    필요한 모든 이미지에 대해 이 내보내기 명령을 반복하고, 이미지 이름과 태그를 적절하게 바꿉니다.

  5. BeeGFS CSI 드라이버 저장소와 모든 내보내기를 복사합니다. .tar 선호하는 방법을 사용하여 Air-Gapped 환경으로 파일을 전송합니다. 이 설정의 경우 다음을 저장하세요. beegfs-csi-driver 파일을 /home/<User>/beegfs-csi-driver 그리고 이미지에 /home/<User>/beegfs-csi-images .

필요한 이미지 가져오기

  1. 로 이동합니다 /home/<User>/beegfs-csi-images 이미지가 저장된 디렉토리를 만들고 containerd를 사용하여 각 이미지를 가져옵니다. 예를 들어:

    ctr -n k8s.io images import beegfs-csi-driver_<latest-tag>.tar
    ctr -n k8s.io images import csi-provisioner_<latest-tag>.tar
    ctr -n k8s.io images import csi-resizer_<latest-tag>.tar
    ctr -n k8s.io images import livenessprobe_<latest-tag>.tar
    ctr -n k8s.io images import csi-node-driver-registrar_<latest-tag>.tar
  2. 다음 명령을 실행하여 이미지가 containerd에 로드되었는지 확인하세요.

    crictl images

CSI 드라이버 오버레이 구성 및 배포

  1. 로 이동합니다 /home/<User>/beegfs-csi-driver 예배 규칙서.

  2. 기본적으로 오버레이 구성은 온라인 배포를 위해 설계되었습니다. 에어갭 배치를 수행하려면 오버레이 구성을 수정해야 합니다. "기본" 오버레이 폴더를 새 오버레이로 복사합니다. beegfs-overlay :

    cp -r deploy/k8s/overlays/default deploy/k8s/overlays/beegfs-overlay
  3. 편집하다 deploy/k8s/overlays/beegfs-overlay/kustomization.yaml 파일. 주석을 해제하고 업데이트하세요 images 다운로드한 정확한 태그가 포함된 섹션:

      - name: ghcr.io/thinkparq/beegfs-csi-driver
        newTag: <latest-tag>
        # digest: sha256:eb7ff01259e6770d0103f219e11b7ff334c9d9102a29ea0af95a3c0d7aec1ae3
      - name: k8s.gcr.io/sig-storage/csi-provisioner
        newName: registry.k8s.io/sig-storage/csi-provisioner
        newTag: <latest-tag>
      - name: k8s.gcr.io/sig-storage/csi-resizer
        newName: registry.k8s.io/sig-storage/csi-resizer
        newTag: <latest-tag>
      - name: k8s.gcr.io/sig-storage/livenessprobe
        newName: registry.k8s.io/sig-storage/livenessprobe
        newTag: <latest-tag>
      - name: k8s.gcr.io/sig-storage/csi-node-driver-registrar
        newName: registry.k8s.io/sig-storage/csi-node-driver-registrar
        newTag: <latest-tag>
  4. 이미지 풀 정책을 변경하여 Kubernetes가 로컬로 로드된 이미지를 사용하도록 설정합니다. Always 에게 Never . 라는 이름의 파일을 만듭니다. image-pull-policy.yaml 당신의 deploy/k8s/overlays/beegfs-overlay/ 다음 내용이 있는 디렉토리:

    # Patch for controller
    kind: StatefulSet
    apiVersion: apps/v1
    metadata:
      name: csi-beegfs-controller
    spec:
      template:
        spec:
          containers:
            - name: beegfs
              imagePullPolicy: Never
            - name: csi-provisioner
              imagePullPolicy: Never
            - name: csi-resizer
              imagePullPolicy: Never
    
    # Patch for node
    kind: DaemonSet
    apiVersion: apps/v1
    metadata:
      name: csi-beegfs-node
    spec:
      template:
        spec:
          containers:
            - name: beegfs
              imagePullPolicy: Never
            - name: node-driver-registrar
              imagePullPolicy: Never
            - name: liveness-probe
              imagePullPolicy: Never
    참고 환경 imagePullPolicy: Never Kubernetes가 containerd에 로드된 이미지를 사용하고 외부 레지스트리에서 가져오려고 시도하지 않도록 보장합니다.
  5. 열려 있는 deploy/k8s/overlays/beegfs-overlay/kustomization.yaml 다음 섹션을 추가합니다.

    patchesStrategicMerge:
      - image-pull-policy.yaml
    참고 그만큼 patchesStrategicMerge 섹션을 사용하면 사용자 정의 패치(예: 변경)를 적용할 수 있습니다. imagePullPolicy 기본 Kubernetes 매니페스트 위에. 경로를 확인하세요 image-pull-policy.yaml 당신의 것과 관련하여 정확합니다 kustomization.yaml 파일.

BeeGFS CSI 드라이버 설치

  1. 사용자 정의 오버레이를 사용하여 BeeGFS CSI 드라이버를 설치하세요. 이 단계에서는 로컬로 가져온 이미지 사용 및 업데이트된 이미지 풀 정책을 포함한 모든 구성 변경 사항이 적용됩니다.

    복제된 BeeGFS CSI 드라이버 저장소의 루트에서 다음을 실행합니다.

    kubectl apply -k deploy/k8s/overlays/beegfs-overlay
  2. 로 진행하세요예제 애플리케이션 배포 BeeGFS CSI 드라이버 설정을 배포하고 검증하기 위한 섹션입니다.

온라인 배포

Kubernetes 노드가 인터넷에 접속할 수 있는 경우 컨테이너 이미지를 수동으로 다운로드하거나 전송하지 않고도 BeeGFS CSI 드라이버를 직접 배포할 수 있습니다. 포드가 배포되면 자동으로 Image-Hub에서 이미지를 다운로드하고 필요한 서비스를 시작합니다.

드라이버 저장소 검색

  1. BeeGFS CSI 드라이버 GitHub 저장소를 로컬 시스템에 복제합니다.

    git clone https://github.com/ThinkParQ/beegfs-csi-driver.git

드라이버 구성

  1. 복제된 저장소 디렉토리로 이동하고 필요한 경우 기본 오버레이 디렉토리의 구성 파일을 업데이트합니다.

    ls deploy/k8s/overlays/default/

    다음과 같은 파일이 표시됩니다.

    csi-beegfs-config.yaml
    csi-beegfs-connauth.yaml
    kustomization.yaml
    namespace.yaml
    patches/
  2. BeeGFS 클라이언트 구성 파일의 이름이 지정되지 않은 경우 /etc/beegfs/beegfs-client.conf , 구성 파일을 가리키는 정확한 이름으로 심볼릭 링크를 만듭니다.

    ln -s /path/to/your/beegfs-client.conf /etc/beegfs/beegfs-client.conf
    참고 CSI 드라이버에는 구성 파일이 다음 위치에 있어야 합니다. /etc/beegfs/beegfs-client.conf 그리고 그 정확한 이름을 가지게 되었습니다.
  3. 저장 클래스, 비밀 또는 연결 인증과 같은 설정을 사용자 정의해야 하는 경우 관련 파일을 편집하세요. deploy/k8s/overlays/default/ 배치 전.

BeeGFS CSI 드라이버 설치

  1. 다음을 사용하여 기본 오버레이를 설치하세요. kubectl . 이렇게 하면 해당 레지스트리에서 필요한 이미지를 자동으로 가져와서 모든 필수 Kubernetes 리소스가 생성됩니다.

    kubectl apply -k deploy/k8s/overlays/default
  2. 리소스가 생성되었고 포드가 실행 중인지 확인하세요.

    kubectl get pods -n beegfs-csi
  3. 출력 예:

    namespace/beegfs-csi created
    serviceaccount/csi-beegfs-controller-sa created
    serviceaccount/csi-beegfs-node-sa created
    role.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-role created
    clusterrole.rbac.authorization.k8s.io/csi-beegfs-provisioner-role created
    rolebinding.rbac.authorization.k8s.io/csi-beegfs-privileged-scc-binding created
    clusterrolebinding.rbac.authorization.k8s.io/csi-beegfs-provisioner-binding created
    configmap/csi-beegfs-config-kkc8fg68fh created
    secret/csi-beegfs-connauth-b8kbm2mmm2 created
    statefulset.apps/csi-beegfs-controller created
    daemonset.apps/csi-beegfs-node created
    csidriver.storage.k8s.io/beegfs.csi.netapp.com created
    참고 사용 kubectl apply -k 오버레이(디렉토리 포함)의 경우 kustomization.yaml 파일). 사용 kubectl apply -f 일반 YAML 매니페스트 또는 매니페스트 디렉토리의 경우.
  4. 로 진행하세요예제 애플리케이션 배포 BeeGFS CSI 드라이버 설정을 검증하는 섹션입니다.

예제 애플리케이션 배포

BeeGFS CSI 드라이버(에어갭 또는 온라인)를 설치한 후 예제 애플리케이션을 배포하여 설정을 검증할 수 있습니다. 이 예제에는 StorageClass, PersistentVolumeClaim(PVC) 및 BeeGFS CSI 드라이버를 사용하는 Pod가 포함됩니다.

배포 전:

  1. BeeGFS 관리 노드의 IP 주소를 가져옵니다.

    비지에프에스 7.4

    beegfs-check-servers

    비지에프에스 8

    beegfs health network

    예상 출력:

    Management
    ==========
    mgmt [ID: 1]: reachable at 192.1.18.1:8008 (protocol: TCP)
  2. 관리 노드 IP를 업데이트하세요. examples/k8s/dyn/dyn-sc.yaml .

  3. 값을 업데이트합니다 volDirBasePath . 여러 클러스터가 동일한 BeeGFS 경로에서 볼륨을 동적으로 프로비저닝하는 것을 방지하려면 이 값을 고유한 값(예: k8s 클러스터 이름)으로 설정합니다.

    StorageClass 스니펫 예:
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: csi-beegfs-dyn-sc
    provisioner: beegfs.csi.netapp.com
    parameters:
      sysMgmtdHost: 192.1.18.1
      volDirBasePath: user_id_k8s
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true

배포

  1. 예제 애플리케이션 파일을 배포합니다.

    kubectl apply -f examples/k8s/dyn

    예상 출력:

    pod/csi-beegfs-dyn-app created
    persistentvolumeclaim/csi-beegfs-dyn-pvc created
    storageclass.storage.k8s.io/csi-beegfs-dyn-sc created
  2. 예제 Pod와 PVC가 실행 중이고 바인딩되었는지 확인하세요.

    kubectl get pod csi-beegfs-dyn-app
    kubectl get pvc csi-beegfs-dyn-pvc
참고 예시 애플리케이션 배포 단계는 Air-Gapped 배포와 Online 배포 모두에서 동일합니다. 관리 노드 IP를 업데이트했는지 확인하십시오. volDirBasePath 배포하기 전에 StorageClass 매니페스트에 추가합니다.