Aquesta és una revisió antiga del document
DevOps Sesión 6 (2022-02-28)
Documentación relacionada
lab1
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf, pág 20
- 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios basicos kubernetes .pdf
- 2-Despliegue de Aplicaciones Kubernetes/Seminario kubernetes.pdf
- lab-docker/mv-kubernetes-Vagrant-2020
- cluster 3 nodos k8s (1 master, 2 workers
Clase
k8s
- 2-Despliegue de Aplicaciones Kubernetes/Seminario kubernetes.pdf
- masters no ejecutan contenedores por defecto (al contrario que swarm)
- orquestados que soporta diferentes runtimes
- no solo docker. de hecho, desde la versión 1.20 no soporta docker si no containerd
- control plane - panel de control
- servicios en master
- servicios en worker
- kubelet
- kube-proxy
- microk8s.io - minikube
objetos k8s
- POD - unidad mínima (compuesta por 1 o varios contenedores)
- no escalable
- no alive
- → replication controller
- SERVICE
- conceptualmente diferente a la idea de servicio de SWARM
- para llegar a un pod:
- nodePort
- clusterIP
- loadBalancer
- se gestiona por labels (de hecho, todos los objetos de k8s)
- REPLICATION CONTROLLER (RC)
- si escala
- si se mira si falla
- DEPLOYMENT
- REPLICA SET (RS) ← «avanzado» de RC
- permite el cambio de versiones en el POD, pero no lo permite RC
- POD
- SERVICE
kubectl
- ficheros de trabajo, copiar a mv-kubernetes-Vagrant-2020 (accesible en la máquina virtual a través de /vagrant)
- 2-Despliegue de Aplicaciones Kubernetes/k8-for-devs-master
- 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso
- 2-Despliegue de Aplicaciones Kubernetes/kubernetes-Helm3-API-Metrics-Server
- 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2
- 2-Despliegue de Aplicaciones Kubernetes/Laboratorio-deployment-strategies
lab1
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf, pág 20
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt pag 52-100
kubectl runkubectl apply -f /vagrant/kubernetes-curso/first-app/helloworld.ymlkubectl get pod -o widekubectl describe pod nodehelloworld.example.comkubectl expose pod nodehelloworld.example.com --type NodePort --name nodehelloword-service- información del servicio:
kubectl get servicekubectl describe service nodehelloworld-service
kubectl exec -ti nodehelloworld.example.com -- bashkubectl logs nodehelloworld.example.com- eventos del cluster:
kubectl get events - eliminar:
kubectl delete pod nodehelloworld.example.com- o
kubectl delete pod -f /vagrant/kubernetes-curso/first-app/helloworld.yml kubectl delete service nodehelloworld-service… –wait=false: devuelve el control al prompt sin esperar a ejecutar la orden
- Visual Studio Code, extensiones para facilitar los yaml
- kubernetes templates
- u otros… ¿?
lab2
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf, pág 29
- 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/replication-controller/
- 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt pag. 100-142
kubectl scale rc <controller> --replicas=3- mala práctica:
kubectl edit rc <controller> - desplegar:
kubectl apply -f /vagrant/kubernetes-curso/replication-controller/helloworld-repl-controller.yml
- si elimino uno de los pods, el RC se encarga de levantar otro
kubectl get rc -o wide kubectl describe pod helloworld-controller-xxxxx kubectl delete pod helloworld-controller-xxxxx kubectl get pods --show-labels
- Para escalar nuestro rc, podemos realizarlo mediante las dos comandos:
kubectl scale --replicas=4 -f /vagrant/kubernetes-curso/replication-controller/helloworld-repl-controller.yml kubectl scale rc helloworld-controller --replicas=4
kubectl expose rc helloworld-controller --type=NodePort --name helloworld-controller-service kubectl get service kubectl describe service helloworld-controller-service
- Para finalizar el laboratorio eliminamos el rc, y veremos que se eliminan los pods, asiciados a este rc:
kubectl get rc kubectl delete rc helloworld-controller kubectl get pod,rc kubectl delete service helloworld-controller-service
prev-lab 3 (labels)
kubectl get pods --show-labelskubectl get all -l app=helloworld(o --selector)kubectl fet pods -l 'env in (production,development)' --wait=false- todo se relaciona con etiquetas
- restricciones (documentación)
lab-3 (labels)
- 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios básicos kubernetes.pdf, pág 4
- 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2/labels/
- desplegar un pod:
kubectl apply -f /vagrant/kubernetes-labs2/labels/pod.yaml kubectl get pods --show-labels
- cambiar etiquetas:
kubectl label pods labelex owner=miempresa kubectl get pods --show-labels