복붙노트

[REDIS] 디지털 오션 포드는 언 바운드 즉시 PersistentVolumeClaims있다

REDIS

디지털 오션 포드는 언 바운드 즉시 PersistentVolumeClaims있다

나는 디지털 오션에서는 Kubernetes에서 레디 스 클러스터를 실행하려합니다. 의한 PoC, 나는 단순히 온라인 내가 찾은 예제를 실행 시도 (https://github.com/sanderploegsma/redis-cluster/blob/master/redis-cluster.yml), 실행시 적절하게 포드를 회전 할 수있는 로컬 minikube를 사용하여.

디지털 오션에 실행 그러나, 나는 항상 다음과 같은 오류가 발생합니다 :

난 아무것도 변화하지 오전 감안할 때, 나는 확실하지 않다 왜이 작동하지 않을 것입니다. 사람이 어떤 제안이 있습니까?

편집 : 몇 가지 추가 정보

$ kubectl describe pvc  
Name:          data-redis-cluster-0
Namespace:     default
StorageClass:  
Status:        Pending
Volume:        
Labels:        app=redis-cluster
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
Events:
  Type       Reason         Age                     From                         Message
  ----       ------         ----                    ----                         -------
  Normal     FailedBinding  3m19s (x3420 over 14h)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set
Mounted By:  <none>

편집 : 기본 저장 클래스를 설정 부분적으로 문제가 해결! 그러나, 노드는 바인딩에 사용 가능한 볼륨을 찾을 지금 수 없습니다 :

PVC를 설명 kubectl :

Name:          data-redis-cluster-0
Namespace:     default
StorageClass:  local-storage
Status:        Pending
Volume:        
Labels:        app=redis-cluster
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
Events:
  Type       Reason                Age                     From                         Message
  ----       ------                ----                    ----                         -------
  Normal     WaitForFirstConsumer  12m (x9 over 13m)       persistentvolume-controller  waiting for first consumer to be created before binding
  Normal     WaitForFirstConsumer  3m19s (x26 over 9m34s)  persistentvolume-controller  waiting for first consumer to be created before binding

포드 설명 kubectl 레디 스를 클러스터-0

....
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  16m (x25 over 17m)   default-scheduler  0/5 nodes are available: 1 node(s) had taints that the pod didn't tolerate, 4 node(s) didn't find available persistent volumes to bind.

사우스 캐롤라이나 설명 kubectl

Name:                  local-storage
IsDefaultClass:        Yes
Annotations:           storageclass.kubernetes.io/is-default-class=true
Provisioner:           kubernetes.io/no-provisioner
Parameters:            <none>
AllowVolumeExpansion:  <unset>
MountOptions:          <none>
ReclaimPolicy:         Delete
VolumeBindingMode:     WaitForFirstConsumer
Events:                <none>

는 Kubernetes 관리자는 로그를 깍지 :

I1028 15:30:56.154131       1 event.go:221] Event(v1.ObjectReference{Kind:"StatefulSet", Namespace:"default", Name:"redis-cluster", UID:"7528483e-dac6-11e8-871f-2e55450d570e", APIVersion:"apps/v1", ResourceVersion:"2588806", FieldPath:""}): type: 'Normal' reason: 'SuccessfulCreate' create Claim data-redis-cluster-0 Pod redis-cluster-0 in StatefulSet redis-cluster success
I1028 15:30:56.166649       1 event.go:221] Event(v1.ObjectReference{Kind:"PersistentVolumeClaim", Namespace:"default", Name:"data-redis-cluster-0", UID:"76746506-dac6-11e8-871f-2e55450d570e", APIVersion:"v1", ResourceVersion:"2588816", FieldPath:""}): type: 'Normal' reason: 'WaitForFirstConsumer' waiting for first consumer to be created before binding
I1028 15:30:56.220464       1 event.go:221] Event(v1.ObjectReference{Kind:"StatefulSet", Namespace:"default", Name:"redis-cluster", UID:"7528483e-dac6-11e8-871f-2e55450d570e", APIVersion:"apps/v1", ResourceVersion:"2588806", FieldPath:""}): type: 'Normal' reason: 'SuccessfulCreate' create Pod redis-cluster-0 in StatefulSet redis-cluster successful
I1028 15:30:57.004631       1 event.go:221] Event(v1.ObjectReference{Kind:"PersistentVolumeClaim", Namespace:"default", Name:"data-redis-cluster-0", UID:"76746506-dac6-11e8-871f-2e55450d570e", APIVersion:"v1", ResourceVersion:"2588825", FieldPath:""}): type: 'Normal' reason: 'WaitForFirstConsumer' waiting for first consumer to be created before binding

해결법

  1. ==============================

    1.이:

    이:

    그리고 kubectl에 대해 빈 출력은 더 스토리지 클래스가 없다는 것을 SC 방법을 설명합니다.

    나는 디지털 오션에 대한 CSI-드라이버를 설치하는 것이 좋습니다. 즉,는 Kubernetes CSI 인터페이스를 사용하여 DO-블록 스토리지 클래스를 생성합니다.

    또 다른 옵션은 로컬 스토리지를 사용하는 것입니다. 로컬 스토리지 클래스를 사용 :

    $ cat <<EOF
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: local-storage
    provisioner: kubernetes.io/no-provisioner
    volumeBindingMode: WaitForFirstConsumer
    EOF | kubectl apply -f -
    

    그런 다음 각각의 경우에 대해 당신은 당신의 PVC 당신이 storageClassName을 지정하지 않으면 기본 스토리지 클래스로 설정해야 할 수도 있습니다 :

    $ kubectl patch storageclass local-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    

    또는

    $ kubectl patch storageclass do-block-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    
  2. ==============================

    2.그것은 PersistentVolumeClaims를 사용하여 statefulSet입니다

    그것은 PersistentVolumeClaims를 사용하여 statefulSet입니다

    당신은 PersistentVolumeClaim가 거기에서 저장을 할 수 있도록 클러스터의 기본 storageClass를 구성해야합니다.

    이 오류없이 성공 있도록 minikube에서 하나는 이미 볼 수 있습니다 :

    C02W84XMHTD5:ucp iahmad$ kubectl get sc --all-namespaces 
    NAME                 PROVISIONER                AGE
    standard (default)   k8s.io/minikube-hostpath   7d
    
  3. from https://stackoverflow.com/questions/52975887/digitalocean-pod-has-unbound-immediate-persistentvolumeclaims by cc-by-sa and MIT license