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 computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

Miten konttia debugataan?

Joskus podia käyttöönotettaessa sen tila muuttuu muutaman sekunnin kuluttua tilaan 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 konttia debugataan 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 pod. Tätä varten käytämme virallista NGINX-imagoa. Tämä imago epäonnistuu, koska se suoritetaan 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 debuggaus Rahti-selainkäyttöliittymällä

Otetaan nämä virheet:

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 pod 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

Ja myös hakemiston /var/cache/nginx/ oikeudet 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 pod 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 hakea 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 pois täällä

Note

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

Kun olet debugannut podisi, voit poistua terminaalista, jolloin debug-kontti lopetetaan automaattisesti.

Kontin debuggaus 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