Kubernetes cheatsheet
Alguns comandos frequentes do k8s com parâmetros
Aqui está o meu k8s cheat sheet
cobrindo os comandos mais importantes do Kubernetes most important commands e conceitos desde a instalação até a execução de containers e limpeza:
Instalação do Kubernetes
Usando o Kubeadm
Para instalar o Kubernetes usando o kubeadm
, siga estas etapas:
-
Prepare o Ambiente:
- Certifique-se de que os módulos do kernel necessários estejam ativados:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Reinicie o sistema para aplicar as alterações.
- Certifique-se de que os módulos do kernel necessários estejam ativados:
-
Instale o Docker e outros pré-requisitos:
- Instale o Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Instale
ebtables
eethtool
:sudo apt-get install ebtables ethtool
- Instale o suporte HTTPS e
curl
se necessário:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Adicione o repositório do Kubernetes e instale
kubeadm
,kubelet
ekubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Instale o Docker:
-
Inicialize o Cluster do Kubernetes:
- Inicialize o primeiro nó de plano de controle:
sudo kubeadm init
- Adicione nós adicionais de plano de controle e de trabalho:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Inicialize o primeiro nó de plano de controle:
Usando Minikube ou Kind
Para desenvolvimento local, você pode usar minikube
ou kind
:
-
Minikube:
minikube start
Siga o guia oficial [Get Started! guide].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Siga a página [Kind Quick Start page].
Comandos Comuns do kubectl
Comandos Básicos
-
Obtenha informações sobre recursos:
kubectl get <resource> # Liste recursos (ex: pods, serviços, implantações) kubectl get pods --all-namespaces # Liste todos os pods em todos os namespaces kubectl get pods -o wide # Liste pods com mais detalhes kubectl get pod my-pod -o yaml # Obtenha a configuração YAML de um pod.
-
Descreva recursos:
kubectl describe <resource> # Descrição detalhada de um recurso (ex: nós, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Crie recursos:
kubectl create -f <manifest-file> # Crie recursos a partir de um arquivo YAML ou JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Crie um ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Crie um Secret.
-
Exclua recursos:
kubectl delete <resource> <name> # Exclua um recurso (ex: pod, implantação) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Gerenciamento de Pods
-
Defina um comando e argumentos para um container:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Execute um comando em um shell:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
Gerenciamento de ConfigMap e Secret
-
Crie um ConfigMap:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Crie um Secret:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Gerenciamento de Implantação e Serviço
-
Crie uma Implantação:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Exponha uma Implantação como um Serviço:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Gerenciamento de Namespace e Nó
-
Liste Namespaces:
kubectl get namespaces
-
Crie um Namespace:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Liste Nós:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Monitoramento e Depuração
-
Visualize logs:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Siga os logs em tempo real.
-
Descreva eventos:
kubectl describe events
-
Verifique informações do cluster:
kubectl cluster-info kubectl version # Verifique a versão do Kubernetes.
Comandos Avançados
-
Ordene recursos:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Filtre recursos:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Recupere dados específicos:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.