Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

Miten kontin vianmääritys tehdään?

Joskus podia käyttöönotettaessa sen tila muuttuu muutaman sekunnin jälkeen muotoon CrashLoopBackOff tai Error. Tässä tapauksessa voit tarkistaa podien lokit, mutta saatat joutua siirtymään terminaaliin selvittääksesi, mikä on vialla. Et kuitenkaan voi tehdä sitä, koska podin käynnistyminen epäonnistuu.

Tässä artikkelissa katsomme, miten kontin vianmääritys tehdään kahdella menetelmällä:

  • Ensimmäinen käyttämällä Rahti-selainkäyttöliittymää
  • Toinen käyttämällä oc -komentorivityökalua.

Vikaantuvan podin käyttöönotto

Otetaan käyttöön vikaantuva podi. Tätä varten käytämme virallista NGINX-imagoa. Tämä imago epäonnistuu, koska se toimii pääkäyttäjäoikeuksilla, mikä ei ole mahdollista Rahdissa (OpenShiftissä). Lisätietoja täältä

Tässä on Deployment-määrityksemme:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: test-debug
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test-debug
  template:
    metadata:
      labels:
        app: test-debug
    spec:
      containers:
        - name: nginx
          image: 'nginx:latest'
          ports:
            - containerPort: 8080
              protocol: TCP
          imagePullPolicy: Always
      restartPolicy: Always
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%

Tallenna se tiedostoon nimeltä deployment-fail.yaml (esimerkiksi)

Ota se käyttöön suorittamalla tämä komento:

oc apply -f deployment-fail.yaml

Tarkista nyt podisi. Sen pitäisi epäonnistua. Katso lokeja, sinun pitäisi nähdä tämä:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2026/07/10 13:21:40 [warn] 1#1: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2026/07/10 13:21:40 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)

Kontin vianmääritys Rahti-selainkäyttöliittymällä

Tarkastellaan näitä virheitä:

2026/07/10 13:21:40 [warn] 1#1: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2026/07/10 13:21:40 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)

Olisi hyödyllistä tarkistaa tiedosto nginx.conf, mutta et voi tehdä sitä, koska podi epäonnistuu. Tässä debug-kontti tulee avuksi!

Siirry Rahdissa kohtaan Workloads > Pods ja valitse podisi, jonka tila on Error tai CrashLoopBackOff. Napsauta välilehteä Logs ja napsauta leppäkerttua muistuttavaa kuvaketta:

debug container

Se käynnistää automaattisesti debug-kontin. Voit nyt tarkistaa tiedoston /etc/nginx/nginx.conf sisällön suorittamalla komennon:

cat /etc/nginx/nginx.conf

Sekä oikeudet hakemistoon /var/cache/nginx/ suorittamalla komennon:

ls -l /var/cache/nginx

Terminal

Jos et näe komentoja terminaalissa, laajenna sitä napsauttamalla oikeasta yläkulmasta "Expand". Voit myös pienentää sen takaisin, ja komennot näkyvät silti.

Kaksi asiaa täytyy tehdä:

  1. user-direktiivi ei ole tarpeellinen, koska jokainen podi Rahdissa käynnistyy satunnaisella UID:llä ja GID:llä (katso tietoturvaoppaamme)

  2. Meidän täytyy päivittää hakemiston /var/cache/nginx oikeudet

Miten?

Meidän täytyy luoda viralliseen NGINX-imagoon perustuva mukautettu imago. CSC on kehittänyt sellaisen, ja sen voi noutaa Docker Hubista: cscfi/nginx-okd. Lisätietoja löydät Dockerfilesta GitHub-repositoriostamme

Voit nähdä, että päivitimme oikeudet näillä riveillä ja kommentoimme user-direktiivin täällä

Note

Sovellusta ei ole mahdollista ajaa porteissa 80 ja 443. Siksi päivitimme myös portin konfiguraatiossa

Kun olet saanut podisi vianmäärityksen tehtyä, voit poistua terminaalista. Se tappaa debug-kontin automaattisesti.

Kontin vianmääritys CLI-työkalulla

Menettely on sama, ainoa ero on se, että sinun täytyy suorittaa tämä komento:

oc debug pod/<the name of your pod>

Uusi debug-kontti käynnistyy, ja päädyt suoraan komentokehotteeseen.

Vianmääritys

Jos debug-konttisi ei käynnisty, syynä voi olla liitetty taltio. Rahti ei tällä hetkellä tue ReadWriteManyä (RWX). Sinun täytyy poistaa taltio, jotta debug-kontti voidaan käynnistää, päivittämällä deploymentisi.

Voit tarkistaa välilehden Events

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta