Não duvidem que a grande maioria das aplicações que acedemos via internet está assente em Kubernetes. No seguimento do estudo que tenho vindo a fazer, deixo mais abaixo uma lista dos comandos mais usados e a sua função.
Nota:Esta lista estará em constante atualização.
Comandos relativos à criação do cluster com o Minikube:
$ minikube start #Cria um cluster com 1 nó. $ minikube start --nodes 2 -p multinode-cluster $ minikube status $ minikube ip $ minikube ssh $ minikube dashboard #Dashboard web que mostra alguns dados. $ minikube logs $ minikube delete #Remove o cluster. $ minikube delete --purge #Remove o cluster e todos os ficheiros associados.
$ minikube tunnel - Cria uma rota de rede para o IP do cluster como se fosse um gateway. Para testar por exemplo um serviço a correr em LB.
### Get informação $ kubectl get pods $ kubectl get namespaces #Ver os vários NS existentes. $ kubectl get namespaces $ kubectl get pod -n Development #Ver os pods do NS Development. $ kubectl get pods -A #Ver todos $ kubectl get pods -A -o wide #Devolve mais informação como o IP, etc. $ kubectl get pods NOME_DO_POD -o yaml/json # ver dados do pod em yaml/json. $ kubectl cluster-info $ kubectl get nodes $ kubectl get pod meuPod -o jsonpath='{.spec.containers[*].name}' #Devolve o nome dos containers que estão no Pod meuPod. $ kubectl describe pod meuPod #Toda a informação sobre o Pod, numero de containers, estado, etc. $ kubectl replace --force -f meuPod.yaml #Elimina e cria um novo pod.
### Criar um pod básico $ kubectl run meuNginx --image nginx #Cria um pod com um container a partir da imagem nginx. $ kubectl delete pod meuNginx
### Criar pods a partir de um manifesto yaml
$ kubectl apply -f podTemplate.yaml #Cria um pod a partir do manifesto yaml. $ kubectl delete -f podTemplate.yaml #Elimina o pod baseado no seu manifesto $ kubectl get pod meuPod -o yaml > podTemplate.yaml $ kubectl run meuNginx --image nginx --dry-run=client -o yaml > podTemplate.yaml #Cria um modelo yaml que servirá para criar um pod. $ kubectl run meuPod --image=redis --dry-run=client -o yaml #Outro exemplo $ kubectl run meuNginx --image nginx --port 80 --dry-run=client -o yaml > podTemplate.yaml #Cria um modelo yaml especificando o porto que fica à escuta no container.
$ kubectl expose pod meunginx #Este comando cria um Service, que é utilizado para expor o pod para ser acessivel externamente. $ kubectl get services #Ver os serviços ativos com respectivos IP e portos.
### Mais Get: $ kubectl get all
$ kubectl get pod,service
$ kubectl get pod,svc ### Eliminar o que se criou: $ kubectl delete -f podTemplate.yaml
$ kubectl delete service meuNginx $ kubectl run hello-minikube $ kubectl get pods -o jsonpath="{..image}" #Lista todas as imagens usadas nos containers no Default NS $ kubectl delete --all pods
### Labels e Selectors $ kubectl get all --show-labels $ kubectl get pod --selector env=prod
### Mais comandos (ainda em organização) $ kubectl cluster-info dump
$ kubectl delete pod pod-info-deployment-869667679b-6zbcd -n development
$ kubectl exec -it busybox-55fdb79844-chq95 -- /bin/sh #Entrar no Contentor busybox $ kubectl logs pod-info-deployment-869667679b-sz786 -n development
$ kubectl get svc - devolve o IP externo do cluster, por exemplo.
$ kubectl get deployment nginx-deplyment -o yaml $ kubectl api-resources $ kubectl -n kube-system get pods #Pods de sistema.
$ kubectl describe rs replica-set $ kubectl create -f podTemplate.yml #Cria um replica set. $ kubectl get replicaset $ kubectl delete replicaset minhaApp-replicaset. $ kubectl replace -f podTemplate.yml #Atualiza por exemplo o ReplicaSet no caso de pretendermos alterar o número de replicas. $ kubectl scale --replicas=6 -f podTemplate.yaml #O mesmo que o anterior, mas não é preciso editar antes o podTemplate.yml. $ kubectl scale replicaset meuApp-replicaset --replicas=6 #O mesmo que os anteriores. $ kubectl explain replicaset #Mostra a documentação do resource replicaset. $ kubectl edit rs meuApp-replicaset
É
verdade! Kubernetes está em todo lado no que respeita ao mundo web! É
uma ferramenta de orquestração de containers (por exemplo Docker). O
Kubernetes serviu que nem uma luva neste mundo da cloud, pois ele
consegue por exemplo, aumentar e diminuir escalabilidade de forma
automática de uma aplicação web. Então, se já é bom podermos ter
este ajuste automático para o aplicativo continuar a responder sem
problemas, agora imagina, numa cloud como a AWS ou Azure, onde se paga
consoante o que se usa, o jeito que isto pode dar! Mas não é só isto, o
K8S (outra denominação para Kubernetes) faz muito mais coisas. Não
deixem de consultar as hiperligações que disponibilizo mais abaixo.
Já
tinha tido algum contacto com esta poderosa ferramenta, mas só agora
decidi estudar mais a fundo. Nos próximos tempos vou reavivar este blog
(que tem estado às moscas) com uns artigos sobre Kubernetes ou
simplesmente Kube.
Com o espaço atribuído ao volume group, agora já se pode estender o volume lógico:
# lvextend -l+100%FREE /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from <3,00 TiB (196606 extents) to <3,59 TiB (235005 extents).
Logical volume vg0/lv0 successfully resized.
Por fim aumentamos a partição com o espaço atribuído ao volume lógico:
# resize2fs -p /dev/vg0/lv0
resize2fs 1.45.5 (07-Jan-2020)
Sistema de ficheiros em /dev/vg0/lv0 está montado em /dados; requerido redimensionamento em linha
old_desc_blocks = 192, new_desc_blocks = 230
O sistema de ficheiros em /dev/vg0/lv0 tem agora 962580480 (4k) blocos.
Com o abandono do Centos pela Redhat, e por sua vez com a disponibilização de 16 subscrições (licenças) Redhat gratuitas (mas sem suporte) comecei a usar esta distribuição Linux na instituição onde trabalho.
Como crio máquinas virtuais (VM) através de modelos já previamente instalados e configurados, tinha o problema de não conseguir fazer yum update, por não ter a subscrição ativa nesta nova instalação.
Se por acaso instalaram o Redhat e não fizeram a subscrição durante a instalação podem também usar este comando para tal, mas à partida não precisam do parâmetro --force.