Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
info:cursos:pue:devops2022:s6 [28/02/2022 12:03] mateinfo:cursos:pue:devops2022:s6 [09/03/2022 07:43] (actual) mate
Línia 1: Línia 1:
-= DevOps Sesión 6 (2022-02-28)+= DevOps Sesión 6 (2022-02-28) k8s
 == Documentación relacionada == Documentación relacionada
 ==== lab1 ==== lab1
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt   * 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/1-Laboratorios  Kubernetes 2020.pdf, pág 20
Línia 8: Línia 9:
   * lab-docker/mv-kubernetes-Vagrant-2020   * lab-docker/mv-kubernetes-Vagrant-2020
     * cluster 3 nodos k8s (1 master, 2 workers     * cluster 3 nodos k8s (1 master, 2 workers
 +</callout>
 +
 == Clase == Clase
 === k8s === k8s
-  * 2-Despliegue de Aplicaciones Kubernetes/Seminario kubernetes.pdf+<callout type="info" icon="true"> 
 +2-Despliegue de Aplicaciones Kubernetes/Seminario kubernetes.pdf 
 +</callout>
   * masters no ejecutan contenedores por defecto (al contrario que swarm)   * masters no ejecutan contenedores por defecto (al contrario que swarm)
   * orquestados que soporta diferentes runtimes   * orquestados que soporta diferentes runtimes
Línia 50: Línia 55:
     * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2     * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2
     * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio-deployment-strategies     * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio-deployment-strategies
-==== lab1+ 
 +==== lab 
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios  Kubernetes 2020.pdf, pág 20   * 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   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt pag 52-100
 +</callout>
   * https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run    * https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run 
   * ''kubectl run''   * ''kubectl run''
-  * ''kubectl apply -f /vagrant/kubernetes-curso/first-app/helloworld.yml'' +  * deplegamos un pod y miramos:<code bash>kubectl apply -f /vagrant/kubernetes-curso/first-app/helloworld.yml 
-  * ''kubectl get pod -o wide'' +kubectl get pod -o wide 
-  * ''kubectl describe pod nodehelloworld.example.com'' +kubectl describe pod nodehelloworld.example.com</code> 
-  * ''kubectl expose pod nodehelloworld.example.com %%--%%type NodePort %%--%%name nodehelloword-service'' +  * montamos el servicio al POD (que permite relacionarse con el exterior)<code bash>kubectl expose pod nodehelloworld.example.com %%--%%type NodePort %%--%%name nodehelloword-service 
-  * información del servicio: +kubectl get service'' # información del servicio 
-    * ''kubectl get service'' +kubectl describe service nodehelloworld-service</code> 
-    * ''kubectl describe service nodehelloworld-service'' +  * acceder a un contenedor:<code bash>kubectl exec -ti nodehelloworld.example.com %%--%% bash</code> 
-  * ''kubectl exec -ti nodehelloworld.example.com %%--%% bash'' +  * logs: <code bash>kubectl logs nodehelloworld.example.com</code>
-  * ''kubectl logs nodehelloworld.example.com''+
   * eventos del cluster: ''kubectl get events''   * eventos del cluster: ''kubectl get events''
-  * eliminar: +  * eliminar (2 alternativas):<code bash>kubectl delete pod nodehelloworld.example.com 
-    * ''kubectl delete pod nodehelloworld.example.com'' +kubectl delete pod -f /vagrant/kubernetes-curso/first-app/helloworld.yml 
-    * o ''kubectl delete pod -f  /vagrant/kubernetes-curso/first-app/helloworld.yml'' +kubectl delete service nodehelloworld-service</code>
-    * ''kubectl delete service nodehelloworld-service''+
     * ''... --wait=false'': devuelve el control al prompt sin esperar a ejecutar la orden     * ''... --wait=false'': devuelve el control al prompt sin esperar a ejecutar la orden
   * Visual Studio Code, extensiones para facilitar los yaml   * Visual Studio Code, extensiones para facilitar los yaml
Línia 74: Línia 80:
     * u otros... ¿?     * u otros... ¿?
  
-==== lab2+==== lab 
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios  Kubernetes 2020.pdf, pág 29   * 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/kubernetes-curso/replication-controller/
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt pag. 100-142   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorio kubernetes Curso-DevOps.txt pag. 100-142
 +</callout>
   * ''kubectl scale rc <controller> %%--%%replicas=3''   * ''kubectl scale rc <controller> %%--%%replicas=3''
   * mala práctica: ''kubectl edit rc <controller>''   * mala práctica: ''kubectl edit rc <controller>''
Línia 96: Línia 104:
 kubectl delete service helloworld-controller-service</code> kubectl delete service helloworld-controller-service</code>
  
-==== prev-lab 3 (labels)+=== labels
   * ''kubectl get pods %%--%%show-labels''   * ''kubectl get pods %%--%%show-labels''
   * ''kubectl get all -l app=helloworld'' (o %%--%%selector)   * ''kubectl get all -l app=helloworld'' (o %%--%%selector)
Línia 102: Línia 110:
   * todo se relaciona con etiquetas   * todo se relaciona con etiquetas
   * restricciones (documentación)   * restricciones (documentación)
-==== lab-3 (labels)+==== lab (labels) 
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios básicos kubernetes.pdf, pág 4   * 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios básicos kubernetes.pdf, pág 4
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2/labels/   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2/labels/
 +</callout>
  
   * desplegar un pod:<code bash>kubectl apply -f /vagrant/kubernetes-labs2/labels/pod.yaml   * desplegar un pod:<code bash>kubectl apply -f /vagrant/kubernetes-labs2/labels/pod.yaml
Línia 117: Línia 127:
 kubectl delete pods -l 'env in (production, development)'</code> kubectl delete pods -l 'env in (production, development)'</code>
  
 +==== lab
 +  * [[https://kubernetes.io/docs/concepts/workloads/pods]]
 +  * <code>apiVersion: v1
 +kind: Pod
 +metadata:
 +  name: nginx
 +spec:
 +  containers:
 +  - name: nginx
 +    image: nginx:1.14.2
 +    ports:
 +    - containerPort: 80</code>
 +  * <code bash>kubectl apply -f pod.yml
 +kube expose pod nginx --type=NodePort nginx-service # no funciona, falta una etiqueta
 +kube label pods nginx app=miapp
 +kubectl expose pod nginx --type=NodePort nginx-service # el servicio se engancha a través de la etiqueta
 +kubectl describe service nginx-service</code>
 +    * mirar **EndPoints** para ver que el servicio está relacionado con POD
 +    * si hay varias etiquetas, relaciona con todas
 +    * el **kubectl expose** hace el enganche entre el pod y el service que crea a través de **labels(parte pod)-selector(parte service)** y del **containerPort(parte pod)-targetPort(parte service)**. Estos valores los has de setear tu si pasas toda la inforación en el .yml
  
 +==== lab
 +<callout type="info" icon="true">
 +  * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-labs2/pods
 +  * 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios básicos kubernetes.pdf, pág 1
 +</callout>
 +  * despliegue POD desde CLI (demo):<code bash> kubectl run sise --image=mhausenblas/simpleservice:0.5.0 --port=9876</code>
 +  * desplegamos 2 contenedores:<code bash>kubectl apply -f /vagrant/kubernetes-labs2/pods/pod.yaml
 +kubectl exec twocontainers -c shell -i -t -- bash # muestra la información del POD (y los dos contenedores)
 +</code>
 +  * para acceder a uno de los contenedores de ese pod, hay que usar el parámetro **-c**:<code bash>kubectl exec twocontainers -c shell -i -t -- bash</code>
 +    * los contenedores no tienen IP propia, se hablan a través de localhost
 +    * '' curl -s localhost:9876/info'' (desde shell)
 +    * uso: concepto de sidecars container
 +    * un pod no está **RUNNIG** si no están todos los contenedores arriba
  
- 
-== TODO 
-<callout type="info" icon="true"></callout> 
  • info/cursos/pue/devops2022/s6.1646078598.txt.gz
  • Darrera modificació: 28/02/2022 12:03
  • per mate