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

Geral

Excelente curso, porém ficou algumas dúvidas:

  • Na opção de volume, não foi informado onde será salvo os arquivos no host, informou-se apenas de onde a informação irá vim /var/lib/mysql.
  • Para todo container em docker é necessário toda essa bunocracia ? ou seja, para cada container tem uns 2 ou 3 arquivos .yml, não tem como utilizar o kubernetes parecido com o compose, onde tudo fica dentro de um único arquivo.
  • Vi que para acessar a aplicação local foi utilizado a porta 31503, se tudo foi mapetado, o certo não seria acessar pela 80 ?
  • Como atualizar uma imagem do docker, imagine que temos uma imagem local deployada, porém uma nova versão foi buildada com um novo .war, então o Kubernetes deve ser atualizado, mas sempre que derruamos o POD, o mesmo sobe sozinho.
  • Em comparação com o swarm do docker, tudo que pode ser feito com ele, também pode ser feito com o Kubernetes ?

Acho que até o momento são essas, abraços.

2 respostas
solução!

Olá Matheus, tudo bem?

Agradeço pelo feedback, fico muito contente em saber que você gostou do curso. Estou colocando abaixo as respostas das questões levantadas.

É possível fazer dentro do mesmo arquivo yaml configurações de diferentes objetos, por exemplo, eu posso ter um arquivo yaml com a configuração do objeto Deployment e também do objeto Service. No curso achei melhor separar cada objeto em seu arquivo para não ficar um arquivo muito extenso, podendo assim explicar os passos de configurações em diferentes aulas, acreditando assim que seria mais fácil a assimilação dos alunos. Para fazer essa configuração você separaria a parte do Deployment e do Service com ---, parecido com o abaixo:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: aplicacao
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: aplicacao-pod
    spec:
      containers:
        - name: container-aplicacao-loja
          image: rafanercessian/aplicacao-loja:v1
          resources:
            requests:
              cpu: 40m
          ports:
            - containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
  name: servico-aplicacao
spec:
  type: LoadBalancer
  ports:
    - port: 80
  selector:
    name: aplicacao-pod

Com relação a porta o que acontece é o seguinte, quando configuramos o tipo de serviço para ser LoadBalancer, ocorrerá o roteamento para uma porta chamada NodePort que o mestre do Kubernetes vai configurar por padrão em um range que varia de (30000-32767), para podermos acessar o serviço.

Para fazermos o update de uma imagem do container poderíamos utilizar o comando:

$ kubectl rolling-update NOME_PODS --image=IMAGE:TAG

Segue link da documentação explicando um pouco mais sobre esses detalhes: https://kubernetes.io/docs/tasks/run-application/rolling-update-replication-controller/

O Docker Swarm e o Kubernetes embora tenham a mesma finalidade de realizar orquestração tem algumas diferenças entre si, uma das principais diria que o Swarm fica limitada a API do Docker enquanto que o Kubernetes utiliza sua própria API. Estou encaminhando o link onde você poderá ver um comparativo mais detalhado e prós e contras das soluções: https://www.upcloud.com/blog/docker-swarm-vs-kubernetes/

Obrigado Rafael, irei ver os links que mandou, amanhã pretendo começar a versão de teste onde vou retirar o Swarm e passar para Kubernetes, ja estava querendo fazer isso a algum tempo, porém ler a documentação do mesmo deu preguiça kkkk, o curso veio para salvar a pátria.

Abraçooos, do mais eu vou me virando aqui