redis-cluster
redis-cluster copied to clipboard
Storage class missing
First of all - THANKS! You saved me a bunch of time!
I had an issue with deploying the cluster initially and thought I'd share it. I don't have a complete understanding of deploying Kubernetes outside of EKS and local - so this could just be something that's assumed:
I deployed the cluster to a namespace (redis-example) on my local machine
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-28T20:03:09Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:05:37Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
$ kubectl get pods -n redis-example
NAME READY STATUS RESTARTS AGE
redis-cluster-0 0/1 Pending 0 38m
$ kubectl get pvc -n redis-example
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-redis-cluster-0 Pending 38m
$ kubectl describe pvc/data-redis-cluster-0 -n redis-example
Name: data-redis-cluster-0
Namespace: redis-example
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 4m (x143 over 39m) persistentvolume-controller no persistent volumes available for this claim and no storage class is set
I saw the same thing when deploying this in EKS. I ended up setting the storage class in the yaml:
volumeClaimTemplates:
- metadata:
name: data
labels:
name: redis-cluster
namespace: redis-example
spec:
storageClassName: default
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
Now it deploys fine in EKS. Local still failed until I defined a StorageClass there (named default). For newbies it would be useful to add this to the README. Thanks again. ......
Hi @kjenney, thanks for reporting this! Yes, I was kind of aware that this setup is not plug-and-play on different providers, I only set it up on Minikube and on GKE. For the latter I also needed to specify a storage class IIRC, which broke the local setup. I therefore decided to omit it from the tutorial, because I figured it would be different for each provider, which would only cause more confusion.
If all providers support the storage class default
, it might make sense to update the tutorial, noting that you need to create it yourself when running on Minikube.
I use ubuntu/microk8s and this is taken care of by microk8s.enable storage