Kubernetes di Hetzner dengan Rancher (dengan gambar)

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.








All Articles