Kubernetes perusteet

Yhteenveto ja parhaat käytännöt

Koulutuksen yhteenveto, RKE2:n ylläpito, Rancherin hallinta, RBAC, resurssirajat, siivous ja Q&A.

4 min lukuaika

Yhteenveto ja parhaat käytännöt

Tässä päätösosiossa kokoat yhteen koulutuksen opit, tutustut tuotannon parhaisiin käytäntöihin – RKE2:n ylläpitoon, Rancherin keskitettyyn hallintaan, RBAC-tietoturvan perusteisiin ja resurssirajoihin – ja lopuksi siivoat harjoitusresurssit. Osio päättyy vapaaseen kyselytuokioon.


1. Koulutuksen yhteenveto

Koulutuksen aikana kävit läpi Kuberneteksen perusteet käytännönläheisesti:

  • Arkkitehtuuri – orkestrointi, deklaratiivinen malli ja sovittelusilmukka.
  • Hallinta ja RKE2 – ohjaustaso, worker-solmut ja RKE2:n server/agent-rakenne.
  • Verkko ja lisäosat – Service-tyypit, CoreDNS, CNI ja Ingress.
  • Konfiguraatio ja tila – ConfigMapit, Secretit sekä PV/PVC/StorageClass.
  • Paketinhallinta – Helm, Rancher Apps, Kustomize ja arjen työkalut.

Kaikki nämä hallitaan saman kube-apiserverin kautta – niin kubectl kuin Rancherkin.


2. RKE2:n päivitykset ja ylläpito

RKE2 on suunniteltu helposti ylläpidettäväksi:

  • etcd-varmuuskopiot – RKE2 tekee automaattisia tilannevedoksia (snapshots). Varmista, että ne tallennetaan myös klusterin ulkopuolelle (esim. S3).
  • Päivitykset – tehdään hallitusti solmu kerrallaan (rolling upgrade). Rancher voi hoitaa päivitykset keskitetysti.
  • Solmujen huolto – ota solmu pois käytöstä turvallisesti ennen huoltoa:
bash
# Estä uudet Podit solmulle ja siirrä olemassa olevat muualle
kubectl cordon <solmu>
kubectl drain <solmu> --ignore-daemonsets --delete-emptydir-data

# Palauta solmu käyttöön huollon jälkeen
kubectl uncordon <solmu>

💡 Palautusharjoittelu: varmuuskopio on hyödyllinen vain, jos palautus on testattu. Harjoittele etcd-snapshotista palauttamista säännöllisesti.


3. Rancherin keskitetty hallinta

Rancher tuo useiden klustereiden hallinnan yhteen paikkaan:

  • Monen klusterin hallinta – luo, tuo ja hallitse RKE2- ja muita klustereita.
  • Projektit ja nimiavaruudet – ryhmittele nimiavaruudet projekteiksi ja hallitse käyttöoikeuksia projektitasolla.
  • Käyttöoikeudet – Rancher liittää käyttäjät ja ryhmät klustereiden RBAC-rooleihin.
  • Valvonta ja lokit – integroitu monitorointi (Prometheus/Grafana) ja lokien keruu.
  • Fleet (GitOps) – jaa sovellukset ja konfiguraatiot monelle klusterille Gitistä.

4. Tietoturva: RBAC-perusteet

RBAC (Role-Based Access Control) määrittää, kuka saa tehdä mitä ja missä. Neljä peruskäsitettä:

  • Role – joukko oikeuksia yhdessä nimiavaruudessa.
  • ClusterRole – oikeudet koko klusterin tasolla.
  • RoleBinding / ClusterRoleBinding – liittää roolin käyttäjälle, ryhmälle tai ServiceAccountille.
flowchart LR
    U[Käyttäjä / ServiceAccount] --> RB[RoleBinding]
    RB --> R[Role]
    R --> P[Oikeudet:<br/>get, list, create, delete ...]

Esimerkki: salli Podien lukeminen omassa nimiavaruudessa:

yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: <oma-nimi>
  name: pod-reader
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: <oma-nimi>
subjects:
  - kind: User
    name: matti
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

⚠️ Noudata pienimmän oikeuden periaatetta (least privilege): anna vain ne oikeudet, joita todella tarvitaan. Vältä cluster-admin-oikeuksien jakamista.


5. Resurssirajat: requests ja limits

Jokaiselle kontille kannattaa määrittää resurssien pyynnöt ja rajat:

  • requests – kuinka paljon CPU:ta/muistia kontti varaa vähintään. Scheduler käyttää tätä sijoituspäätökseen.
  • limits – kova yläraja. Muistin ylitys johtaa kontin tappamiseen (OOMKilled), CPU:ta rajoitetaan (throttling).
yaml
resources:
  requests:
    cpu: "100m"       # 0,1 CPU-ydintä
    memory: "128Mi"
  limits:
    cpu: "500m"
    memory: "256Mi"

Nimiavaruustasolla rajoja voi valvoa:

  • ResourceQuota – rajoittaa nimiavaruuden yhteenlaskettua resurssien käyttöä.
  • LimitRange – asettaa oletus- ja maksimiarvot yksittäisille konteille.

💡 Ilman requests- ja limits-arvoja yksi sovellus voi viedä koko solmun resurssit. Ne ovat tuotannon vakauden perusta.


6. Parhaat käytännöt (muistilista)

  • Käytä omia nimiavaruuksia ja selkeitä labeleita resurssien ryhmittelyyn.
  • Määritä aina requests/limits ja health-tarkistukset (liveness/readiness).
  • Hallitse konfiguraatio ConfigMapeilla ja salaisuudet Secreteillä (+ etcd-salaus).
  • Käytä deklaratiivista tapaa (kubectl apply, Helm, GitOps) – vältä käsin muokkausta.
  • Kiinnitä konttikuvat versioituihin tageihin, älä latest-tagiin.
  • Noudata RBAC:n pienimmän oikeuden periaatetta.
  • Varmista etcd-varmuuskopiot ja testaa palautus.

7. Hands-on: resurssien siivous

Siivoa koulutuksen aikana luodut resurssit sekä komentoriviltä että Rancherista.

1. Katso, mitä nimiavaruudessasi on:

bash
kubectl get all -n <oma-nimi>

2. Poista Helm-releaset ja yksittäiset resurssit tarvittaessa:

bash
# Helmillä asennetut sovellukset
helm list -n <oma-nimi>
helm uninstall web -n <oma-nimi>

# Yksittäiset resurssit
kubectl delete deployment web -n <oma-nimi>

3. Poista koko oma nimiavaruus – tämä poistaa kaikki sen resurssit kerralla:

bash
kubectl delete namespace <oma-nimi>

4. Siivoa Rancherista:

  1. Avaa Cluster Explorer ja valitse nimiavaruutesi.
  2. Poista jäljellä olevat työkuormat tai koko nimiavaruus Delete-toiminnolla.
  3. Tarkista Apps → Installed Apps, ettei asennettuja releaseja jää jäljelle.

5. Varmista, ettei ylimääräisiä resursseja jää:

bash
kubectl get namespaces

8. Q&A – vapaa kyselytuokio

Käydään läpi kysymykset ja pohditaan, miten opittua sovelletaan omassa ympäristössäsi. Hyviä keskustelunaiheita:

  • Miten Kubernetes/RKE2 istuu teidän nykyiseen infraanne?
  • Mitkä sovellukset kannattaisi siirtää klusteriin ensimmäisenä?
  • Miten CI/CD, monitorointi ja varmuuskopiot järjestetään?

Yhteenveto

  • RKE2:n ylläpito nojaa etcd-varmuuskopioihin, hallittuihin päivityksiin ja solmujen huoltoon (cordon/drain).
  • Rancher keskittää monen klusterin hallinnan, käyttöoikeudet ja valvonnan.
  • RBAC toteuttaa pienimmän oikeuden periaatteen roolien ja sidosten avulla.
  • requests/limits takaavat sovellusten vakaan resurssien käytön.
  • Siivoa aina harjoitusresurssit (kubectl delete namespace, helm uninstall).