Skip to content

Hallittu Kubernetes

Frostmoln Hallittu Kubernetes ajaa klustereita Frostmoln-laskennalla. Sinä hallitset työkuormiasi; alusta luo ja hallitsee ohjaustason, työsolmut, API-kuormantasaajan ja kubeconfigisi.

Pilotti — käyttöoikeus myönnetään tenant-kohtaisesti

Hallittu Kubernetes otetaan käyttöön pilottina. Se näkyy portaalissa vain tenanteille, joille on myönnetty kubernetes-käyttöoikeus — jos et näe Kubernetesia navigoinnissa, sitä ei ole vielä otettu käyttöön tenantillesi. Pyydä käyttöoikeutta tuesta (pilotin aikana ei ole itsepalveluna tehtävää käyttöönottoa).

Luo klusteri

Mene portaalissa kohtaan Kubernetes → Clusters → Create ja valitse:

  • Name.
  • Kubernetes-versio — tällä hetkellä 1.34 tai 1.35 (suositeltu versio on merkitty); pudotusvalikko on totuuden lähde.
  • Ohjaustason taso:
    • Standard (development) — yksi erillinen ohjaustason solmu.
    • Production (production) — kolme erillistä ohjaustason solmua (HA-kvorumi), tuotannon SLA.
  • VPC + aliverkko, jossa klusteri ajetaan (alue peritään VPC:stä).
  • Alustava solmupooli — nimi, solmun koko (k8s.gp1.small / k8s.gp1.medium / k8s.gp1.large) ja solmujen määrä.

Luontihetkellä ei ole sisääntuloasetusta. Se, miten oma liikenteesi tavoittaa työkuormasi, ratkaistaan klusterin sisällä jälkikäteen — katso Työkuormien tavoittaminen.

Komentorivi & Terraform

Hallittua Kubernetesta hallitaan portaalista, fm-komentorivityökalulla tai Terraformilla. Komentorivityökalussa on täysi fm kubernetes -komentoryhmä — klusterit, solmupoolit sekä solmukokojen / tasojen / versioiden / lisäosien luettelot; katso fm kubernetes -referenssi. Terraformissa käytät resurssia frostmoln_kubernetes_cluster (alustavan solmupoolin ja klusterilisäosien kanssa), frostmoln_kubernetes_node_pool lisäpooleille sekä katalogitietolähteitä frostmoln_kubernetes_versions / _tiers / _flavors / _addons — katso Terraform-referenssi. Kun sinulla on kubeconfig, käytät kubectlia, Helmiä ja tavanomaisia Kubernetes-työkalujasi klusteria vasten kuten yleensä.

Hae kubeconfigisi

Kun klusteri on käynnissä, käytä klusterin tietosivulla Download Kubeconfigia. Osoita kubectl siihen ja olet sisällä:

bash
export KUBECONFIG=~/Downloads/my-cluster-kubeconfig.yaml
kubectl get nodes

Kubernetes API -palvelin tavoitetaan erillisen kuormantasatun päätepisteen kautta (portti 6443). Klusterin tunnistetiedot generoidaan ja alusta säilyttää niitä turvallisesti — solmujen alustus ei koskaan välitä salaisuuksia takaisin.

Klusterin päätepiste ei ole liikenteellesi. Se on kubectlille, Helmille ja CI:llesi. Oma liikenteesi menee sellaisen kuormantasaajan osoitteeseen, jota pyydät klusterin sisältä — katso Työkuormien tavoittaminen. Sovelluksen DNS-tietueen osoittaminen klusterin päätepisteeseen on juuri se virhe, jonka tämä ero on olemassa estämään.

Työkuormien tavoittaminen

Klusteri ei tule mukanaan kuormantasaajaa omalle liikenteellesi. Saat sen Kubernetesin vakiotavalla: luo Service, jonka type: LoadBalancer, ja alusta luo kyseiselle palvelulle kuormantasaajan, pitää podisi kytkettynä sen jäseniksi ja kirjoittaa osoitteen takaisin palveluun.

yaml
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
    - name: https
      port: 443
      targetPort: 8443
bash
kubectl get service web --watch
# NAME   TYPE           EXTERNAL-IP   PORT(S)
# web    LoadBalancer   10.20.4.17    443:31274/TCP

Osoite, joka ilmestyy kohtaan EXTERNAL-IP, on se, johon osoitat DNS:si.

Ingress-ohjain toimii samalla tavalla. Asenna haluamasi (Traefik, ingress-nginx, …) ja julkaise se type: LoadBalancer -palveluna NodePort-palvelun sijaan. Kiinnitettäviä varattuja solmuportteja ei enää ole: Kubernetes valitsee solmuportit itse, eikä sinun tarvitse tietää niitä. TLS päättyy klusterissasi omilla varmenteillasi — alusta ei koskaan käsittele avaimiasi.

Muutamia hyödyllisiä ominaisuuksia:

  • Jokainen tällainen palvelu saa oman kuormantasaajansa. Se näkyy tavallisessa kuormantasaajaluettelossasi ja laskutetaan kuormantasaajana kuten mikä tahansa muu.
  • Hallitse sitä Kubernetesista, ei kuormantasaaja-API:n kautta. Palvelu on se, jota vasten kuormantasaaja täsmäytetään: muuta sen portteja tai valitsinta, niin kuormantasaaja seuraa mukana.
  • Kun poistat palvelun, sen kuormantasaaja poistuu mukana. Poista palvelusi ennen kuin poistat klusterin, jotta mitään ei jää jälkeen.
  • Kubernetes API -päätepiste on erillinen eikä ole yksi näistä — sen luo alusta, ei mikään palvelusi.

Vain sisäiset osoitteet tänään — ei vielä julkista sisääntuloa

Palvelulle (Service) luotu kuormantasaaja saa sisäisen osoitteen klusterin omasta aliverkosta: tavoitettavissa VPC:n sisältä, ei internetistä. Julkista osoitetta tällaiselle palvelulle ei ole vielä rakennettu, joten klusterin työkuormalla ei ole tällä hetkellä tuettua julkista sisääntuloa. Jos työkuormasi on oltava tavoitettavissa internetistä, se ei ole tänään mahdollista tässä klusterissa.

Työsolmujen automaattinen sisääntulon kuormantasaaja on poistettu

Klusterit saivat aiemmin luontihetkellä sisääntulon kuormantasaajan, joka välitti TCP 80:n ja 443:n kiinteisiin solmuportteihin jokaisella työsolmulla, valittuna ingressScheme-asetuksella (Terraformissa ingress_scheme) ja valinnaisella tuo-omasi-osoitteella. Kaikki tämä on poistettu: klusteria luodessa ei ole sisääntuloasetusta eikä julkaistavia kiinteitä solmuportteja. Käytä Servicea, jonka type: LoadBalancer, kuten yllä.

API-päätepisteen näkyvyys ei ole asetus

Klusterilla ei ole scheme-asetusta. Alusta päättää, miten Kubernetes API -päätepiste on näkyvissä — ei klusteri kerrallaan — ja scheme-arvon lähettäminen hylätään.

Solmupoolit

Klusterilla on yksi tai useampi solmupooli — tietyn koon työsolmujen ryhmiä. Klusterin tietosivulta voit:

  • Lisätä solmupoolin (nimi, koko, solmujen määrä), valinnaisesti labelien ja taintien kanssa ajoituksen ohjaamiseksi (labelit ja taintit ovat toistaiseksi käytettävissä vain portaalissa — Terraform-resurssi ei vielä tue niitä).
  • Skaalata poolia asettamalla uuden solmujen määrän.
  • Poistaa poolin.

Skaalaa toistaiseksi manuaalisesti

Klusterin automaattiskaalaus ei ole vielä saatavilla — aseta solmujen määrä nimenomaisesti ja skaalaa pooleja manuaalisesti työkuormasi muuttuessa.

Pysyvä tallennustila

Klusterit toimitetaan Frostmoln CSI -tallennusluokan frostmoln-block (oletus-StorageClass) kanssa, jota tukee Frostmoln-lohkotallennustila. Luo PersistentVolumeClaim, niin volyymi luodaan ja liitetään automaattisesti; volyymit tukevat verkossa tapahtuvaa laajennusta.

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
spec:
  accessModes: ['ReadWriteOnce']
  storageClassName: frostmoln-block
  resources:
    requests:
      storage: 20Gi

Verkottuminen

Klusterin CNI on Cilium. Klusterin solmut pääsevät internetiin vain, jos klusterin VPC:llä on Gateway — ilman sitä solmuilla ei ole lähtevää yhteyttä, nimenselvitystä eikä yhteyttä hallittuihin palveluihin, joten lisää VPC:hen Gateway itse, jos solmut tarvitsevat jotakin näistä. Klusterin luominen ei koskaan lisää sitä puolestasi. Solmut on joka tapauksessa eristetty Frostmolnin sisäverkoista — työkuormasi ajetaan omassa tenant-kohtaisessa verkossaan. Tavoita API-palvelin yllä olevan klusterin päätepisteen kautta, ja julkaise omat palvelusi Servicella, jonka type: LoadBalancer (katso Työkuormien tavoittaminen).

Rajoitukset

  • Yksi vyöhyke klusteria kohti — solmut sijoitetaan klusterin alueelle/aliverkkoon; ei usean AZ:n hajautusta tänään.
  • Cilium on ainoa CNI — sitä ei voi valita asiakkaan toimesta.
  • Ei vielä paikallaan tehtäviä versiopäivityksiä — valitse versiosi luontihetkellä.
  • Automaattiskaalaus ei ole vielä saatavilla (skaalaa solmupooleja manuaalisesti).
  • Työkuorman kuormantasaajalle ei ole vielä julkista osoitettaServicelle, jonka type: LoadBalancer, luotu kuormantasaaja on VPC:n sisäinen.
  • Klusterin poistaminen poistaa sen solmut, sen API-kuormantasaajan ja sen tallennetut tunnistetiedot.

Aiheeseen liittyvää