Kubernetes hallinta
Kuberneteksen komponentit, RKE2:n arkkitehtuuri ja klusterin tarkastelu Rancherissa ja komentoriviltä.
Kuberneteksen hallinta
Tässä osiossa opit, mistä osista Kubernetes-klusteri koostuu, miten RKE2-jakelu toteuttaa nämä osat, ja miten klusteria tarkastellaan sekä Rancherin käyttöliittymästä että komentoriviltä. Koulutuksessa käytettävä klusteri on pilvessä ajettava RKE2-klusteri, jota hallitaan Rancherilla.
1. Mitä klusterin hallinta tarkoittaa?
Kubernetes-klusteri on joukko koneita (solmuja, nodes), jotka toimivat yhtenä kokonaisuutena konttien ajamiseen. Hallinnalla tarkoitetaan sitä, että ymmärrät:
- mistä osista klusteri koostuu ja mikä on kunkin osan tehtävä,
- miten osat kommunikoivat keskenään,
- miten klusterin tilaa tarkastellaan ja vianetsintää tehdään.
Klusteri jakautuu kahteen rooliin:
- Ohjaustaso (control plane) tekee päätökset ja säilyttää klusterin tilan.
- Worker-solmut ajavat varsinaiset sovelluskontit.
flowchart LR
subgraph CP[Ohjaustaso · Control Plane]
API[kube-apiserver]
ETCD[(etcd)]
SCH[kube-scheduler]
CM[kube-controller-manager]
end
subgraph W[Worker-solmut]
KL[kubelet]
KP[kube-proxy]
CR[Container Runtime]
end
User[kubectl / Rancher] --> API
API --- ETCD
API --- SCH
API --- CM
API --- KL2. Control Plane -komponentit
Ohjaustaso koostuu neljästä keskeisestä komponentista. RKE2:ssa ne ajetaan staattisina podeina (static pods) server-solmuilla.
kube-apiserver
Klusterin keskitetty rajapinta (REST API). Kaikki kommunikointi kulkee sen kautta –
niin kubectl, Rancher kuin klusterin sisäiset komponentitkin. Se:
- vastaanottaa ja validoi pyynnöt (autentikointi ja auktorisointi, RBAC),
- on ainoa komponentti, joka lukee ja kirjoittaa etcd:hen,
- toimii tapahtumien keskuksena, jota muut komponentit seuraavat (watch).
etcd
Hajautettu, vahvasti konsistentti avain–arvo-tietokanta, joka säilyttää klusterin koko halutun ja nykyisen tilan. Se on klusterin totuuden lähde (source of truth).
⚠️ Muista: etcd sisältää kaiken – myös Secretit. Sen varmuuskopiointi ja suojaus on kriittistä. RKE2 tekee etcd:stä automaattisia tilannevedoksia (snapshots).
kube-scheduler
Päättää, mille worker-solmulle uusi Pod sijoitetaan. Se ottaa huomioon mm.:
- solmujen vapaat resurssit (CPU, muisti),
- Podin resurssipyynnöt ja -rajat (requests/limits),
- säännöt kuten
nodeSelector, taints/tolerations ja affinity.
Scheduler ei käynnistä konttia itse – se vain kirjaa päätöksen apiserverin kautta.
kube-controller-manager
Ajaa joukkoa kontrollereita, jotka toteuttavat sovittelusilmukoita (reconciliation loop): ne vertaavat haluttua ja nykyistä tilaa ja tekevät korjaavat toimet. Esimerkkejä:
- Node controller – seuraa solmujen terveyttä,
- Deployment/ReplicaSet controller – pitää kopioiden määrän oikeana,
- Job controller – ajaa kertaluontoiset tehtävät.
sequenceDiagram
participant U as kubectl / Rancher
participant A as kube-apiserver
participant E as etcd
participant S as kube-scheduler
participant K as kubelet (worker)
U->>A: Luo Deployment (haluttu tila)
A->>E: Tallenna tila
S->>A: Valitse solmu Podille
A->>K: Käynnistä Pod solmulla
K->>A: Raportoi tila (Running)3. Worker-solmut
Worker-solmut (RKE2:ssa agent-solmut) ajavat sovelluskontit. Jokaisella solmulla on kolme keskeistä osaa.
kubelet
Solmun agentti, joka:
- vastaanottaa apiserveriltä tiedon, mitkä Podit solmulla pitää olla ajossa,
- käynnistää ja valvoo kontteja container runtimen kautta,
- suorittaa terveystarkistukset (liveness/readiness probes),
- raportoi solmun ja Podien tilan takaisin apiserverille.
kube-proxy
Hoitaa solmun verkkosäännöt ja ohjaa liikenteen Serviceille (esim. iptables- tai IPVS-sääntöjen avulla). Näin Palvelun (Service) virtuaalinen IP reitittyy oikeille Podeille.
Container Runtime
Ohjelmisto, joka käynnistää ja ajaa kontit. RKE2 käyttää containerd-ajuria. Runtime hoitaa konttikuvien lataamisen, konttien elinkaaren ja eristyksen.
💡 Control Plane -komponentitkin ajetaan lopulta kontteina worker-tason mekanismeilla: RKE2:ssa server-solmu ajaa sekä ohjaustason staattiset podit että kubelet- ja containerd-osat.
4. RKE2:n arkkitehtuuri
RKE2 (Rancher Kubernetes Engine 2) on Rancherin turvallisuuspainotteinen Kubernetes-jakelu. Se asentaa ja ylläpitää yllä kuvatut komponentit valmiiksi paketoituna.
Server- ja agent-solmut
- Server-solmu (
rke2-server) ajaa ohjaustason komponentit ja embedded etcd:n. Tuotannossa server-solmuja on tyypillisesti 3 korkean saatavuuden vuoksi. - Agent-solmu (
rke2-agent) on worker-solmu, joka ajaa vain kubeletin, kube-proxyn ja containerdin sekä sovelluskuormat.
Keskeiset ominaisuudet
- Supervisor – RKE2:n oma prosessi, joka käynnistää ja valvoo kubeletin sekä ohjaustason staattiset podit.
- Embedded etcd – etcd ajetaan osana server-solmua; RKE2 hoitaa snapshotit.
- containerd – sisäänrakennettu container runtime.
- CNI-lisäosa – oletuksena Canal (Calico + Flannel); vaihtoehtoina mm. Cilium.
- helm-controller – asentaa lisäosat (CNI, CoreDNS, ingress-nginx, metrics-server) automaattisesti klusterin käynnistyessä.
- Staattiset podit – ohjaustason komponenttien manifestit ovat solmulla polussa
/var/lib/rancher/rke2/agent/pod-manifests/.
flowchart TB
subgraph RANCHER[Rancher · hallinta]
UI[Rancher UI + API]
end
subgraph SRV[Server-solmut · rke2-server]
direction TB
S_API[kube-apiserver]
S_ETCD[(embedded etcd)]
S_SCH[kube-scheduler]
S_CM[controller-manager]
S_KL[kubelet + containerd]
end
subgraph AGT[Agent-solmut · rke2-agent]
direction TB
A_KL[kubelet]
A_KP[kube-proxy]
A_CR[containerd]
A_POD[Sovelluspodit]
end
UI --> S_API
S_API --- S_ETCD
S_API --- S_SCH
S_API --- S_CM
S_API --- A_KLRancher yhdistää klusteriin agentin kautta ja tarjoaa graafisen näkymän solmuihin, podeihin ja työkuormiin. Sama tieto on saatavilla myös
kubectl-komennoilla.
5. Rancher hallintakäyttöliittymänä
Rancher on Kuberneteksen hallinta-alusta, jolla voidaan luoda, tuoda ja hallita useita klustereita yhdestä paikasta. Koulutuksessa Rancher on käytössä RKE2-klusterin hallintaan.
Rancherin keskeiset näkymät:
- Cluster Management – klusterien luonti ja tuonti sekä solmujen tilat.
- Cluster Explorer – yhden klusterin sisäiset resurssit (Nodes, Pods, Deployments, Services, ConfigMaps, Secrets…).
- Workloads – sovelluskuormien tarkastelu ja hallinta graafisesti.
Kaikki, mitä Rancherissa näet, tulee saman kube-apiserverin kautta kuin
kubectl-komennot – Rancher on käyttöliittymä samaan rajapintaan.
6. Hands-on: solmut ja järjestelmäpodit (15 min)
Tarkastele klusterin osia sekä komentoriviltä että Rancherista. Varmista ensin, että sinulla on klusterin kubeconfig käytössä (ks. arkkitehtuuri-osion harjoitus) ja pääsy Rancheriin.
Varmista myös, että oma nimiavaruutesi (namespace) on luotu ja käytössä – siinä työskentelet myöhemmissä harjoituksissa:
# Korvaa <oma-nimi> omalla nimelläsi
kubectl create namespace <oma-nimi> --dry-run=client -o yaml | kubectl apply -f -
kubectl config set-context --current --namespace=<oma-nimi>A) Komentoriviltä (kubectl)
1. Listaa solmut ja niiden roolit:
kubectl get nodes -o wideTunnista tuloksesta server-solmut (rooli control-plane,etcd,master) ja
agent-solmut (worker). Sarakkeista näet myös solmun IP:n, käyttöjärjestelmän ja
Kubernetes-version.
2. Tarkastele järjestelmäpodeja kube-system-nimiavaruudessa:
kubectl get pods -n kube-system -o wideEtsi tuloksesta RKE2:n komponentit, esimerkiksi:
etcd-<solmu>,kube-apiserver-<solmu>,kube-scheduler-<solmu>,kube-controller-manager-<solmu>– ohjaustason staattiset podit,kube-proxy-<solmu>– verkkoproxy jokaisella solmulla,rke2-canal-*/cilium-*– CNI-verkkolisäosa,rke2-coredns-*– klusterin DNS,rke2-ingress-nginx-*,rke2-metrics-server-*– lisäpalvelut.
3. Katso yhden solmun tarkemmat tiedot:
kubectl describe node <solmun-nimi>Kiinnitä huomiota kohtiin Roles, Taints, Capacity, Allocatable ja Conditions
(esim. Ready=True).
4. Varmista klusterin perusterveys:
kubectl cluster-info
kubectl get pods -n kube-system --field-selector status.phase!=RunningJälkimmäisen komennon tulisi olla tyhjä – kaikki järjestelmäpodit ovat Running.
B) Rancherin käyttöliittymästä
- Kirjaudu Rancheriin ja avaa koulutusklusteri.
- Mene Cluster → Nodes. Vertaa solmujen määrää ja rooleja komennon
kubectl get nodestulokseen. - Avaa Cluster Explorer → Workloads → Pods ja valitse nimiavaruudeksi
kube-system. Etsi samat komponentit kuin komentoriviltä. - Klikkaa yhtä podia (esim.
kube-apiserver-*) ja tutki sen tila, tapahtumat (events) ja lokit.
🔎 Havainto: Rancher ja
kubectlnäyttävät saman tiedon, koska molemmat käyttävät samaa kube-apiserveriä. Käyttöliittymä on kätevä yleiskuvaan, komentorivi tarkkaan vianetsintään ja automaatioon.
Yhteenveto
- Klusteri jakautuu ohjaustasoon (apiserver, etcd, scheduler, controller-manager) ja worker-solmuihin (kubelet, kube-proxy, container runtime).
- kube-apiserver on kaiken kommunikoinnin keskus; etcd on totuuden lähde.
- RKE2 paketoi nämä valmiiksi: server-solmut ajavat ohjaustason ja embedded etcd:n, agent-solmut ovat workereita. containerd on runtime ja Canal oletus-CNI.
- Rancher on hallintakäyttöliittymä samaan apiserveriin – sama tieto on saatavilla
myös
kubectl get nodesjakubectl get pods -n kube-system-komennoilla.