Kubernetes en Hetzner con Rancher (con imágenes)

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.








All Articles