Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro ao criar o Statefulset

kubectl create -f .\statefulset.yaml error: unable to recognize ".\statefulset.yaml": no matches for kind "StatefulSet" in version "apps/v1beta1"

Ao mudar para v1 o erro muda para:

error: error validating ".\statefulset.yaml": error validating data: ValidationError(StatefulSet.spec): missing required field "selector" in io.k8s.api.apps.v1.StatefulSetSpec;

5 respostas

Olá Alex,

Poderia por favor encaminhar o arquivo statefulset.yaml para análise?

Abs

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: statefulset-mysql
spec:
  serviceName: db
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
        - name: container-mysql
          image: mysql:5.7.19
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_DATABASE
              value: "loja"
            - name: MYSQL_USER
              value: "root"
            - name: MYSQL_ALLOW_EMPTY_PASSWORD
              value: "1"
          volumeMounts:
            - name: volume-mysql
              mountPath: /var/lib/mysql
      volumes:
        - name: volume-mysql
          persistentVolumeClaim:
            claimName: configuracao-mysql

Consegui criar com o seguinte código, porém não conectou a página no banco.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: statefulset-mysql
spec:
  serviceName: mysql
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: container-mysql
          image: mysql:5.7.19
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_DATABASE
              value: "loja"
            - name: MYSQL_USER
              value: "root"
            - name: MYSQL_ALLOW_EMPTY_PASSWORD
              value: "1"
          volumeMounts:
            - name: volume-mysql
              mountPath: /var/lib/mysql
      volumes:
        - name: volume-mysql
          persistentVolumeClaim:
            claimName: configuracao-mysql

Oi Alex,

Estava vendo o primeiro arquivo yaml, ele me parece correto, mas notei alguns espaços adicionais que acredito que possam estar causando o problema. Estou colocando destacado abaixo:

O código da esquerda é o que montamos no vídeo. Estou colocando abaixo o código para referência, poderia por favor fazer um novo teste?

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: statefulset-mysql
spec:
  serviceName: db
  template:
    metadata:
      labels:
       name: mysql
    spec:
      containers:
        - name: container-mysql
          image: mysql:5.5
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_DATABASE
              value: "loja"
            - name: MYSQL_USER
              value: "root"
            - name: MYSQL_ALLOW_EMPTY_PASSWORD
              value: "1"
          volumeMounts:
            - name: volume-mysql
              mountPath: /var/lib/mysql
      volumes:
       - name: volume-mysql
         persistentVolumeClaim:
           claimName: configuracao-mysql

Abs

O erro persiste, creio ser algo sobre o versionamento de algum componente meu local. No ambiente cloud do google, funcionou perfeitamente. Obrigado.