O Kubernetes é uma plataforma de orquestração de contêineres que oferece um conjunto de APIs que permitem a automação e o gerenciamento eficiente de aplicativos em contêineres.
Kind Install
Kind é uma ferramenta que permite executar clusters Kubernetes locais usando contêineres Docker
Para praticarmos, criaremos uma pequeno cluster utilizando o Kind (Kubernetes in Docker) para usarmos de exemplo
# For AMD64 / x86_64[$(uname-m)=x86_64]&&curl-Lo./kindhttps://kind.sigs.k8s.io/dl/v0.19.0/kind-linux-amd64
# For ARM64[$(uname-m)=aarch64]&&curl-Lo./kindhttps://kind.sigs.k8s.io/dl/v0.19.0/kind-linux-arm64
chmod+x./kind
sudomv./kind/usr/local/bin/kind
Criando um Cluster Kubernetes
Crie um cluster executando o seguinte comando:
12
kindcreatecluster
kubectlcluster-info
Para um cluster mais personalizado, use um arquivo config.yaml com a configuração de cluster desejada:
# Verificar a versão do cliente e do servidor Kubernetes
kubectlversion
# Obter informações sobre os componentes do cluster
kubectlcluster-info
# Verificar o status de saúde dos nós do cluster
kubectlgetnodes
# Obter informações sobre um ou mais recursos
kubectlget<resouce>-n<namespace>
kubectlgetnamespaces-A# -A: get resources on all namespaces# Criar um namespace
kubectlcreatenamespace<namespace>
# Trocar para um namespace específico
kubectlconfigset-context--current--namespace=<namespace>
# Listar os serviços disponíveis
kubectlgetservices
# Listar os deployments disponíveis
kubectlgetdeployments
#View cluster events:
kubectlgetevents
# Exibir eventos relacionados a um recurso
kubectldescribeevents
#View the kubectl configuration:
kubectlconfigview
# Verificar a utilização de recursos (CPU, memória) por um Pod
kubectltoppodmy-pod
# Obter informações sobre um pod em formato YAML/JSON
kubectlgetpod<pod>-oyaml/json
# Criar um novo recurso
kubectlcreate<resource><-optins>
kubectlcreatedeploymentmy-deployment--image=my-image:tag--replicas=2# Redimensionar o número de réplicas de um conjunto de réplicas (Deployment)
kubectlscaledeployment/<deployment-name>--replicas=3# Apagar um ou mais recursos
kubectldelete<resouce><resource-name>
kubectldeletepodmy-pod
# Exibir detalhes de um recurso específico
kubectldescribe<resource>-n<namespace>
kubectldescribepodmy-pod-n<namespace>
# Executar um comando em um contêiner de um Pod
kubectlexec<pod-name>-n<namespace>--<command>
kubectlexecmy-pod-n<namespace>--ls/app
# Executar um comando específico em todos os Pods de um conjunto de réplicas
kubectlexecdeployment/<deployment-name>--ls/app
# Criar um Pod temporário para executar um comando de depuração
kubectldebugmy-pod--image=debug-image:latest
# Acompanhar os logs de um Pod
kubectllogs<pod-name># Acessar a linha de comando de um contêiner em execução em um Pod
kubectlattach<pod-name>-c<container-name>
kubectlattachmy-pod-c<container-name>
# Expor um serviço para acesso externo
kubectlexposedeployment<deployment-name>--port=<port>
kubectlexposedeploymentmy-deployment--port=8080# Criar um encaminhamento de porta para acessar um Pod
kubectlport-forward<pod-name><container-port>:<host-port>
kubectlport-forwardmy-pod8080:80
# Criar um secret a partir de um arquivo ou valor
kubectlcreatesecret<type><secret-name>--from-file=<secret-file>.txt
kubectlcreatesecretgenericmy-secret--from-file=my-secret-file.txt
# Criar um ingress para rotear o tráfego externo para um serviço
kubectlcreateingressmy-ingress--rule=host=my-domain.com
# Criar um Job para executar uma tarefa em lote
kubectlcreatejobmy-job--image=my-image:tag
# Criar um cronjob para executar tarefas em intervalos regulares
kubectlcreatecronjobmy-cronjob--schedule="0 0 * * *"# Criar um PersistentVolume e PersistentVolumeClaim
kubectlcreatepersistentvolumemy-pv--size=1Gi
# Criar um ConfigMap a partir de um arquivo de configuração
kubectlcreateconfigmapmy-configmap--from-file=my-config.txt
# Atualizar a configuração de um recurso
kubectleditdeployment/<deployment-name>
# Atualizar a imagem de um Pod em execução
kubectlsetimagepod/my-podmy-container=my-image:tag
# Visualizar o estado de um rollout (deployment, replicaset, etc.)
kubectlrolloutstatusdeployment/<deployment-name>
Note: Para mais informações sobre o utilitário kubectl, veja: kubectl overview.
Deploying a kubernetes Dashboard UI
O kubernetes não possui uma interface grafica, mas podemos instalar uma com os seguintes comandos:
Em seguida, aplique o arquivo YAML usando o seguinte comando:
1
kubectlapply-fpod.yaml
Veja the Pod:
1
kubectlgetpods<pod-name>-n<namespace>
A saída do comando deve ser similar:
1234
NAME READY STATUS RESTARTS AGEmy-pod-h5qcc 1/1 Running 0 24mcloud-native-9rbfn 1/1 Running 0 24m...
Deployment
Use o comando kubectl create para criar um Deployment que gerencia um pod. O pod executa um contêiner com base na imagem fornecida.
12
# Run a test container image that includes a webserver
kubectlcreatedeploymenthello-node--image=registry.k8s.io/e2e-test-images/agnhost:2.39--/agnhostnetexec--http-port=8080