3
respostas

Posso fazer o kubernetes achar minhas imagens do docker local?

Quero que o Kubernetes ache minhas imagens localmente não só no Docker Hub. Como faço isso?

3 respostas

O processo é mais complicado, isso porque o Minikube contém um Docker daemon integrado para rodar os containers. Para usar o Docker daemon do minikube, precisaríamos colocar no terminal:

eval $(minikube docker-env)

Agora que estamos usando o Docker daemon do Minikube podemos criar nossa imagem customizada. Por exemplo:

docker build -t minha-imagem:v1 .

No arquivo yaml de configuração do POD, coloque a imagem criada anteriormente, por exemplo "minha-imagem:v1". O Kubernetes por padrão irá tentar fazer o Download dessa imagem de um registro, é preciso desabilitar essa opção com imagePullPolicy: Never. Segue exemplo de um arquivo de configuração do POD:

apiVersion: v1
kind: Pod
metadata:
  name: aplicacao
spec:
  containers:
    - name: container-x
      imagePullPolicy: Never
      image: minha-imagem:v1
      ports:
        - containerPort: 80

Depois para voltar o docker daemon default:

1 - sudo usermod -aG docker $(whoami)

2 - Faça logout e login na máquina

3- sudo service docker start

Fiz o que você descreveu e o resultado foi este:

➜  kubernetes git:(feature/basic-structure) ✗ kubectl create -f aplication.yml
pod "minha-imagem" created

➜  kubernetes git:(feature/basic-structure) ✗ kubectl get pods
NAME          READY     STATUS              RESTARTS   AGE
minha-imagem  0/1       ErrImageNeverPull   0          3m

Pode recomendar alguma documentação ou referência para que eu possa fazer este procedimento localmente?

Olá,

Pelo status do erro (ErrImageNeverPull), parece que o Kubernetes não está encontrando a imagem localmente. Só para certificar, você chegou a trocar inicialmente a variável de ambiente para utilizar o docker daemon do Kubernetes e somente depois você construiu a imagem?

Se você colocar docker images, você consegue visualizar a imagem criada? Para confirmar se você está utilizando o docker daemon do Kubernetes, deverão aparecer no comando docker images imagens do google containers.

Estou encaminhando o link da documentação sobre essa parte de imagens: https://kubernetes.io/docs/concepts/containers/images/#updating-images

Abs