Bonne journée. Au cours des derniers mois, j'ai essayé de lancer un cluster kubernetes pour la torture et l'exploration mutuelles. Pendant ce temps, j'ai lu un grand nombre d'articles différents, dont beaucoup étaient bons, mais totalement inappropriés pour une personne qui n'a pas rencontré kuber.
Avertissement
Dans cet article, je ne poursuis pas l'objectif de dire "comment le faire correctement", je veux vous dire comment le faire fonctionner et donner aux gens la possibilité d'étudier plus avant, et de ne pas devenir chauve et gris avant l'âge prescrit.
Initialement, je voulais exécuter un cluster sur un serveur dédié avec des machines virtuelles hyper-v, mais j'ai découvert que "le simple démarrage de l'assistant et la connexion des nœuds" ne suffisaient pas pour un cluster à part entière, vous devez toujours installer un plugin réseau, prenez soin des volumes persistants et, de préférence, d'une sorte d'équilibreur de charge.
D'autres tentatives m'ont conduit à hetzner et éleveur.
Pourquoi hetzner ? Ils ont un avantage très important. Voici le prix d'un serveur virtuel chez hetzner :
Et à son homologue dans Mail Cloud :
Oui, hetzner n'a pas de bases de données gérées, de files d'attente, de stockage s3 et d'autres choses, mais ce qu'ils ont déjà est largement suffisant pour obtenir un cluster fonctionnel, et tout le reste peut y être exécuté, ou sur des serveurs voisins / dédiés (le serveur physique peut être connecté à un réseau privé de serveurs virtuels)
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.
Dans le prochain article, je parlerai du déploiement et de l'installation d'applications via helm (par exemple, gitlab runner).
PS Lors de la création du service LoadBalancer, il ne pourra pas démarrer tout seul, car vous devez indiquer le lieu de son emplacement physique. Pour ce faire, allez dans Services, cliquez sur les trois points du service souhaité> Modifier la configuration> Étiquettes et annotations et ajoutez des annotations
load-balancer.hetzner.cloud/location - centre de données
load-balancer.hetzner.cloud/use-private-ip true
PPS : Il est indiqué ici que cela peut être évité en ajoutant des paramètres aux variables de cluster par défaut, mais je ne sais pas comment faire.