분산 컨테이너에 저장된 Longhorn을 시도하려고 했지만 제대로 진행되지 않았습니다.

5769 단어 Dockerkubernetes
Docker를 사용하면 응용 프로그램의 휴대성이 높아지지만 클라우드 이외의 환경에서 저장 방법의 문제도 함께 얽히게 됩니다.
찾아봤는데 Rancher의 Longhorn을 사용하면 분포식 용기 저장소를 만들 수 있기 때문에 Nutanix와 같은 초중합은 스스로 만들 수 있지 않나요???그래서 IT 활동 달력 소재로 도전했습니다.
하지만 순조롭지 못하다
어쨌든 순조롭지 못한 부분을 써 보았다.

k8s의 준비


Longhorn은 k8s가 필요합니다.그러고 보면 Rancher 2.0은 k8s의 기초입니다. 같은 회사이기 때문에 순조롭게 진행되겠죠?해봤지만 베타 때문인지 제 docker-toolbox 환경에서 Rancher 2.0에 많은 오류가 생겨서 일찌감치 먹구름이 끼었습니다.
당분간 GKE 사용을 포기하기로 했습니다.GKE의 준비는 다음과 같다.
$ gcloud components install kubectl
$ gcloud container clusters create "cluster-1" --image-type "UBUNTU" 
$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user="<your mail address>"
clusterrolebinding "cluster-admin-binding" created
참고rancher/longhorn 기본적으로 image-type을 만드는 대신 Ubuntu를 사용합니다.
역할 생성 권한이 필요합니다create clusterrolebinding.

장기 호스트 배포


다음은 Longhorn의 배치입니다.rancher/longhorn로부터 YAML 취득 및 실행
$ git clone https://github.com/rancher/longhorn.git
$ cd longhorn
$ kubectl create -f deploy\example.yaml
clusterrolebinding "longhorn-bind" created
clusterrole "longhorn-role" created
serviceaccount "longhorn-service-account" created
daemonset "longhorn-manager" created
service "longhorn-backend" created
deployment "longhorn-ui" created
service "longhorn-frontend" created
daemonset "longhorn-driver" created
입구점을 검사하고longhorn-ui에 연결을 시도합니다.
kubectl get svc
NAME                TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
kubernetes          ClusterIP      10.31.240.1     <none>          443/TCP        8m
longhorn-backend    ClusterIP      10.31.246.205   <none>          9500/TCP       2m
longhorn-frontend   LoadBalancer   10.31.250.26    xxx.xxx.xxx.xxx 80:32039/TCP   2m
위 상황에서 브라우저를 통해 다음 내용에 접근
http://xxx.xxx.xxx.xxx/dashboard

여기까지는 비교적 순조롭다.

Longhorn을 사용하여 컨테이너 만들기


이어서 Longhorn을 사용하여 용기를 만듭니다.
  volumes:
  - name: vol
    flexVolume:
      driver: "rancher.io/longhorn"
      fsType: "ext4"
      options:
        size: "2G"
        numberOfReplicas: "2"
        staleReplicaTimeout: "20"
        fromBackup: ""
이렇게 지정한 것 같습니다.flex Volume는 사실 잘 알려지지 않았지만 옵션 내용상 실행 시 동적 제작 영역의 기능으로 추정된다.example.yaml 다 된 것 같아서 배치해 봤어요.
$ kubectl create -f examples\example.yaml
pod "volume-test" created
언뜻 보기에는 성공했지만 k8s의 UI 측면에서 다음과 같은 오류가 있습니다
Unable to mount volumes for pod "volume-test_default(fc0bd9e1-e4c1-11e7-bf33-42010a800176)": timeout expired waiting for volumes to attach/mount for pod "default"/"volume-test". list of unattached/unmounted volumes=[voll]
보아하니 구역의 부착이 실패한 것 같다.먼저 수동으로 만들어야 하지 않을까 해서longhorn-ui에서 저장소를 만들어 보았지만 순조롭지 못했습니다...
초보적인 일에 걸려서 넘어진 것 같지만 이번에는 여기서 시간이 없어요orz

총결산


이번에는 롱혼을 해보고 싶은데 결과가 좋지 않아요.공부도 모자라서 복수자야...
그러나 분포식 용기 저장이 순조롭게 진행되면 용기의 운용에 큰 진전이 있을 것이기 때문에 성능 측정 등을 포함해 다시 도전하고 싶습니다.
그럼, Happy Hacking!

참고 자료

  • https://github.com/rancher/longhorn
  • https://www.slideshare.net/ShannonWilliams14/introducing-project-longhorn-april-2016-rancher-online-meetup
  • 좋은 웹페이지 즐겨찾기