Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida com o statefulset

Olá tudo bem pessoal?

Estou com um probleminha bem chato aqui, criei o statefulset abaixo:

apiVersion: apps/v1beta1
   kind: StatefulSet
   metadata:
     name: statefulset-postgres
   spec:
     serviceName: db
     template:
     ┆ metadata:
     ┆ ┆ labels:
     ┆ ┆ ┆name: postgres
     ┆ spec:
     ┆ ┆ containers:
     ┆ ┆ ┆ - name: postgres
     ┆ ┆ ┆ ┆ image: us.gcr.io/saax-182015/postgres:9.4
     ┆ ┆ ┆ ┆ ports:
     ┆ ┆ ┆ ┆ ┆ - containerPort: 5432
     ┆ ┆ ┆ ┆ env:
     ┆ ┆ ┆ ┆ ┆ - name: POSTGRES_PASSWORD
     ┆ ┆ ┆ ┆ ┆ ┆ value: "odoo"
     ┆ ┆ ┆ ┆ ┆ - name: POSTGRES_USER
     ┆ ┆ ┆ ┆ ┆ ┆ value: "odoo"
            volumeMounts:
     ┆ ┆ ┆ ┆ ┆ - name: volume-postgres
     ┆ ┆ ┆ ┆ ┆ ┆ mountPath: /var/lib/postgresql/data
     ┆ ┆ volumes:
     ┆ ┆ ┆ - name: volume-postgres
     ┆ ┆ ┆ ┆ persistentVolumeClaim:
     ┆ ┆ ┆ ┆ ┆ claimName: config-postgres

Porém só consigo fazer funcionar no GCP se remover as linhas abaixo e depois dar um kubectl replace com o bloco:

            volumeMounts:
     ┆ ┆ ┆ ┆ ┆ - name: volume-postgres
     ┆ ┆ ┆ ┆ ┆ ┆ mountPath: /var/lib/postgresql/data
     ┆ ┆ volumes:
     ┆ ┆ ┆ - name: volume-postgres
     ┆ ┆ ┆ ┆ persistentVolumeClaim:
     ┆ ┆ ┆ ┆ ┆ claimName: config-postgres

Eu criei o config-postgres antes de rodar o statefulset e depois e não funciona, só funciona quando dou um replace no volume monts, alguém já passou por issos?

6 respostas

Olá Jônatas, tudo bem?

Eu tive um problema parecido no curso com o MySQL, até hoje não descobri ao certo o real motivo, mas esse mapeamento dos volumes só funcionou no Google Cloud com a versão 5.5 do MySQL, da versão 5.6 em diante não funcionava. Pelo que pesquisei na época, alguns usuários da comunidade do Kubernetes relataram que tiveram mudanças no Dockerfile do MySQL que fizeram com que o mapeamento do volume parasse de funcionar, será que não é o mesmo caso do Postgress? Consegue passar seu arquivo config-postgres para que eu possa fazer um teste por aqui?

Abs

Olá Rafael,

Pensei que poderia ser isso, o estranho que dando um kubectl replace com o arquivo de configuração, vendo pelas logs ele começa a usar o volume normalmente.

Meu arquivo de configuração:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: config-postgres
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Vou testar o statefulset com o postgres 9.6 pra ver.

Olá Jônatas, tudo bem?

Obrigado pelo retorno, eu fiz um teste localmente com o Minikube, mas tive um erro com relação a permissão da imagem do container. Você conseguiu resolver?

Um outro ponto que ia comentar, tem a comunidade do Kubernetes no slack que é bem legal, os usuários se ajudam muito e acredito que alguém já deve ter tido alguma experiência com o postgress. Sugiro você entrar no grupo do slack do Kubernetes: http://slack.k8s.io/

Abs

Oi rafael tudo bem?

Então agora estou testando com o postgres:latest na imagem pelo que vi parece que o erro está dando por que o disco criado não está vazio.

Vou entrar na comunidade obrigado :)

solução!

Ola Rafael,

Acho que consegui resolver, adicionei mais um valor no env e parou de dar erro:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: statefulset-postgres
spec:
  serviceName: db
  template:
    metadata:
      labels:
       name: postgres
    spec:
      containers:
        - name: postgres
          image: us.gcr.io/saax-182015/postgres:9.4
          ports:
            - containerPort: 5432
          env:
            - name: POSTGRES_PASSWORD
              value: "odoo"
            - name: POSTGRES_USER
              value: "odoo"
            - name: PGDATA
              value: /var/lib/postgresql/data/pgdata
          volumeMounts:
            - name: pg-data
              mountPath: /var/lib/postgresql/data
      volumes:
        - name: pg-data
          persistentVolumeClaim:
            claimName: config-postgres

Opa legal mesmo, obrigado por compartilhar :)

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