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:s8 [07/03/2022 11:05] mateinfo:cursos:pue:devops2022:s8 [09/03/2022 07:28] (actual) mate
Línia 1: Línia 1:
-= DevOps Sesión 8 (2022-03-07)+= DevOps Sesión 8 (2022-03-07) k8s
 == Documentación relacionada == Documentación relacionada
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf
   * 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios basicos kubernetes .pdf   * 2-Despliegue de Aplicaciones Kubernetes/2-Laboratorios basicos kubernetes .pdf
   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 481   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 481
 +</callout>
 +
 == Clase == Clase
 === secretos === secretos
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 91   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 91
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mariadb-deployment-secret.yaml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mariadb-deployment-secret.yaml
 +</callout>
   * ''create secret...''   * ''create secret...''
     * docker-registry     * docker-registry
Línia 23: Línia 28:
 </code> </code>
 === en volumenes === en volumenes
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/deployment/helloworld-secrets-volumes.yml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/deployment/helloworld-secrets-volumes.yml
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/deployment/helloworld-secrets.yml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/deployment/helloworld-secrets.yml
 +</callout>
 +
   * desplegar secretos usando volúmenes, al estilo SWARM   * desplegar secretos usando volúmenes, al estilo SWARM
     * creamos secreto     * creamos secreto
Línia 39: Línia 47:
  
 === configmap === configmap
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 106   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 106
 +</callout>
   * cambios de configuración en caliente (si la aplicación lo soporta)   * cambios de configuración en caliente (si la aplicación lo soporta)
   * no encriptación, todo en texto plano   * no encriptación, todo en texto plano
   * ''kubectl create configmap''   * ''kubectl create configmap''
 ==== lab ==== lab
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mariadb-deployment-configmap.yaml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mariadb-deployment-configmap.yaml
 +</callout>
 +
 <code bash>kubectl create cm mariadb --from-literal=root_password=00000000 --from-literal=mysql_usuario=usuario --from-literal=mysql_password=00000000 --from-literal=basededatos=test <code bash>kubectl create cm mariadb --from-literal=root_password=00000000 --from-literal=mysql_usuario=usuario --from-literal=mysql_password=00000000 --from-literal=basededatos=test
 kubectl get cm kubectl get cm
Línia 54: Línia 67:
 </code> </code>
 ==== lab ==== lab
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/configmap/*   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/configmap/*
 +</callout>
 +
   * pasar un fichero de configuración a un POD   * pasar un fichero de configuración a un POD
   * creamos el CM   * creamos el CM
Línia 70: Línia 86:
  
 === volúmenes === volúmenes
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 144   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 144
 +</callout>
 +
   * muchos tipos:   * muchos tipos:
     * aws     * aws
Línia 82: Línia 101:
     * nfs:     * nfs:
       * Para cualquiera de ellas en Kubernetes tendremos que crear:       * Para cualquiera de ellas en Kubernetes tendremos que crear:
-        * PersistentVolume -- Donde especificamos el volumen persistente +        * PersistentVolumeDonde especificamos el volumen persistente 
-        * PersistentVolumeClaim -- Donde reclamamos espacio en el volumen+        * PersistentVolumeClaimDonde reclamamos espacio en el volumen
       * Modos de acceso:       * Modos de acceso:
-        * ReadWriteOnce -- read-write solo para un nodo (RWO) +        * ReadWriteOnceread-write solo para un nodo (RWO) 
-        * ReadOnlyMany -- read-only para muchos nodos (ROX) +        * ReadOnlyManyread-only para muchos nodos (ROX) 
-        * ReadWriteMany -- read-write para muchos nodos (RWX)+        * ReadWriteManyread-write para muchos nodos (RWX)
       * Políticas de reciclaje de volúmenes son son:       * Políticas de reciclaje de volúmenes son son:
-        * Retain Reclamación manual +        * RetainReclamación manual 
-        * Recycle Reutilizar contenido +        * RecycleReutilizar contenido 
-        * Delete Borrar contenido+        * DeleteBorrar contenido
       * Estados de un volumen:       * Estados de un volumen:
-        * Available disponible para reclamación +        * Availabledisponible para reclamación 
-        * Bound No disponible, se esta utilizando por una reclamación. +        * BoundNo disponible, se esta utilizando por una reclamación. 
-        * Released La reclamación del volumen se a eliminado y esta esperando otra petición del cluster. +        * ReleasedLa reclamación del volumen se a eliminado y esta esperando otra petición del cluster. 
-        * Failed En estado de fallo.+        * FailedEn estado de fallo.
  
 ==== lab ==== lab
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 685   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 685
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/webtest-volum-emptydir.yml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/webtest-volum-emptydir.yml
 +</callout>
 +
   * <code bash>kubectl apply -f /vagrant/kubernetes-curso/webtest-volum-emptydir.yml   * <code bash>kubectl apply -f /vagrant/kubernetes-curso/webtest-volum-emptydir.yml
 kubectl get pod kubectl get pod
Línia 111: Línia 133:
  
 ==== lab ==== lab
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 717   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 717
   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mysql-affinity.yml   * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mysql-affinity.yml
 +</callout>
 +
   * en este caso se usa **affinity** (más sencillo con **nodeSelector** o **nodeName**)   * en este caso se usa **affinity** (más sencillo con **nodeSelector** o **nodeName**)
   * <code bash>kubectl get nodes   * <code bash>kubectl get nodes
Línia 130: Línia 155:
  
 ==== lab ==== lab
 +<callout type="info" icon="true">
   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 790   * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio kubernetes Curso-DevOps.txt línea 790
   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 151   * 2-Despliegue de Aplicaciones Kubernetes/1-Laboratorios Kubernetes 2020.pdf pag 151
-  * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/+  * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/nfs-pv-pvc.yaml 
 +  * 2-Despliegue de Aplicaciones Kubernetes/kubernetes-curso/mysql-storage-nfs.yaml 
 +</callout> 
   * instalar NFS en master:<code bash>sudo apt install nfs-kernel-server   * instalar NFS en master:<code bash>sudo apt install nfs-kernel-server
 sudo mkdir /bd-nfs sudo mkdir /bd-nfs
Línia 144: Línia 173:
 sudo systemctl status nfs-kernel-server sudo systemctl status nfs-kernel-server
 sudo systemctl enable nfs-kernel-server</code> sudo systemctl enable nfs-kernel-server</code>
 +  * <code bash>kubectl apply -f /vagrant/kubernetes-curso/nfs-pv-pvc.yaml
 +kubectl get pv,pvc
 +kubectl apply -f /vagrant/kubernetes-curso/mysql-storage-nfs.yml
 +kubectl describe pod mysql-storage-nfs-...
 +kubectl exec -ti mysql-storage-nfs-... -- bash
 +# df -h
 +</code>
 +  * para controlar realmente el espacio usado, hay que usar un storageClass
 +    * los PersistentVolume se crean dinámicamente
 +  * ''kubectl drain worker1 %%--%%delete-local-data %%--%%ignore-daemonsets''
 +  * ''kubectl uncordon worker1''
  
 === k0sctl === k0sctl
 +<callout type="info" icon="true">
 +  * 2-Despliegue de Aplicaciones Kubernetes/Install kubernetes k0sctl
 +  * 2-Despliegue de Aplicaciones Kubernetes/Laboratorio Instalar Cluster Kubernetes Alumnos (kubeadm)
 +</callout>
 +  * https://k0sproject.io
 +  * Lens (portainer para k8s)
 +
 === extra === extra
   * ''kubectl get pod -A -o wide''   * ''kubectl get pod -A -o wide''
Línia 155: Línia 202:
   * [[https://ngrok.com/]]   * [[https://ngrok.com/]]
  
-== TODO +
-<callout type="info" icon="true"></callout>+
  • info/cursos/pue/devops2022/s8.1646679925.txt.gz
  • Darrera modificació: 07/03/2022 11:05
  • per mate