Kubernetes (frequentemente abreviado como K8s) é uma plataforma de código aberto para automatizar a implantação, escalonamento e gerenciamento de aplicativos em contêineres (geralmente contêineres Docker). A seguir estão alguns conceitos básicos do Kubernetes e comandos relacionados.
1. Cluster e nós
Um cluster é a unidade básica do Kubernetes e consiste em um conjunto de nós (máquinas físicas ou virtuais).
Ordem:
kubectl get nodes
Análise:
Liste todos os nós do cluster.
2. Vagem
Pod é a menor unidade de implantação do Kubernetes, geralmente hospedando um ou mais contêineres.
Ordem:
kubectl run nginx --image=nginx
kubectl get pods
Análise:
- Execute um pod chamado nginx e use a imagem nginx.
- Liste todos os pods.
3. Serviço
Serviço é uma camada de abstração usada para expor os serviços de rede do Pod.
Ordem:
kubectl expose pod nginx --port=80 --type=ClusterIP
kubectl get svc
Análise:
- Use
ClusterIP
o tipo para expor o serviço nginx Pod na porta 80. - Liste todos os serviços.
4. Implantação
As implantações são usadas para declarar o estado desejado do aplicativo e são garantidas automaticamente pelo Kubernetes.
Ordem:
kubectl create deployment nginx-deploy --image=nginx
kubectl get deployments
Análise:
- Crie uma
nginx-deploy
implantação chamada . - Liste todas as implantações.
5. ConfigMap e segredo
Usado para gerenciar dados de configuração e informações confidenciais.
Ordem:
kubectl create configmap my-config --from-literal=key1=value1
kubectl create secret generic my-secret --from-literal=password=mypassword
Análise:
- Crie um ConfigMap.
- Crie um segredo.
6. Espaços para nome
Usado para separar recursos em áreas logicamente independentes.
Ordem:
kubectl create namespace my-namespace
Análise:
Crie um novo espaço para nome.
7. Volume
Usado para armazenamento persistente.
Ordem:
kubectl apply -f my-volume.yaml
Análise:
Defina um volume através de um arquivo YAML e kubectl apply
crie-o com o comando.
8. Escalonador automático de pod horizontal (HPA)
Dimensione automaticamente o número de pods com base no uso da CPU ou outras métricas.
Ordem:
kubectl autoscale deployment nginx-deploy --min=2 --max=5 --cpu-percent=80
Análise:
Dimensione automaticamente nginx-deploy
a implantação nomeada com base no uso da CPU.
9. Recursos personalizados (CRDs)
Usado para estender a API Kubernetes.
Ordem:
kubectl apply -f my-custom-resource.yaml
Análise:
Use para kubectl apply
criar recursos personalizados.
10. Leme
Helm é o gerenciador de pacotes do Kubernetes.
Ordem:
helm install my-release my-chart
Análise:
Usando o Helm Instale um my-release
gráfico do Helm chamado .
[Lembrete] Funções avançadas do Kubernetes, como DaemonSets, StatefulSets, Políticas de Rede, etc., têm seus cenários de uso específicos. Aqui estão algumas explicações básicas e exemplos desses recursos avançados.
1. Conjuntos de Daemons
Um DaemonSet garante que uma cópia de um pod esteja em execução em cada nó e normalmente é usado para executar daemons em todo o cluster.
Ordem:
kubectl apply -f daemonset.yaml
Análise:
Crie um DaemonSet usando um arquivo YAML que contém a configuração do DaemonSet.
Exemplo daemonset.yaml:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: my-daemonset
template:
metadata:
labels:
app: my-daemonset
spec:
containers:
- name: my-daemon
image: my-daemon-image
2. Conjuntos de estado
StatefulSets são objetos de API de carga de trabalho usados para gerenciar aplicativos com estado.
Ordem:
kubectl apply -f statefulset.yaml
Análise:
Crie um StatefulSet usando um arquivo YAML que contém a configuração do StatefulSet.
Exemplo statefulset.yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
3. Políticas de Rede
Políticas de rede são um recurso do Kubernetes usado para controlar a comunicação entre pods.
Ordem:
kubectl apply -f network-policy.yaml
Análise:
Crie uma política de rede usando um arquivo YAML que contém a configuração da política de rede.
Exemplo de política de rede.yaml:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {
}
policyTypes:
- Ingress
Este exemplo define uma política de rede que nega todo o tráfego de entrada.
Os itens acima são apenas exemplos básicos de cada recurso avançado. Todos eles possuem uso mais avançado e complexo, sendo recomendável consultar a documentação oficial para orientações detalhadas e abrangentes.