Kubertenets -
Orquestrador de containers - gerencia clusters
POD - encapsula um container - pode conter um ou mais containers
Kubeclt - interrage com a API que por sua vez altera no cluster
Deletar todos os pods
> kubectl delete pods --all
Kubertenets -
Orquestrador de containers - gerencia clusters
POD - encapsula um container - pode conter um ou mais containers
Kubeclt - interrage com a API que por sua vez altera no cluster
Deletar todos os pods
> kubectl delete pods --all
Comando de rodar um pod
PS F:\> kubectl run nginx-pod --image=nginx:latest
PS F:\> kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 2m59s
PS F:\>
PS C:\Users\User\Desktop\KUBERNETES> kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
portal-noticias 1/1 Running 0 17m 10.1.0.8 docker-desktop <none> <none>
primeiro-pod-lucas 1/1 Running 0 41m 10.1.0.7 docker-desktop <none> <none>
PS C:\Users\User\Desktop\KUBERNETES>
Detalhes do pod
PS F:\> kubectl describe pod nginx-pod
Name: nginx-pod
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.4
Start Time: Fri, 01 Jul 2022 22:09:06 -0300
Labels: run=nginx-pod
Annotations: <none>
Status: Running
IP: 10.1.0.6
IPs:
IP: 10.1.0.6
Containers:
nginx-pod:
Container ID: docker://fe01baaaa0c1b2ef5c4698566daed4b2c6f1a461b7ad463426fa74aacbbe2060
Image: nginx:latest
Image ID: docker-pullable://nginx@sha256:10f14ffa93f8dedf1057897b745e5ac72ac5655c299dade0aa434c71557697ea
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 01 Jul 2022 22:09:19 -0300
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-5mrtt (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-5mrtt:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m55s default-scheduler Successfully assigned default/nginx-pod to docker-desktop
Normal Pulling 3m54s kubelet Pulling image "nginx:latest"
Normal Pulled 3m43s kubelet Successfully pulled image "nginx:latest" in 11.3828416s
Normal Created 3m42s kubelet Created container nginx-pod
Normal Started 3m42s kubelet Started container nginx-pod
Atualizar a imagem do pod
PS F:\> kubectl edit pod nginx-pod
Abre um bloco de notas para editar o arquivo do pod
Alterado a versão do service nginx
spec:
containers:
- image: nginx:1.0
imagePullPolicy: Always
name: nginx-pod
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-5mrtt
erro
PS F:\> kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 0/1 ImagePullBackOff 0 (20s ago) 6m50s
Editando e criando arquivo de pods
apiVersion: v1
kind: Pod
metadata:
name: primeiro-pod-lucas
spec:
containers:
- name: nginx-container
image: nginx:1.0
PS C:\Users\User\Desktop\KUBERNETES> ls
Diretório: C:\Users\User\Desktop\KUBERNETES
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01/07/2022 22:24 153 primeiro-pod.yaml
PS C:\Users\User\Desktop\KUBERNETES> kubectl apply -f .\primeiro-pod.yaml
pod/primeiro-pod-lucas created
PS C:\Users\User\Desktop\KUBERNETES>
DELETANDO POD
PS C:\Users\User\Desktop\KUBERNETES> kubectl delete pod nginx-pod
pod "nginx-pod" deleted
PS C:\Users\User\Desktop\KUBERNETES>
Acessando o container em modo interativo
PS C:\Users\User\Desktop\KUBERNETES> kubectl exec -it portal-noticias bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@portal-noticias:/var/www/html#
root@portal-noticias:/var/www/html#
root@portal-noticias:/var/www/html#
root@portal-noticias:/var/www/html# ls
configuracao.php content.html docker-compose.yml index.php theme
root@portal-noticias:/var/www/html#
Expoe as aplicações para mundo externo com dns e ipfixo e loadbalance
ClusterIP interna
Permite entre os pods internamente localmente, cada pod tem que ter um serviço agregado para ser acessado
NodePort
Permite acesso externo - da nossa maquina fisica para o pod
ele ja se adiciona a clusterIP e pode ser acessando pelas maquinas de dentro do cluster
LoadBalancer
Se aloca ao load balancer da provider aws google cloud azure normalmente o que muda no codigo é apenas o type para loadbalancer
Arquivo pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
labels:
app: primeiro-pod
spec:
containers:
- name: pod1
image: nginx:stable
ports:
- containerPort: 80
A label que permite o servico selecionar esse pod e aplicar a configuracao
arquivo svc-pod1.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-pod-2
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
app: primeiro-pod
MINIKUBE DASHBOAD INSTALACAO
minikube dashboard
exemplos
https://github.com/alura-cursos/kubernetes-3/tree/Aula_2
cronjobs e um recurso do kubernetes para usar um agendador e executar tarefdas como backup
FROM mysql
COPY dump.sh /
RUN chmod +x /dump.sh
ENTRYPOINT ["/dump.sh"]
dump.sh
#!/bin/bash
DB_USER=${DB_USER: -${MYSQL_ENV_DB_USER}}
DB_PASS=${DB_PASS: -${MYSQL_ENV_DB_PASS}}
DB_HOST=${DB_HOST: -${MYSQL_ENV_DB_HOST}}
if [[ ${DB_USER} =="" ]]; then
echo "Missing DB_USER env variable"
exit 1
fi
if [[ ${DB_PASS} =="" ]]; then
echo "Missing DB_PASS env variable"
exit 1
fi
if [[ ${DB_HOST} =="" ]]; then
echo "Missing DB_HOST env variable"
exit 1
fi
//código omitido
https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/
STATEFUL SET = BANCO DE DADOS AO INVES DE DEPLOY vi