diegourban / kubernetes-sandbox

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

kubernetes-sandbox

  • Kubernetes é um cluster que administra e orquestra container

  • Minikube é um ambiente de teste do Kubernetes

  • Para rodar Minikube serve o comando: minikube start

  • kubectl é a ferramenta na linha de comando para gerenciar o cluster Kubernetes

  • Para definir um container no Kubernetes é preciso definir um Pod

  • Um Pod é a menor unidade de deploy no Kubernetes

  • Um Pod agrupa um ou mais containers que compartilham a mesma interface de rede e sistema de arquivos

  • Um Pod é um objeto no Kubernetes descrito por um arquivo YML

  • O YML do Pod define qual é a imagem, porta, versão, nome entre outras configurações

  • Kubernetes consiste de masters e nodes/minions;

  • um Deployment funciona como um controlador do Pod

  • um deployment define as quantidade das replicas

  • um deployment garante a disponibilidade do Pod

  • para ter acesso ao deployment fora do Kubernetes precisa de um Service

  • existem vários tipos de serviços, entre eles o LoadBalancer

  • o serviço fica associado ao deployment ou Pods através do Selector

  • minikube service --url devolve a URL para testar o service

  • um Deployment é um controller stateless e não compartilha nenhuma informação entre Pods

  • um StatefulSet permite compartilhar informações entre Pods

  • para tal devemos definir um volumeMounts, volumes e um PersistentVolumeClaim

  • o volumeMounts define a pasta concreta de montagem e dá um nome para o volume

  • o item volumes associa nome do volume com uma permissão

  • o PersistentVolumeClaim define as permissões e o tamanho do recurso

  • Parametrização de CPU e memória de cada Pod

  • a configuração para tal é feita no container através de um elemento resources onde podemos especificar requests e limits

  • requests é o valor o container está garantido de ter

  • limits é o máximo permitido o que o container terá disponível

    resources:
    requests:
      memory: "16Mi"
      cpu: "100m"
    limits:
      memory: "32Mi"
      cpu: "200m"
  • Replicação automática do ambiente usando a tarefa Horizontal Pod Autoscaler
  • nessa configuração definimos o valor do CPU que, quando ultrapassa, causa um aumento de replicas
    kubectl autoscale \
    deployment \
    aplicacao-noticia-deployment \
    --cpu-percent=50 \
    --min=1 \
    --max=10
  • Aprendemos também como habilitar um addon no Minikube:
  • um addon é um plugin/funcionalidade extra do minikube

para listar os addons minikube addons list

para habilitar minikube addons enable metrics-server

Para desabilitar minikube addons disable metrics-server

Comandos Minikube

O Minikube implementa um cluster local do Kubernetes para Linux, Mac e Windows. O objetivo principal é ser uma ótima ferramenta para o desenvolvimento local de aplicativos Kubernetes para experimentar, aprender, rodar testes e usar na integração contínua.

Para iniciar o Minikube: minkube start

Para iniciar o Minikube com uma versão especifica do Kubernetes: minikube start --kubernetes-version="v1.16"

Para acessar o dashboard do Kubernetes em execução: minikube dashboard

Para ver o status do Minikube: minikube status

Para parar o cluster: minikube stop

Para se conectar pelo SSH com o nó master do cluster: minikube ssh

E para remover o cluster: minikube delete

E para remover todos os clusters e perfis: minikube delete --all

Comandos kubectl

para listar os pods kubectl get pods

tbm funciona para deployments e services, por exemplo: kubectl get services

para detalhes de um pod kubectl describe pod <nome-pod>

o comando describe tbm funciona para deployment e service, por exemplo: kubectl describe service <nome>

para criar pod, deployment ou service a partir de um arquivo yml kubectl create -f <nome-arquivo-yml>

para remover pod, deployment ou service a partir de um arquivo yml kubectl delete -f <nome-arquivo-yml>

para remover um pod kubectl delete pod <nome-pod>

para remover um deployment kubectl delete deployment <nome-deployment>

para remover um service kubectl delete service <nome-service>

About


Languages

Language:HTML 59.5%Language:JavaScript 30.0%Language:CSS 9.9%Language:PHP 0.5%Language:TSQL 0.1%Language:Dockerfile 0.0%Language:Shell 0.0%