Gerar e exportar a chave
Para acessar o kubernetes remotamente, é necessário definir a configuração e credenciais de acesso pela variável KUBECONFIG
. Para isso, deve ser gerado um arquivo de configuração:
mkdir -p $HOME/.kube
: Caso não exista, criar o diretório .kube
echo -n $KUBE_CONFIG_HOMOL | base64 -d > $HOME/.kube/config_homol
: Gerar o arquivo exportando a chave de acesso ao kubernetes, que nesse caso, está em codificado em base64 - Não é um requisito, só uma opção.export KUBECONFIG=~/.kube/<arquivo_gerado>
# ex.:
export KUBECONFIG=/home/<usuario>/.kube/config_homol
Utilizado para definição de limites no kubernetes. Os projetos podem/devem ser separados e controlados por namespaces.
Criar um namespace
kubectl create namespace <namespace>
Após criar, para visualizar
kubectl get namespace
Uma unidade do kubernetes. É objeto de controle dos pods, contém todas as especificações do deploy.
Visualizar os deployments
kubectl get deployments -n <namespace>
Criar um deployment
kubectl run <nome> --image=<image> -n <namespace>
# Ex: Criando e habilitando uma porta
kubectl run nginx --port 80 --image=nginx -n my-namespace
Expondo um deployment
Por padrão, apenas informando o comando para expor o deployment, será criado do tipo ClusterIP
, ou seja, somente para acesso interno no cluster.
kubectl expose deployment <nome> -n <namespace>
# Ex:
kubectl expose deployment nginx -n my-namespace
Para export o deployment, criando associando uma porta que permite o acesso externo, no browser informa-se a flag --type=NodePort
kubectl expose deployment <nome> --type=NodePort -n <namespace>
# Ex:
kubectl expose deployment nginx --type=NodePort -n my-namespace
Visualizar as informações de um deployment
kubectl describe deployments <nome-deploy> -n <namespace>
#Ex.:
kubectl describe deployments nginx -n my-namespace
Remover um deployment
kubectl delete deployments <nome-deploy> -n <namespace>
#Ex.:
kubectl delete deployments nginx -n my-namespace
Obtendo o código de criação do deployment
Com o código, é possível versionar, alterar, recriar o deployment mais facilmente
kubectl get deployments <nome-deploy> -o <tipo yaml|json> -n <namespace> > arquivo.<typo>
# Ex.:
kubectl get deployments nginx -o yaml -n my-namespace > arquivo.yaml
Abaixo e sendo controlados pelo deployment, estão os replicasets, que são criados juntamente com eles. Tem o objetivo de controlar a quantidade de pods.
kubectl get replicasets -n <namespace>
Estão os contêineres enviados através de um deployment. A quantidade de pods são controladas pelo replicaset
kubectl get pods -n <namespace>
Editar um serviço criado
Com o seguinte comando é possível editar o yaml do serviço
kubectl edit service <nome> -n <namespace>
# Ex.:
kubectl edit service nginx -n my-namespace
Criar deploy por arquivo yml
kubectl create -f <file-name>.yml --validate=false
Visualizar os nodes
kubectl get nodes
Consultar pods de um namespace
po
serve como abreviação parapods
kubectl get po -n <namespace>
Listar todos os pods de todos os namespaces
kubectl get po --all-namespaces
Listar o endereço de ip interno dos pods no namespace
kubectl get po -o wide -n <namespace>
Listar deployments em um namespace
kubectl get deployments -n <namespace>
Visualizar informações de um node
kubectl describe node <node-name>
Visualizar informações de um pod em um namespace
kubectl describe pod <pod-name> -n <namespace>
Visualizar informações de um pod em um namespace pelo deployment name
kubectl describe deployment <deployment-name> -n <namespace>
Ex.:
$ kubectl get deployments -n api-prod
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
celery-beat 1 1 1 0 1h
celery-flower 1 1 1 0 1h
celery-worker 1 1 1 0 1h
api 1 1 1 0 1h
$ kubectl describe deployment celery-flower -n api-prod
Name: celery-flower
Namespace: api-prod
CreationTimestamp: Wed, 25 Mar 2020 09:38:58 -0300
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
Selector: workload.user.cattle.io/workloadselector=deployment-api-prod-celery-flower
Replicas: 1 desired | 1 updated | 1 total | 0 available | 1 unavailable
...
Acessar o pod via ssh
Os passos para acessar o pod são:
kubectl get po -o wide -n <namespace>
kubectl exec -n <namespace> -it <pod-name> -- sh