informatica:linux:kubernetes
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatica:linux:kubernetes [2022/09/24 07:40] – created javi | informatica:linux:kubernetes [2023/09/25 07:05] (current) – [Nodo (común para control plane y worker)] javi | ||
---|---|---|---|
Line 23: | Line 23: | ||
**IMPORTANTE**: | **IMPORTANTE**: | ||
- | * Kubernetes | + | |
- | * Para instalar containerd usaremos los paquetes, que los distribuye | + | |
- | * Habrá que instalar luego los plugins CNI, que NO vienen en los paquetes que distribuye Docker Inc. | + | * Para instalar containerd usaremos los paquetes, que los distribuye Docker Inc. |
+ | |||
+ | | ||
2.1. Instalar containerd | 2.1. Instalar containerd | ||
Line 165: | Line 167: | ||
5.1. Configurar container runtime cgroup driver | 5.1. Configurar container runtime cgroup driver | ||
- | Ya hecho en pasos anteriores, | + | Ya hecho en pasos anteriores, |
5.2. Configurar kubelet cgroup driver | 5.2. Configurar kubelet cgroup driver | ||
Line 271: | Line 273: | ||
| k8s3.local | 192.168.95.73 | 6443 | Control plane adicional | | | k8s3.local | 192.168.95.73 | 6443 | Control plane adicional | | ||
- | Antes de empezar para cada uno de los tres control plane [[informatica: | + | Antes de empezar para cada uno de los tres control plane [[informatica: |
1. Conectarse al servidor | 1. Conectarse al servidor | ||
Line 370: | Line 372: | ||
ssh k8s3 | ssh k8s3 | ||
| | ||
- | 2. Ejecutar el comando obtenido en el paso 3.1. de [[informatica: | + | 2. Ejecutar el comando obtenido en el paso 3.1. de [[informatica: |
* Si hemos configurado alta disponibilidad con [[https:// | * Si hemos configurado alta disponibilidad con [[https:// | ||
Line 426: | Line 428: | ||
ssh k8s3 | ssh k8s3 | ||
| | ||
- | 2. Ejecutar el comando obtenido en el paso 3.2. de [[http:// | + | 2. Ejecutar el comando obtenido en el paso 3.2. de [[http:// |
* Añadir ' | * Añadir ' | ||
Line 465: | Line 467: | ||
ssh k8s5 | ssh k8s5 | ||
| | ||
- | 2. Ejecutar el comando obtenido en el paso 3.2. de [[informatica: | + | 2. Ejecutar el comando obtenido en el paso 3.2. de [[informatica: |
* Añadir ' | * Añadir ' | ||
Line 511: | Line 513: | ||
Las peticiones TCP que lleguen a ese nombre (' | Las peticiones TCP que lleguen a ese nombre (' | ||
- | Todos los nodos (control plane o workers) deben resolver el nombre que elijamos para el balanceador de carga, en este ejemplo ' | + | Todos los nodos (control plane o workers) deben resolver el nombre que elijamos para el balanceador de carga, en este ejemplo 'k8s.local'. |
Todos los miembros de ese balanceador de carga, los 3 control plane en este ejemplo, deben ser capaces de resolver el nombre DNS de todos y cada uno de sus miembros, ya que usaremos nombres DNS. | Todos los miembros de ese balanceador de carga, los 3 control plane en este ejemplo, deben ser capaces de resolver el nombre DNS de todos y cada uno de sus miembros, ya que usaremos nombres DNS. | ||
Line 524: | Line 526: | ||
===== Oracle cloud ===== | ===== Oracle cloud ===== | ||
+ | |||
+ | **OJO**: una vez pasa el período de prueba gratix NO se pueden modificar, por lo que es MUY arriesgado confiar en este servicio. Por ejemplo si el puerto del ingress controller cambia del 32386 no se pueden añadir/ | ||
Oracle cloud ofrece por la patilla y para siempre un balanceador de capa 4 con IP pública y estática. | Oracle cloud ofrece por la patilla y para siempre un balanceador de capa 4 con IP pública y estática. | ||
Line 535: | 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 | + | |
- | + | ||
- | ^ Protocol ^ Ingress Traffic Port ^ Backend Set ^ | + | |
- | | TCP | Specify the port, 6443 | listener-kube-apiserver | | + | |
- | + | ||
- | Backend set | + | |
- | + | ||
- | ^ Load Balancing Policy ^ Preserve Source IP ^ Backend Set ^ | + | |
- | | 5-tuple hash | Checked | listener-kube-apiserver | | + | |
- | + | ||
- | Backends | + | |
- | + | ||
- | ^ Name ^ IP address ^ Port ^ Weight ^ | + | |
- | | k8s1 | 10.0.0.3 | 6443 | 100 | | + | |
- | | k8s2 | 10.0.0.4 | 6443 | 99 | | + | |
- | | k8s3 | 10.0.0.5 | 6443 | 99 | | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ==== Security list ==== | + | |
- | + | ||
- | Se creó una VNC siguiendo el asistente. | + | |
- | + | ||
- | El load balancer usa la subnet pública, " | + | |
- | + | ||
- | 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:// | ||
+ | - Un [[http:// | ||
===== Haproxy y keepalived como servicios ===== | ===== Haproxy y keepalived como servicios ===== | ||
Line 912: | Line 865: | ||
Requisitos: | Requisitos: | ||
- | * Un [[informatica: | + | * Un [[informatica: |
1. Conectarse al master | 1. Conectarse al master | ||
Line 1053: | Line 1006: | ||
Requisitos: | Requisitos: | ||
- | * Tener instalado [[informatica: | + | * Tener instalado [[informatica: |
1. Conectarnos al master | 1. Conectarnos al master | ||
Line 1183: | Line 1136: | ||
====== Issuer ====== | ====== Issuer ====== | ||
- | Se trata de un [[https:// | + | Se trata de un [[https:// |
Requisitos: | Requisitos: | ||
- | * Tener instalado [[informatica: | + | * Tener instalado [[informatica: |
Para instalarlo: | Para instalarlo: | ||
Line 1269: | Line 1222: | ||
* IPs privadas de los workers del clúster | * IPs privadas de los workers del clúster | ||
- | * Puertos en los que escuchan los Nodeport tanto HTTP como HTTPS. Ver paso 8 de [[informatica: | + | * Puertos en los que escuchan los Nodeport tanto HTTP como HTTPS. Ver paso 8 de [[informatica: |
* [[https:// | * [[https:// | ||
+ | |||
+ | ==== 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, | ||
1. Acceder al servidor | 1. Acceder al servidor | ||
Line 1401: | Line 1360: | ||
Para esta prueba necesitamos los siguientes requisitos: | Para esta prueba necesitamos los siguientes requisitos: | ||
- | * Ingress de nginx instalado y configurado [[informatica: | + | * Ingress de nginx instalado y configurado [[informatica: |
* Nombre DNS (en este ejemplo ' | * Nombre DNS (en este ejemplo ' | ||
- | * [[informatica: | + | * [[informatica: |
5.1. Pronbar que el contenedor está corriendo: | 5.1. Pronbar que el contenedor está corriendo: | ||
Line 1438: | Line 1397: | ||
Donde ' | Donde ' | ||
+ | ==== Oracle ==== | ||
+ | |||
+ | Requisitos: | ||
+ | |||
+ | * Un [[http:// | ||
+ | |||
+ | |||
+ | Creamos dos listeners, todo ello capa 4: | ||
+ | |||
+ | * Uno que escuche en el [[http:// | ||
+ | * Otro que escuche en el [[http:// | ||
===== LoadBalancer ===== | ===== LoadBalancer ===== | ||
Line 1443: | Line 1413: | ||
- | En nuestro caso se van a redirigir todas las peticiones no a un servicio de tipo ' | + | En nuestro caso se van a redirigir todas las peticiones no a un servicio de tipo ' |
Esquema: | Esquema: | ||
Line 1454: | Line 1424: | ||
* Tiene una IP pública. | * Tiene una IP pública. | ||
- | * Tiene una IP privada del rango de IPs del [[informatica: | + | * Tiene una IP privada del rango de IPs del [[informatica: |
* Tiene instalado docker (porque el servicio nginx va a ser creado mediante un contenedor). | * Tiene instalado docker (porque el servicio nginx va a ser creado mediante un contenedor). | ||
Line 1463: | Line 1433: | ||
ssh edgerouter | ssh edgerouter | ||
| | ||
- | 2. Crear el siguiente archivo, ajustando la IP a la que le ha sido asignada al [[informatica: | + | 2. Crear el siguiente archivo, ajustando la IP a la que le ha sido asignada al [[informatica: |
vim nginx.conf | vim nginx.conf | ||
Line 1523: | Line 1493: | ||
</ | </ | ||
- | 3. Crear el siguiente archivo, ajustando la IP a la que le ha sido asignada al [[informatica: | + | 3. Crear el siguiente archivo, ajustando la IP a la que le ha sido asignada al [[informatica: |
vim default.conf | vim default.conf | ||
Line 1571: | Line 1541: | ||
* Las 3 IPs públicas (las de cada servidor y la flotante) están en la misma subred | * Las 3 IPs públicas (las de cada servidor y la flotante) están en la misma subred | ||
- | 1. Instalar los dos servidores [[informatica: | + | 1. Instalar los dos servidores [[informatica: |
2. Instalar y configurar en ambos servidores [[informatica: | 2. Instalar y configurar en ambos servidores [[informatica: | ||
Line 1813: | Line 1783: | ||
8. **AVISO** Este paso está deprecated. Solo hay que hacerlo si se va a usar un edge router con balanceador capa 7. NO hay que hacerlo, eso lo hice en un primer intento. El balanceador que hay que poner en el edge router tiene que ser capa 4, por tanto NO hay que habilitar proxy protocol. | 8. **AVISO** Este paso está deprecated. Solo hay que hacerlo si se va a usar un edge router con balanceador capa 7. NO hay que hacerlo, eso lo hice en un primer intento. El balanceador que hay que poner en el edge router tiene que ser capa 4, por tanto NO hay que habilitar proxy protocol. | ||
- | [[informatica: | + | [[informatica: |
==== Actualizar nginx ingress controller ==== | ==== Actualizar nginx ingress controller ==== | ||
Line 1927: | Line 1897: | ||
==== Nginx LoadBalancer ==== | ==== Nginx LoadBalancer ==== | ||
- | En este ejemplo asumimos que tenemos un LoadBalancer habilitado, porque hemos instalado [[informatica: | + | En este ejemplo asumimos que tenemos un LoadBalancer habilitado, porque hemos instalado [[informatica: |
1. Conectarse al master: | 1. Conectarse al master: | ||
Line 2014: | Line 1984: | ||
</ | </ | ||
- | Vemos que ha tomado una ' | + | Vemos que ha tomado una ' |
5.3. Ejecutar: | 5.3. Ejecutar: | ||
Line 2043: | Line 2013: | ||
Este ejemplo requiere: | Este ejemplo requiere: | ||
- | * Un [[informatica: | + | * Un [[informatica: |
- | * Tener instalado un [[https:// | + | * Tener instalado un [[https:// |
1. Conectarse al master | 1. Conectarse al master | ||
Line 2095: | Line 2065: | ||
Este ejemplo requiere: | Este ejemplo requiere: | ||
- | * Un [[informatica: | + | * Un [[informatica: |
- | * Tener instalado un [[https:// | + | * Tener instalado un [[https:// |
- | * Tener instalado el [[https:// | + | * Tener instalado el [[https:// |
- | * Tener instalado un [[informatica: | + | * Tener instalado un [[informatica: |
- | * [[informatica: | + | * [[informatica: |
* Nginx | * Nginx | ||
* Reverse proxy a ingress-nginx-controller ' | * Reverse proxy a ingress-nginx-controller ' | ||
Line 2184: | Line 2154: | ||
https:// | https:// | ||
- | Debería aparecer el contenido servido por el [[informatica: | + | Debería aparecer el contenido servido por el [[informatica: |
' | ' | ||
Line 3126: | Line 3096: | ||
1.1. [[https:// | 1.1. [[https:// | ||
- | 1.2. [[informatica: | + | 1.2. [[informatica: |
- | 1.3. Crear un [[informatica: | + | 1.3. Crear un [[informatica: |
- | 1.4. [[informatica: | + | 1.4. [[informatica: |
- | 1.5. [[informatica: | + | 1.5. [[informatica: |
- | 1.6. [[informatica: | + | 1.6. [[informatica: |
En este momento ya tenemos el cluster de kubernetes montado. | En este momento ya tenemos el cluster de kubernetes montado. | ||
Line 3140: | Line 3110: | ||
2. Exponer un servicio con certificado SSL válido y que muestre la IP pública del cliente | 2. Exponer un servicio con certificado SSL válido y que muestre la IP pública del cliente | ||
- | 2.1. Instalar [[informatica: | + | 2.1. Instalar [[informatica: |
Como dice el paso 8, anotar los puertos HTTP y HTTPS que exponen cada uno de los nodos. | Como dice el paso 8, anotar los puertos HTTP y HTTPS que exponen cada uno de los nodos. | ||
- | 2.2. Instalar [[informatica: | + | 2.2. Instalar [[informatica: |
- | 2.3. Crear [[informatica: | + | 2.3. Crear [[informatica: |
- | 2.4. Crear un [[informatica: | + | 2.4. Crear un [[informatica: |
- | 2.5. Exponer el anterior deployment a través de un [[informatica: | + | 2.5. Exponer el anterior deployment a través de un [[informatica: |
- | 2.6. Crear un [[http:// | + | 2.6. Crear un [[http:// |
En este punto si: | En este punto si: | ||
- | * Se deshabilita momentáneamente proxy protoco (revirtiendo [[informatica: | + | * Se deshabilita momentáneamente proxy protoco (revirtiendo [[informatica: |
* Se obtiene el worker donde está corriendo el pod ' | * Se obtiene el worker donde está corriendo el pod ' | ||
* Se obtiene la IP privada de ese worker | * Se obtiene la IP privada de ese worker | ||
Line 3174: | Line 3144: | ||
En este ejemplo vamos a instalar dos servidores, que van a compartir una IP flotante para tener redundancia. | En este ejemplo vamos a instalar dos servidores, que van a compartir una IP flotante para tener redundancia. | ||
- | 3.1. Seguir [[informatica: | + | 3.1. Seguir [[informatica: |
3.2. Crear un nombre DNS, " | 3.2. Crear un nombre DNS, " | ||
Line 3403: | Line 3373: | ||
Requisitos: | Requisitos: | ||
- | * Un [[informatica: | + | * Un [[informatica: |
* Control Plane | * Control Plane | ||
* Workers | * Workers |
informatica/linux/kubernetes.1664005258.txt.gz · Last modified: 2022/09/24 07:40 by javi