Selamat siang. Selama beberapa bulan terakhir saya telah mencoba meluncurkan cluster kubernetes untuk saling menyiksa dan eksplorasi. Selama waktu ini, saya membaca sejumlah besar artikel yang berbeda, banyak di antaranya bagus, tetapi sama sekali tidak pantas untuk orang yang belum mengenal kuber.
Penolakan
Dalam artikel ini, saya tidak mengejar tujuan untuk memberi tahu "bagaimana melakukannya dengan benar", saya ingin memberi tahu Anda bagaimana membuatnya bekerja dan memberi orang kesempatan untuk belajar lebih lanjut, dan tidak menjadi botak dan beruban sebelum usia yang ditentukan
Awalnya, saya ingin menjalankan cluster pada server khusus dengan mesin virtual hyper-v, tetapi saya menemukan bahwa "hanya memulai wizard dan menghubungkan node" tidak cukup untuk cluster penuh, Anda masih perlu menginstal a plugin jaringan, jaga volume Persisten dan, lebih disukai, semacam loadbalancer.
Upaya lebih lanjut membawa saya ke hetzner dan peternak.
Mengapa hetzner? Mereka memiliki satu keuntungan yang sangat signifikan. Berikut adalah harga untuk server virtual di hetzner:
Dan untuk mitranya di Mail Cloud:
Ya, hetzner tidak memiliki database yang dikelola, antrian, penyimpanan s3 dan hal-hal lain, tetapi apa yang sudah mereka miliki cukup untuk mendapatkan cluster yang berfungsi, dan yang lainnya dapat dijalankan di dalamnya, atau di server tetangga / dedicated (server fisik dapat dihubungkan ke jaringan pribadi server virtual)
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.
Pada artikel selanjutnya saya akan membahas tentang penerapan dan penginstalan aplikasi melalui helm (misalnya, gitlab runner).
PS Saat membuat layanan LoadBalancer, itu tidak akan dapat dimulai dengan sendirinya, karena Anda perlu menunjukkan tempat lokasi fisiknya. Untuk melakukan ini, buka Layanan, klik tiga titik di layanan yang diinginkan> Edit Config> Label & Annotations dan tambahkan anotasi
load-balancer.hetzner.cloud/location - pusat data
load-balancer.hetzner.cloud/use-private-ip true
PPS: Dinyatakan di sini bahwa ini dapat dihindari dengan menambahkan parameter ke variabel cluster default, tetapi saya tidak tahu bagaimana melakukannya.