기본적으로 하나의 Google Distributed Cloud Connected 랙 노드에서 실행되는 워크로드는 다른 Distributed Cloud Connected 랙 노드의 로컬 스토리지에 액세스할 수 없습니다. 하지만 Distributed Cloud 연결 랙이 Rakuten Symcloud Storage를 사용하도록 구성할 수 있습니다. 이는 각 Distributed Cloud 연결 노드에서 로컬 스토리지 추상화 레이어 역할을 하며 다른 Distributed Cloud 연결 노드에서 실행되는 워크로드에 로컬 스토리지를 제공하는 서드 파티 솔루션입니다. Symcloud Storage는 Google Distributed Cloud connected 서버의 기본 스토리지 옵션이자 유일한 스토리지 옵션입니다.
Symcloud Storage는 Google Cloud Marketplace에서 배포되며 여기에 명시된 약관이 적용됩니다. Google은 Distributed Cloud connected에서 Symcloud Storage 사용에 대한 제한적인 지원을 제공하며 지원을 위해 서드 파티 제공업체에 문의할 수 있습니다. Symcloud Storage용 소프트웨어 업데이트는 Distributed Cloud 연결 소프트웨어 업데이트에 포함됩니다.
Symcloud Storage 클래스
이 섹션에서는 Symcloud Storage가 Distributed Cloud Connected 클러스터에서 사용 설정할 수 있는 스토리지 클래스를 설명합니다. 분산 클라우드에 연결된 Symcloud Storage는 robin-rwx 스토리지 클래스나 맞춤 구성된 RWX 파일 시스템 모드 볼륨을 지원하지 않습니다.
Symcloud 스토리지 클래스에 대한 자세한 내용은 Kubernetes에서 Robin CNS 사용을 참고하세요.
robin 스토리지 클래스
robin 스토리지 클래스는 기본 읽기-쓰기-한 번 (RWO) 스토리지 클래스입니다. 다음 예에서는 클래스의 인스턴스화를 보여줍니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
robin-immediate 스토리지 클래스
robin-immediate 스토리지 클래스는 해당 영구 볼륨 신청을 만든 직후 영구 볼륨이 생성된다는 점을 제외하고 robin와 동일합니다. 다음 예시는 클래스의 인스턴스화를 보여줍니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-immediate
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
robin-repl-3 스토리지 클래스
robin-repl-3는 여러 Distributed Cloud 노드에 걸쳐 있는 복제본이 3개인 RWO 스토리지 클래스입니다. 다음 예시는 클래스의 인스턴스화를 보여줍니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: robin-repl-3
labels:
app.kubernetes.io/instance: robin
app.kubernetes.io/managed-by: robin.io
app.kubernetes.io/name: robin
provisioner: robin
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
replication: "3"
faultdomain: host
기본 요건
시작하기 전에 다음 단계를 완료하세요.
- 타겟 Distributed Cloud 연결 프로젝트의 로깅 및 모니터링을 구성합니다.
- 타겟 Distributed Cloud Connected 클러스터를 만듭니다.
- 타겟 Distributed Cloud 연결 클러스터의 포드가 Google Cloud 데이터 센터에 도달할 수 있도록 Distributed Cloud 네트워킹을 구성합니다.
- Symcloud Storage에서 추상화하지 않을 각 Distributed Cloud 노드에 각
local-block영구 볼륨을 바인딩합니다. 바인딩된local-block영구 볼륨을 바인딩 해제하면 Symcloud Storage를 설치할 때 해당 영구 볼륨의 콘텐츠가 삭제됩니다. 자세한 내용은 Kubernetes 문서의 바인딩을 참고하세요.
Distributed Cloud 연결 노드에 Symcloud Storage 설치
분산 클라우드 연결 노드에 Symcloud Storage를 설치하려면 다음 단계를 완료하세요.
다음 명령어를 사용하여 Symcloud Storage 라이선스를 클러스터에 적용합니다.
LICENSE_FILE을 Symcloud Storage 라이선스 파일의 전체 경로 및 이름으로 바꿉니다.kubectl apply -f LICENSE_FILE -n robin-admin
다음 명령어를 사용하여
RobinCluster서비스와 모든 Symcloud 스토리지 노드의 상태를 확인합니다.kubectl describe robinclusters -n robinio
이 명령어는 다음과 유사한 출력을 반환합니다.
[...] Status: [...] Phase: Ready robin_node_status: [...] Status: Ready [...] Status: Ready [...] Status: Ready [...]서비스와 노드의 예상 상태는
Ready입니다.
Symcloud Storage를 기본 스토리지 클래스로 설정
다음 명령어를 사용하여 Distributed Cloud 연결 클러스터에서 Symcloud Storage를 기본 스토리지 클래스로 설정합니다. STORAGE_CLASS을 Symcloud 스토리지 클래스 중 하나로 바꿉니다.
kubectl patch storageclass STORAGE_CLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
기본 스토리지 클래스 설정에 관한 자세한 내용은 Kubernetes 문서의 기본 StorageClass 변경을 참고하세요.
워크로드의 추상화된 Symcloud 스토리지 볼륨 구성
이 섹션에서는 Symcloud Storage 클래스를 사용하여 Distributed Cloud 연결 워크로드의 추상화된 스토리지를 구성하는 방법을 보여주는 예를 제공합니다. Symcloud Storage 볼륨 구성에 대한 자세한 내용은 Kubernetes에서 Robin CNS 사용을 참고하세요.
파일 시스템 모드에서 ext4 RWO 볼륨 구성
다음 예시에서는 ext4 파일 시스템을 사용하여 파일 시스템 모드에서 RWO 볼륨의 영구 볼륨 클레임을 구성하는 방법을 보여줍니다. STORAGE_CLASS을 Symcloud 스토리지 클래스 중 하나로 바꿉니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-fs-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
블록 모드에서 RWO 볼륨 구성
다음 예에서는 블록 모드에서 RWO 볼륨의 영구 볼륨 클레임을 구성하는 방법을 보여줍니다. STORAGE_CLASS를 Symcloud Storage 클래스 중 하나로 바꿉니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-block-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
volumeMode: Block
기존 볼륨의 구성 수정
다음 예시는 주석을 사용하여 기존 Symcloud 스토리지 LZ4 압축 RWO 볼륨의 구성을 수정하는 방법을 보여줍니다.
STORAGE_CLASS을 Symcloud 스토리지 클래스 중 하나로 바꿉니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: compressed-rwo-fs-pvc
annotations:
robin.io/compression: LZ4
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
다음 예시는 주석을 사용하여 xfs 파일 시스템으로 기존 Symcloud Storage RWO 볼륨의 구성을 수정하는 방법을 보여줍니다.
STORAGE_CLASS을 Symcloud 스토리지 클래스 중 하나로 바꿉니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rwo-xfs-pvc
annotations:
robin.io/fstype: xfs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: STORAGE_CLASS
Symcloud Storage CLI 클라이언트 구성
Symcloud Storage는 Symcloud Storage 구성을 관리하는 데 사용할 수 있는 명령줄 인터페이스 (CLI) 클라이언트를 제공합니다. Distributed Cloud 연결 클러스터에서 클라이언트를 구성하려면 다음 단계를 완료하세요.
Distributed Cloud connected 클러스터에 배포된
RobinCluster서비스 인스턴스에서 사용되는 Symcloud Storage 이미지 경로를 가져오고 다음과 같이 환경 변수를 설정합니다.image_robin=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_robin}') image_registry_path=$(kubectl get robincluster -o jsonpath='{.items[].spec.image_registry_path}') ROBIN_CNS_IMAGE="$image_registry_path/$image_robin"다음 콘텐츠로
robincli리소스를 만듭니다.kind: Deployment apiVersion: apps/v1 metadata: name: robincli namespace: default labels: name: robincli spec: replicas: 1 selector: matchLabels: name: robincli template: metadata: annotations: product: robin labels: name: robincli spec: containers: - name: robincli image: ROBIN_CNS_IMAGE workingDir: /root command: ["/bin/bash","-c","mkdir -p /root/.robin; ln -s -t /usr/lib/python3.7/site-packages/ /opt/robin/current/python3/site-packages/robincli /opt/robin/current/python3/site-packages/stormgr_def.py /opt/robin/current/python3/site-packages/stormgr_lib.py; /opt/robin/current/bin/robin client add-context robin-master.robinio --set-current; while true; do sleep 10000; done"] resources: requests: memory: "10Mi" cpu: "100m"ROBIN_CNS_IMAGE을 1단계에서 가져온 이미지의 전체 저장소 경로와 이름으로 바꿉니다.Distributed Cloud 연결 클러스터에
robincli리소스를 적용합니다.초기 설치 시 Symcloud Storage는 무작위 비밀번호를 사용하여
robinio네임스페이스에default-admin-user보안 비밀을 생성합니다. 다음 명령어를 사용하여 이러한 로그인 사용자 인증 정보를 가져옵니다.사용자 이름을 가져옵니다.
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.username}' | base64 -d비밀번호를 가져옵니다.
kubectl -n robinio get secret default-admin-user -o jsonpath='{.data.password}' | base64 -d
새로 만든 포드에 로그인하고 클라이언트를 실행합니다.
kubectl exec -it robincli -- bash
Symcloud Storage의 제한사항
Distributed Cloud Connected와 함께 Symcloud Storage를 사용하는 경우 Distributed Cloud Connected 클러스터가 3개 이상의 Distributed Cloud Connected 노드로 구성된 경우에만 고가용성을 달성할 수 있습니다.