Buenos días. Durante los últimos meses, he intentado lanzar un grupo de kubernetes para la tortura y la exploración mutuas. Durante este tiempo, leí una gran cantidad de artículos diferentes, muchos de los cuales eran buenos, pero completamente inapropiados para una persona que no se ha encontrado con Kuber.
Descargo de responsabilidad
En este artículo, no persigo el objetivo de decir "cómo hacerlo bien", quiero decirles cómo hacer que funcione y darles a las personas la oportunidad de seguir estudiando y no quedarse calvo y gris antes de la edad prescrita.
Inicialmente, quería ejecutar un clúster en un servidor dedicado con máquinas virtuales hiper-v, pero descubrí que "solo iniciar el asistente y conectar los nodos" no es suficiente para un clúster completo, aún necesita instalar un complemento de red, se encarga de los volúmenes persistentes y, preferiblemente, algún tipo de equilibrador de carga.
Otros intentos me llevaron a hetzner y rancher.
¿Por qué hetzner? Tienen una ventaja muy significativa. Aquí está el precio de un servidor virtual en hetzner:
Y a su contraparte en Mail Cloud:
Sí, hetzner no tiene bases de datos administradas, colas, almacenamiento s3 y otras cosas, pero lo que ya tienen es suficiente para obtener un clúster que funcione, y todo lo demás se puede ejecutar en él, o en servidores vecinos / dedicados (el servidor físico se puede conectar a una red privada de servidores virtuales)
Rancher ( ) , , ui, .
, rancher hetzner cloud, , , .
, .
. Hetzner Cloud, , Networks, Create Network, 16 8, , .
Security -> API Tokens, Generate API Token, Read & Write:
, , :
, rancher. Servers Add Server. , Helsinki (, ). - Standart CX21 ( , ).
Network , . , ( rancher), Create & Buy now. , .
( A ) , .
ssh ( putty ssh ) rancher.
docker:
apt-get update
apt install -y docker.io
systemctl start docker
systemctl enable docker
rancher:
docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /root/rancher:/var/lib/rancher \ --privileged \ --name rancher-server \ rancher/rancher:latest \ --acme-domain your.domain.com
your.domain.com , . , rancher ssl .
rancher docker
rancher (Single Node Using Docker) ,
. , , ,
, rancher .
hetzner. Tools > Drivers
Node Drivers Add Node Driver
:
linux_amd64 ( https://github.com/JonasProgrammer/docker-machine-driver-hetzner/releases/download/3.3.0/docker-machine-driver-hetzner_3.3.0_linux_amd64.tar.gz) "Download Url".
UI Custom UI URL ( https://storage.googleapis.com/hcloud-rancher-v2-ui-driver/component.js) "Custom UI URL"
White List storage.googleapis.com
Create, . .
( > Global), "Add Cluster". Hetzner,
( Cluster Name), Prefix , etc Control Pane, Add Node Template:
API Token Hetzner ( , ).
(, ), , (CP21 ). "Use private network" .
, Add Node Pool, , Worker, ( , , , ).
, Cluster Options, Kubernetes Options, ( , .. hetzner ), Network provider - Flannel, Cloud Provider - external, "Edit as YAML".
Edit as YAML , ,
rancher_kubernetes_engine_config:
...
rancher_kubernetes_engine_config:
...
addons: |-
---
apiVersion: v1
stringData:
token: <API Token>
network: <Network name>
kind: Secret
metadata:
name: hcloud
namespace: kube-system
---
apiVersion: v1
stringData:
token: <API Token>
kind: Secret
metadata:
name: hcloud-csi
namespace: kube-system
addons_include:
- https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/latest/download/ccm-networks.yaml
- https://raw.githubusercontent.com/hetznercloud/csi-driver/master/deploy/kubernetes/hcloud-csi.yml
...
<API Token> hetzner ( ), <Network name> , . Cloud Controller Manager Container Storage Interface driver. , kubernetes (CCM With Networks support)
- :
"Create" : rancher , . Cluster explorer ( ) . , kubernetes.
En el próximo artículo hablaré sobre la implementación e instalación de aplicaciones a través de helm (por ejemplo, gitlab runner).
PD Al crear el servicio LoadBalancer, no podrá iniciarse por sí solo, porque es necesario indicar el lugar de su ubicación física. Para hacer esto, vaya a Servicios, haga clic en los tres puntos en el servicio deseado> Editar configuración> Etiquetas y anotaciones y agregue anotaciones
load-balancer.hetzner.cloud/location - centro de datos
load-balancer.hetzner.cloud/use-private-ip true
PPS: Aquí se indica que esto se puede evitar agregando parámetros a las variables de clúster predeterminadas, pero no sé cómo hacerlo.