User Tools

Site Tools


informatica:linux:kubernetes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:kubernetes [2022/09/24 08:27] – [Load balancer] javiinformatica:linux:kubernetes [2023/09/25 07:05] (current) – [Nodo (común para control plane y worker)] javi
Line 23: Line 23:
 **IMPORTANTE**: leer la siguientes consideraciones **IMPORTANTE**: leer la siguientes consideraciones
  
-  * Kubernetes usa CRI, que NO es compatible con Docker Engine, por eso mejor NO usarlo (Docker Engine)+  * Kubernetes requiere container runtime que siga especificación CRI (CRI-Ocontainerd, etc.) 
 + 
 +  * Docker Engine requiere dockershim, que ha sido eliminado, por lo que mejor NO usar Docker Engine como container runtime. Ver [[https://kubernetes.io/docs/setup/production-environment/container-runtimes/|Container runtimes]]. Por curiosidad, el reemplazo (de dockershimse llama "cri-dockerd"
  
   * Para instalar containerd usaremos los paquetes, que los distribuye Docker Inc.   * Para instalar containerd usaremos los paquetes, que los distribuye Docker Inc.
Line 525: Line 527:
 ===== Oracle cloud ===== ===== Oracle cloud =====
  
-Oracle cloud ofrece por la patilla y para siempre un balanceador de capa 4 con IP pública y estática.+**OJO**: una vez pasa el período de prueba gratix NO se pueden modificar, por lo que es MUY arriesgado confiar en este servicioPor ejemplo si el puerto del ingress controller cambia del 32386 no se pueden añadir/eliminar backends al backend set
  
-**OJO**: una vez pasa el período de prueba gratix NO se pueden modificar, por lo que es MUY arriesgado confiar en este servicio+Oracle cloud ofrece por la patilla y para siempre un balanceador de capa 4 con IP pública y estática.
  
 Resumen de máquinas, nombres, IPs, etc. (las IPs públicas están cambiadas) Resumen de máquinas, nombres, IPs, etc. (las IPs públicas están cambiadas)
Line 537: Line 539:
 | k8s3 | 1.2.3.7 | 10.0.0.4 | Tercer control plane | | k8s3 | 1.2.3.7 | 10.0.0.4 | Tercer control plane |
  
-==== Load balancer ==== +Creamos:
- +
-Listener +
- +
-^ Name ^ IP Protocol Version ^ Protocol ^ Ingress Traffic Port ^ Backend Set ^ +
-| listener-kube-apiserver | IPv4 | TCP  | Specify the port, 6443 | listener-kube-apiserver | +
- +
-Backend set +
- +
-^ Name ^ IP Protocol Version ^ Protocol ^ Port ^ Backend Set ^ +
-| listener-kube-apiserver | IPv4 | TCP  | 6443 | backend-set-kube-apiserver | +
- +
-Backends +
- +
-^ Name ^ IP address ^ Availability Domain ^ Port ^ Weight ^ Drain ^ Offline ^ Health ^ +
-| k8s1  | 10.0.0.3 | 6443 | 100 | False | False | OK | +
-| k8s2  | 10.0.0.4 | 6443 | 99 | False | False | OK | +
-| k8s3  | 10.0.0.5 | 6443 | 99 | False | False | OK | +
- +
- +
- +
- +
- +
- +
- +
-==== Security list ==== +
- +
-Se creó una VNC siguiendo el asistente. +
- +
-El load balancer usa la subnet pública, "Public Subnet-vnc"+
- +
-Esta tiene una security list, que hay que retocar para que: +
- +
-  * No permita conexiones desde la DMZ al listener kube-apiserver +
-  * Permita que lleguen los health check del load balancer a los nodos +
- +
-Las IPs púbicas son inventadas +
- +
-^ Stateless ^ Source ^ IP Protocol ^ Source Port Range ^ Destination Port Range ^ Description ^ +
-| No | 0.0.0.0/0 | TCP | All | 31342 | nginx-ingress-controller-https | +
-| No | 0.0.0.0/0 | TCP | All | 32386 | nginx-ingress-controller-http | +
-| No | 0.0.0.0/0 | TCP | All | 443 | listener-https | +
-| No | 0.0.0.0/0 | TCP | All | 80 | listener-http | +
-| No | 1.2.3.5/32 | All | All | All | k8s1 | +
-| No | 1.2.3.6/32 | All | All | All | k8s2 | +
-| No | 1.2.3.7/32 | All | All | All | k8s3 | +
- +
-Seguramente se puede restringir una miaja, pero así funciona. +
- +
-Como se juega también con los listeners no es tab abierta como parece. Por ejemplo desde la DMZ NO se llega al puerto 31342 (porque no hay listener publicado). +
- +
- +
- +
  
 +  - Un [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#load_balancer|load balancer]] con su correspondiente [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#security_list|security list]]
 +  - Un [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#listener-kube-apiserver|listener]] que escuche en el puerto 6443 oara el servicio 'kube-apiserver' 
  
 ===== Haproxy y keepalived como servicios ===== ===== Haproxy y keepalived como servicios =====
Line 1273: Line 1224:
   * Puertos en los que escuchan los Nodeport tanto HTTP como HTTPS. Ver paso 8 de [[informatica:linux:kubernetes#nginx_nodeport_daemonset_usar_este|Nginx ingress Nodeport daemonset]]   * Puertos en los que escuchan los Nodeport tanto HTTP como HTTPS. Ver paso 8 de [[informatica:linux:kubernetes#nginx_nodeport_daemonset_usar_este|Nginx ingress Nodeport daemonset]]
   * [[https://docs.docker.com/engine/install/debian|Docker]]   * [[https://docs.docker.com/engine/install/debian|Docker]]
 +
 +==== Bare metal ====
 +
 +Estas instrucciones sob para montar completamente por fuera de kubernetes un balanceador de carga capa 7.
 +
 +TODO: refinar, porque cuando jugué con OCI me di cuenta que capa 4 funciona perfectamente, no hace falta liarse con proxy_pass y capa 7
  
 1. Acceder al servidor 1. Acceder al servidor
Line 1440: Line 1397:
 Donde '8.8.8.8' es la IP pública desde donde hemos lanzado la petición. Donde '8.8.8.8' es la IP pública desde donde hemos lanzado la petición.
  
 +==== Oracle ====
 +
 +Requisitos:
 +
 +  * Un [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#load_balancer|load balancer]] con su correspondiente [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#security_list|security list]]
 +
 +
 +Creamos dos listeners, todo ello capa 4:
 +
 +  * Uno que escuche en el [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#listener-ingress-nginx-controller-http|puerto 80]]
 +  * Otro que escuche en el [[http://wiki.legido.com/doku.php?id=informatica:oracle:oci#listener-ingress-nginx-controller-https|puerto 443]]
 ===== LoadBalancer ===== ===== LoadBalancer =====
  
informatica/linux/kubernetes.1664008057.txt.gz · Last modified: 2022/09/24 08:27 by javi