6
respostas

Erro ao criar volume tipo StatefulSet | Sem Minikube

insira seu cEvents:
  Type     Reason            Age        From               Message
  ----     ------            ----       ----               -------
  Warning  FailedScheduling  <unknown>  default-scheduler  0/3 nodes are available: 3 node(s) didn't find available persistent volumes to bind.
  Warning  FailedScheduling  <unknown>  default-scheduler  0/3 nodes are available: 3 node(s) didn't find available persistent volumes to bind.ódigo aqui

Estou tentando criar o Volume quando crio um pod do tipo StatefulSet, estou usando o K8S sem MiniKube podem de ajudar?

6 respostas

Olá MedRoom, tudo bem? Você poderia explicar melhor o seu cenário, não consegui entender bem como está seu ambiente!

Estou realizando curso de K8S, mas eu nao fiz a instalaçao do minikube, mas sim do proprio k8s onde tenho 1 master e 2 workers localmente. Quando eu crio o pods em stateful os volumes não são criados e por consequencia nao sobe o POD.

Você poderia fornecer seus arquivos yml, para gente poder verificar se tem algum diferente usando diretamente o Kubernetes.

# VOLUMES IMAGENS
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: permissao-imagens
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: local
  resources:
    requests:
      storage: 1Gi
---

# VOLUME SESSOES
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: permissao-sessao
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: local
  resources:
    requests:
      storage: 1Gi
---

# PODS
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: aplicacao-sistema-statefulset
spec:
  serviceName: aplicacao-sistema-statefulset
  selector:
    matchLabels:
      name: aplicacao-sistema-pod-statefulset
  template:
    metadata:
      labels:
        name: aplicacao-sistema-pod-statefulset
    spec:
      containers:
        - name: container-aplicacao-sistema-statefulset
          image: vnni/noticia-alura:v3
          ports:
            - containerPort: 80
          volumeMounts:
            - name: imagens
              mountPath: /var/www/html/uploads
            - name: sessoes
              mountPath: /tmp
      volumes:
        - name: imagens
          emptyDir: {}
          #persistentVolumeClaim:
            #claimName: permissao-imagens
        - name: sessoes
          emptyDir: {}
          #persistentVolumeClaim:
            #claimName: permissao-sessao
---

# Serviço de Cluster
apiVersion: v1
kind: Service
metadata:
  name: servico-aplicacao-sistema-statefulset
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      nodePort: 31822
  selector:
    name: aplicacao-sistema-pod-statefulset

Está ai, acabei colocando o emptyDir: {} em volumes e funcionou, porem nao sei se seria uma boa pratica

O emptyDir como fala na própria documentação é uma propriedade que informa que o volume vai existir enquanto o Pod existir, assim mesmo que o container reinicie o volume continua existindo, não vejo nenhum problema em seguir essa apordagem!

Esse erro comentado aqui, aconteceu tbm na AWS e Google Cloud.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software