<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Shubh Dadhich</title>
    <description>The latest articles on Forem by Shubh Dadhich (@shubhcloud).</description>
    <link>https://forem.com/shubhcloud</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3477656%2F31112eca-d340-41c3-97f5-fb8045c3d62f.png</url>
      <title>Forem: Shubh Dadhich</title>
      <link>https://forem.com/shubhcloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shubhcloud"/>
    <language>en</language>
    <item>
      <title>Begrijpen van Pod Pending States: Waarom je Pods niet plannen?</title>
      <dc:creator>Shubh Dadhich</dc:creator>
      <pubDate>Wed, 05 Nov 2025 08:54:52 +0000</pubDate>
      <link>https://forem.com/careerbytecode/begrijpen-van-pod-pending-states-waarom-je-pods-niet-plannen-51b6</link>
      <guid>https://forem.com/careerbytecode/begrijpen-van-pod-pending-states-waarom-je-pods-niet-plannen-51b6</guid>
      <description>&lt;h2&gt;
  
  
  Wat je zal leren
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Wat is de Pod Pending State?.&lt;/li&gt;
&lt;li&gt;
Begrijpen van de oorzaak voor Pod Pending States.&lt;/li&gt;
&lt;li&gt;
Debuggen UseCase.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Wat is Pod Pending State? &lt;a id="deep-dive"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Een pod is de basis eenheid van deployment waar container draait. Normaal gaan pods snel van eerste creatie naar de running state. De levenscyclus van een Pod beschrijft de verschillende fases die een Pod doorloopt van creatie tot einde.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j90wnfyscwaivhwncw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0j90wnfyscwaivhwncw9.png" alt="1" width="770" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maar soms blijft de Pod vast in de Pending state. Dit betekent dat het Pod API object bestaat, maar de workload draait niet. Dat betekent dat geen van de containers in de pod draait. Dit is omdat de scheduler de pod niet op een node heeft geplaatst.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Begrijpen van de oorzaak voor Pod Pending States &lt;a id="oorzaken"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Hier zijn de verschillende oorzaken wanneer de scheduler geen pod kan plannen op een node:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Onvoldoende node resources (CPU / memory)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dit is een vaak fout die komt door een hogere pod resource vraag (CPU/Memory) dan een andere beschikbare node in de cluster. Dat betekent als een pod 4 GB-geheugen vraagt, maar geen van de nodes heeft 4 GB om te geven. Dit maakt dat de pod niet gepland wordt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Node Affinity constraints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Als je Affinity/Anti-Affinity regels hebt gezet die een pod dwingen op een specifieke node of verbieden op een bepaalde node. Als de regels te streng zijn of elkaar tegenwerken, dan kan de scheduler geen pod plannen op een node.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Taints op nodes zonder passende tolerations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Als nodes taints hebben, dan stopt dit elke pod om te plannen op die nodes, tenzij de pods tolerations hebben voor de taint. Als de pods de juiste tolerations missen om te draaien op een node, dan blijven ze pending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Volume binding problemen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Als de pod een volume (PVC) nodig heeft en de juiste PV is niet gemaakt of niet verbonden met het PVC, dan blijft de pod pending. Dit gebeurt vaak als er geen storage class is of geen cloud volume provider (bijv. EBS-CSI driver, Azure Files CSI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Admission / LimitRange / ResourceQuota fouten&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Als je een Admission controller policy hebt gezet, dan wordt die toegepast op de pod als die gepland wordt. Maar als de Namespace Resource Quota limieten heeft (CPU, Memory) en de pods gaan boven die limiet, dan blijven ze pending. Ook als LimitRange is gezet voor per-pod en per-container, kan een verkeerde limiet maken dat pods pending blijven.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Debuggen Use Case &lt;a id="debuggen"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In dit use case lopen we door een keten van pod pending probleem dat gaat over Onvoldoende Node resources, Affinity constraints en ongebonden PVC-problemen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;StorageClass YAML&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: demo-ebs
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
parameters:
  type: gp2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;PVC YAML&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: demo-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: demo-ebs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pas de Storage en PVC YAML-bestanden toe, en daarna pas het Deployment YAML-bestand toe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment YAML&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        resources:
          requests:
            cpu: "4000m"        
            memory: "8Gi"       
        volumeMounts:
        - name: data
          mountPath: /usr/share/nginx/html
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: dev
                operator: In
                values:
                - "true"
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: demo-pvc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het toepassen van alle YAML-bestanden zie je dat de pod in de pending state is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf1b4qic2pk09owtoxm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf1b4qic2pk09owtoxm4.png" alt="2" width="541" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ook het PVC is in de pending state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetlraop901mbaw8oq9fp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetlraop901mbaw8oq9fp.png" alt="3" width="800" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nu, om de reden van de pending state te zien, voer het volgende commando uit: &lt;strong&gt;kubectl describe &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F408yik1c7qgjg3bm35bu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F408yik1c7qgjg3bm35bu.png" alt="4" width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In de fout zie je dat de node affinity selector maakt dat de pod pending is, omdat er geen label op de node is die past bij de affinity selector, zoals hieronder getoond:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad5yjva28c0p6ch3esrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad5yjva28c0p6ch3esrz.png" alt="5" width="495" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Om de labels van de node te zien, voer het volgende commando uit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get nodes &amp;lt;node name&amp;gt; --show-labels
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voeg nu het label toe aan een van de nodes met het volgende commando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl label node &amp;lt;node-name&amp;gt; dev=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Als de node een label heeft, pas opnieuw het YAML-bestand toe en controleer de status.&lt;br&gt;
Als de pod nog steeds pending is, zoals hieronder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flerr939ojryby54sxe3f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flerr939ojryby54sxe3f.png" alt="6" width="568" height="64"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voer dan het describe commando uit om de echte oorzaak te vinden.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwr1cbwbgfxbtfml10vf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwr1cbwbgfxbtfml10vf.png" alt="7" width="800" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De fout laat zien dat er niet genoeg CPU en Memory is voor de pod. Dit kan gebeuren door hoge requests van de pod, zoals hieronder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvrk9yv9kf4479kta4o9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvrk9yv9kf4479kta4o9.png" alt="8" width="272" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verlaag de CPU en Memory requests en pas opnieuw het YAML-bestand toe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frutkfieea0zfop1oyjoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frutkfieea0zfop1oyjoz.png" alt="9" width="265" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Als de pod nog steeds pending is, zoals hieronder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkz67jbqkwcjbujo5pg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkz67jbqkwcjbujo5pg0.png" alt="10" width="575" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Als je de oorzaak niet hebt gezien tijdens het uitvoeren van het describe commando, dan kan je ook het get events commando uitvoeren zoals hieronder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; kubectl get events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovelw03t0ptg4cpyqnkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fovelw03t0ptg4cpyqnkl.png" alt="11" width="800" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In de fout hierboven zie je dat er geen provisioneer, is om te helpen met het maken van het volume voor de pod. Voor de provisioneer moet je een add-on toevoegen aan jouw cluster (bij EKS).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyh8ka10bz46hn3dvmdik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyh8ka10bz46hn3dvmdik.png" alt="12" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In de kube-system namespace kan je de EBS CSI-driver pods zien.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy3oekf9lci7ebs9e3nl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy3oekf9lci7ebs9e3nl.png" alt="13" width="671" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Als je de EBS CSI-driver hebt toegevoegd, dan komen de pods omhoog en draaien ze. Dit is omdat de EBS CSI-driver automatisch het volume maakt voor jouw pods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj0qgl6q93nf0j5d2scv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj0qgl6q93nf0j5d2scv.png" alt="14" width="538" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PVC Status&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv05gqvildv52ddbtkdgx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv05gqvildv52ddbtkdgx.png" alt=" " width="800" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusie
&lt;/h2&gt;

&lt;p&gt;Wanneer pods in de pending state blijven, is er een probleem met scheduling. Door de echte oorzaak te begrijpen, of het nu gaat om onvoldoende resources, Affinity constraints, of provisioning van de storage, kan je het probleem precies oplossen in plaats van alleen te raden. Als je een gestructureerde checklist hebt om de root cause te vinden, kan je makkelijk een sterker en efficiënter Kubernetes omgeving bouwen.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Over mij
&lt;/h2&gt;

&lt;p&gt;Ik ben Shubh Dadhich, een Kubernetes expert met interesse in DevOps, Cloud en Automatisering. Ik werk graag aan het maken van moeilijke problemen tot makkelijke, schaalbare oplossingen, en ik deel informatie via blogs en mentorschap.Ik ben open voor consultatie, training en mentorschap in Kubernetes, DevOps en Cloud. Of je net begint of je vaardigheden wilt verbeteren.&lt;br&gt;
🔗 Verbinden met mij op LinkedIn: &lt;a href="https://www.linkedin.com/in/shubhcloud/" rel="noopener noreferrer"&gt;Shubh Dadhich&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dutch</category>
      <category>nederlands</category>
      <category>kubernetes</category>
      <category>devops</category>
    </item>
    <item>
      <title>Troubleshooten van Kubernetes ContainerCreateError en Init Container Fouten</title>
      <dc:creator>Shubh Dadhich</dc:creator>
      <pubDate>Sun, 28 Sep 2025 09:24:53 +0000</pubDate>
      <link>https://forem.com/careerbytecode/troubleshooten-van-kubernetes-containercreateerror-en-init-container-fouten-1247</link>
      <guid>https://forem.com/careerbytecode/troubleshooten-van-kubernetes-containercreateerror-en-init-container-fouten-1247</guid>
      <description>&lt;p&gt;Kubernetes heeft veel complexiteit achter een simpel idee, dat bekend is als een pod, en fouten oplossen die horen bij een pod is één van de moeilijke taken. We gaan twee fouten bespreken: ContainerCreateError en Init Container Fouten.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wat je gaat leren
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Diepe kijk in ContainerCreateError en Init Container Fouten.&lt;/li&gt;
&lt;li&gt;
Begrijpen van de oorzaken.&lt;/li&gt;
&lt;li&gt;
Debugging gebruik case.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Diepe kijk in ContainerCreateError en Init Container Fouten.&lt;a id="deep-dive"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Tijdens de levenscyclus van een pod doet de kubelet bepaalde acties op de target node:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Maak Pod Sandbox.&lt;/li&gt;
&lt;li&gt;Trek de images voor de container.&lt;/li&gt;
&lt;li&gt;Maak de container, init container (als er is, dan app container).&lt;/li&gt;
&lt;li&gt;Start de container en draai de probes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ook al kunnen fouten gebeuren bij elke stap, ContainerCreateError en Init Container Fouten komen meestal bij de derde stap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ContainerCreateError:&lt;/strong&gt; Deze fout laat zien dat de kubelet niet kan maken een container voor een pod op de target node. Deze fout komt in de eerste fase, voor de applicatie start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Init Container Fout:&lt;/strong&gt; De init container draait voor de hoofdapplicatie container. Het is goed voor taken zoals draaien van afhankelijkheden, halen van config bestanden, maken van een database schema, of andere taken die eerst nodig zijn voor de hoofdapplicatie om te starten.&lt;br&gt;
Als de init container faalt, zal de pod een status &lt;strong&gt;Init:0/1&lt;/strong&gt; laten zien, wat zegt dat de init container uitvoering is mislukt; de hoofdapp container zal niet starten tot de fout opgelost is.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Begrijpen van de oorzaken.&lt;a id="oorzaken"&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ContainerCreateError
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Entrypoint/commando problemen:&lt;/strong&gt; Verkeerde entrypoints en commando’s binnen het imago maken fouten. Bijv.: Binary niet gevonden (/app/start.sh: bestand of map bestaat niet).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bestandssysteem/mounting:&lt;/strong&gt; Verkeerde HostPath, mounten van niet bestaande configmap of secret, mount pad al in gebruik. Dit stopt dat de container kan worden gemaakt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Security context beperkingen:&lt;/strong&gt; Verkeerde security context instellen, zoals: Missende Linux mogelijkheden, runAsNonRoot terwijl image user is root (of andersom).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Node problemen:&lt;/strong&gt; De node kan niet genoeg resources hebben (CPU, Geheugen) om een nieuwe container te draaien. Dit kan ook de OOMKilled fout geven tijdens het maken van de container.&lt;/p&gt;
&lt;h3&gt;
  
  
  Init Container Fouten
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Initialisatie taak fout:&lt;/strong&gt; Het script of commando dat is gegeven aan de init container faalde om te draaien of stopte met code nul status.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Afhankelijkheid is niet klaar:&lt;/strong&gt; Als de init container is gemaakt om te wachten op een afhankelijkheid (bijv. database) die nog niet beschikbaar is, of de database service zelf maakt het pending, zoals een verbinding timeout of weigering. Dit maakt dat de init container steeds opnieuw start in een loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Verkeerde configuratie:&lt;/strong&gt; Een verkeerde config file, environment variabele, of een verkeerd commando argument maakt dat de init container faalt.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Debuggen gebruik case &lt;a id="debuggen"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Stel dat je een applicatie hebt uitgerold en het gebruikt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Init container: die een shell script draait om te wachten op een database service.&lt;/li&gt;
&lt;li&gt;Hoofd container: die de hoofdapplicatie image draait.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wanneer je uitrolt, zie je eerst de init container &lt;strong&gt;init:0/1&lt;/strong&gt;, gevolgd door de ContainerCreateError voor de hoofdapplicatie.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DockerFile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Simple base image
FROM alpine:latest

USER fakeuser

CMD ["sleep", "3600"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;YAML File&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  initContainers:
  - name: wait-for-db
    image: busybox:1.36
    command: ['sh', '-c', 'until nc -z db-service 5432; do echo "waiting for db"; sleep 2; done']

  containers:
  - name: myapp
    image: aqualyte/alpine-test:latest
    ports:
    - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het toepassen van het YAML-bestand blijft de init container in de init:0/1 status, dat is omdat er geen draaiende db-service is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5l9eb6jf7p12236pqtzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5l9eb6jf7p12236pqtzs.png" alt="1" width="319" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nu gaan we de db-service maken.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl run db-pod \
  --image=postgres:15 \
  --port=5432 \
  --env="POSTGRES_USER=admin" \
  --env="POSTGRES_PASSWORD=admin123" \
  --env="POSTGRES_DB=mydb"

kubectl expose pod db-pod \
  --name=db-service \
  --port=5432 \
  --target-port=5432
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het maken van de db-service zal de hoofdapplicatie container starten, maar zoals je kan zien, het blijft vast in &lt;strong&gt;CreateContainerError&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrucer8p6csg2oaqvqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafrucer8p6csg2oaqvqf.png" alt="2" width="415" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wanneer je kubectl describe doet, kun je in de events de fout boodschap zien zoals hieronder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vvtlot016961e0zbvb6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vvtlot016961e0zbvb6.png" alt="3" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In de fout staat dat geen users gevonden zijn, wat betekent dat het probeert te draaien als een verkeerde user die niet bestaat. Of in de security context of in het imago zelf is de verkeerde user genoemd.&lt;/p&gt;

&lt;p&gt;In dit gebruik case is er een verkeerde user in het imago. Dus laten we het imago corrigeren.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Simple base image
FROM alpine:latest

CMD ["sleep", "3600"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In de Dockerfile hierboven kun je of de user weghalen of je kunt een geldige user toevoegen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3ci0rv13oqsxzsjh1bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3ci0rv13oqsxzsjh1bb.png" alt="4" width="350" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na het maken van veranderingen in de Dockerfile, push het imago naar de repository en pas het YAML-bestand opnieuw toe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusie
&lt;/h2&gt;

&lt;p&gt;Omgaan met CreateContainerError en init container fouten met de juiste aanpak wordt eenvoudig om op te lossen. Door te begrijpen waar de fout komt, de Events en logs te kijken, en gestructureerde debuggen toe te passen, ga je snel van brand blussen naar zeker problemen oplossen. Bouw sterke init containers, en controleer specs zodat het uren van downtime en frustratie zal sparen. Kort gezegd, deze fouten zijn geen blokkades, maar kansen om de betrouwbaarheid en sterkte van jouw Kubernetes workloads te verbeteren.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Over mij
&lt;/h2&gt;

&lt;p&gt;Ik ben Shubh Dadhich, een Kubernetes expert met interesse in DevOps, Cloud en Automatisering. Ik werk graag aan het maken van moeilijke problemen tot makkelijke, schaalbare oplossingen, en ik deel informatie via blogs en mentorschap.Ik ben open voor consultatie, training en mentorschap in Kubernetes, DevOps en Cloud. Of je net begint of je vaardigheden wilt verbeteren.&lt;/p&gt;

&lt;p&gt;🔗 Verbinden met mij op LinkedIn: &lt;a href="https://www.linkedin.com/in/shubhcloud/" rel="noopener noreferrer"&gt;Shubh Dadhich&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dutch</category>
      <category>nederlands</category>
      <category>kubernetes</category>
      <category>devops</category>
    </item>
    <item>
      <title>Oplossen van ImagePullBackOff en ErrImagePull: Image gerelateerde problemen</title>
      <dc:creator>Shubh Dadhich</dc:creator>
      <pubDate>Sat, 20 Sep 2025 09:10:02 +0000</pubDate>
      <link>https://forem.com/careerbytecode/oplossen-van-imagepullbackoff-en-errimagepull-image-gerelateerde-problemen-j82</link>
      <guid>https://forem.com/careerbytecode/oplossen-van-imagepullbackoff-en-errimagepull-image-gerelateerde-problemen-j82</guid>
      <description>&lt;p&gt;Kubernetes is veel gebruikt als een container orkestratie tool voor het inzetten en beheren van microservice applicaties. Maar zelfs de meest sterke systemen krijgen soms fouten. De meest voorkomende en vervelende fout die Kubernetes gebruikers krijgen is ImagePullBackOff en ErrImagePull fouten. Deze fouten laten duidelijk zien dat je cluster moeite heeft met het halen van de container images uit de bron registry.&lt;/p&gt;

&lt;p&gt;In deze blog gaan we diep kijken naar deze image fouten, we zien hun aard, begrijpen hun oorzaak, en hoe je ze kan vinden en oplossen, met een debugging simulatie om te helpen bij hun oplossing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wat je zult leren
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Een Diepe Duik in ImagePullBackOff en ErrImagePull.&lt;/li&gt;
&lt;li&gt;
Hoe ImagePullBackOff en ErrImagePull te detecteren.&lt;/li&gt;
&lt;li&gt;
De oorzaken ervan begrijpen.&lt;/li&gt;
&lt;li&gt;
Debuggen.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  1. Diepe kijk in ImagePullBackOff en ErrImagePull.&lt;a id="deep-dive"&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;ImagePullBackOff en ErrImagePull laten zien dat de cluster niet kan trekken container images uit de registry. Ze lijken dicht bij elkaar, maar ze laten verschillende uitkomsten van de fout zien:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ErrImagePull:&lt;/strong&gt; Deze fout komt direct wanneer Kubernetes niet kan trekken de container image tijdens de eerste poging of een volgende poging in korte tijd. Er kunnen veel oorzaken zijn die deze fout maken, zoals een typefout in de image naam of tag, een netwerk storing, of een probleem met registry login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ImagePullBackOff:&lt;/strong&gt; Deze status komt na de ErrImagePull fout. Wanneer Kubernetes steeds probeert en niet kan trekken de image uit de registry, gaat het in de BackOff status. Dit betekent dat in plaats van steeds proberen te trekken de image, het maakt een wachttijd die steeds langer wordt na elke poging. Dit geeft jou tijd om de fout op te lossen.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Hoe ImagePullBackOff en ErrImagePull te detecteren &lt;a id="detecteren"&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Het vinden van de ImagePullBackOff en ErrImagePull is heel eenvoudig met basis Kubernetes commando’s; je kan vinden:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Kubectl get pod:&lt;/strong&gt; Met dit commando kan je duidelijk zien de status van de pod, die laat jou de fout zien.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2zlh7l5jr2kjfm38y60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2zlh7l5jr2kjfm38y60.png" alt="1" width="429" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Kubectl describe pod:&lt;/strong&gt; Met het describe commando kan je makkelijk krijgen de details over de fout onder het events deel, zoals hieronder getoond.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw09mwcvwtfk6fixclrrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw09mwcvwtfk6fixclrrv.png" alt="2" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Begrijpen van de oorzaken &lt;a id="oorzaken"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;De oorzaken voor ImagePullBackOff en ErrImagePull zijn verdeeld in 3 hoofddelen:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Verkeerde Image Namen/Tags&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dit is een van de meest gewone en simpele problemen om op te lossen. Er kan een verkeerde image naam of image tag zijn die stopt de cluster om de image te trekken uit de registry. En in sommige gevallen kan het imago niet bestaan of verwijderd zijn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Registry Authenticatie Problemen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In de meeste gevallen zijn container images die horen bij jouw applicatie of een interne service opgeslagen in de private registry. Dus om de image te trekken heb je de juiste login gegevens nodig voor authenticatie. Dit kan gedaan worden met de ImagePullSecrets parameter.&lt;/p&gt;

&lt;p&gt;In veel situaties kunnen er missende secrets zijn die moeten worden gegeven aan de imagePullSecrets parameter. Of je kan verkeerde login gegevens hebben in ImagePullSecrets, die niet de juiste rechten hebben om het image te trekken uit de registry. Of misschien verwijst ImagePullSecrets naar de verkeerde secrets, die niet bestaan in jouw cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Netwerk Verbinding Problemen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Zelfs als je de juiste image naam en logingegevens hebt om de image te trekken. Soms maken problemen met netwerk verbinding ook ImagePullBackOff en ErrImagePull. Deze problemen zijn als volgt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Firewall:&lt;/strong&gt; Als je een firewall hebt, dan moet je kijken of het blokkeert de uitgaande verbindingen naar het image registry IP adres of poort.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DNS resolutie:&lt;/strong&gt; Als de host naam resolutie (bijv. docker.io, gcr.io) niet lukt voor de image registry, dan kan de verbinding niet gemaakt worden met de image registry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Register uitvaltijd/Onbereikbaarheid:&lt;/strong&gt; Als je een zelf-gehoste registry (bijv. Nexus repository) hebt op EC2 instances, dan kan je downtime zien, of soms is het registry domain zelf niet bereikbaar, wat heel zeldzaam is.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Debuggen &lt;a id="debuggen"&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;In deze sectie gaan we zien hoe te vinden en oplossen de ImagePullBackOff en ErrImagePull.&lt;/p&gt;

&lt;p&gt;Voor dit doel gebruiken we een simpel Docker image. Je moet deze image pushen naar een private repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM alpine:latest
LABEL maintainer="team@mycompany.com"
CMD ["sleep", "3600"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;YAML&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Zodra je de image pusht naar de repository, kan je het YAML bestand hieronder draaien. Zorg dat je jouw eigen image naam geeft.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: webserver
spec:
  containers:
  - name: alpine
    image: aqulyte/errimagepull:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het toepassen van het YAML, kijk de status van de pod. Als het een fout laat zien, dan is het tijd om te troubleshooten.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r4h4pr98ue0ae4s7rhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r4h4pr98ue0ae4s7rhh.png" alt="3" width="398" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Draai het describe commando om de details van de fout te krijgen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jso1pzqs23hgo6oxu3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jso1pzqs23hgo6oxu3u.png" alt="4" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zoals getoond in de fout hierboven, kan het niet trekken van het image uit de registry. Omdat we proberen te trekken een image uit een private repository, moeten we login gegevens geven via de ImagePullSecrets parameter.&lt;/p&gt;

&lt;p&gt;Draai het commando hieronder om de secrets te maken.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create secret docker-registry myregistry-secret \
  --docker-server=docker.io \
  --docker-username=YOUR_DOCKER_USERNAME \
  --docker-password=YOUR_DOCKER_PASSWORD \
  --docker-email=YOUR_DOCKER_EMAIL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zodra de secrets zijn gemaakt, bewerk het YAML bestand zoals hieronder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: webserver
spec:
  containers:
  - name: alpine
    image: aqulyte/errimagepull:v1
  imagePullSecrets:
  - name: myregistry-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het toepassen van het YAML, als je de ImagePullBackOff fout niet krijgt, dan is het goed.&lt;/p&gt;

&lt;p&gt;MAAR…&lt;/p&gt;

&lt;p&gt;Als de fout blijft.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1oe1u9xjrgigc35co1s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1oe1u9xjrgigc35co1s8.png" alt="5" width="401" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dan moet je meer troubleshooten. Voor mij was het een verkeerde project naam en image tag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh8475cbsu5u31hiw1a4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh8475cbsu5u31hiw1a4.png" alt="6" width="268" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na correctie, hieronder is het juiste YAML, en zet opnieuw in het YAML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Pod
metadata:
  name: webserver
spec:
  containers:
  - name: alpine
    image: aqualyte/errimagepull:latest
  imagePullSecrets:
  - name: myregistry-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nu is de fout opgelost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99rtegrp5jqgfeq43zmy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99rtegrp5jqgfeq43zmy.png" alt="7" width="342" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jouw Pod zal draaien zonder problemen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusie
&lt;/h2&gt;

&lt;p&gt;ImagePullBackOff en ErrImagePull zijn gewone fouten en zijn makkelijk op te lossen door hun oorzaken te begrijpen, die kunnen gaan van typefouten en login problemen tot netwerk of registry problemen. Door deze fouten helemaal te vermijden, helpen goede praktijken zoals het gebruiken van juiste duidelijke tags, het instellen van ImagePullSecrets, en het volgen van netwerk en registry verbinding om meer betrouwbare en vloeiende deployments te krijgen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Over mij
&lt;/h2&gt;

&lt;p&gt;Ik ben Shubh Dadhich, een Kubernetes expert met interesse in DevOps, Cloud en Automatisering. Ik werk graag aan het maken van moeilijke problemen tot makkelijke, schaalbare oplossingen, en ik deel informatie via blogs en mentorschap.Ik ben open voor consultatie, training en mentorschap in Kubernetes, DevOps en Cloud. Of je net begint of je vaardigheden wilt verbeteren.&lt;/p&gt;

&lt;p&gt;🔗 Verbinden met mij op LinkedIn: &lt;a href="https://www.linkedin.com/in/shubhcloud/" rel="noopener noreferrer"&gt;Shubh Dadhich&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dutch</category>
      <category>nederlands</category>
      <category>kubernetes</category>
      <category>devops</category>
    </item>
    <item>
      <title>CrashLoopBackOff: Warrom Je Pods Blijven Crashen?</title>
      <dc:creator>Shubh Dadhich</dc:creator>
      <pubDate>Sat, 06 Sep 2025 08:20:16 +0000</pubDate>
      <link>https://forem.com/careerbytecode/crashloopbackoff-warrom-je-pods-blijven-crashen-3imn</link>
      <guid>https://forem.com/careerbytecode/crashloopbackoff-warrom-je-pods-blijven-crashen-3imn</guid>
      <description>&lt;p&gt;Heb je ooit naar de pods van je Kubernetes-cluster gekeken en dat vervelende bericht CrashLoopBackOff naast je pods gezien? Nou, het is een veelvoorkomende fout die vaak gebeurt tijdens het werken met een containerapplicatie, en het kan eng lijken, maar het is de manier van Kubernetes om te zeggen dat er iets mis is met je applicatie of de configuratie.&lt;/p&gt;

&lt;p&gt;In deze blog gaan we de fouten van CrashLoopBackOff bekijken, de veelvoorkomende oorzaken onderzoeken, en je de kennis geven om deze crashes te begrijpen en op te lossen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wat je zult leren
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Een Diepe Duik in CrashLoopBackOff.&lt;/li&gt;
&lt;li&gt;Hoe CrashLoopBackOff te detecteren.&lt;/li&gt;
&lt;li&gt;De oorzaken ervan begrijpen.&lt;/li&gt;
&lt;li&gt;Debuggen&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Een Diepe Duik in CrashLoopBackOff
&lt;/h2&gt;

&lt;p&gt;CrashLoopBackOff betekent dat je pod is gestart, gecrasht, opnieuw gestart, en weer gecrasht. En dit blijft in een continue lus. Kubernetes wil niet dat de mislukte container continu opnieuw wordt gestart, omdat dat onnodige resources verbruikt.  Om dit te voorkomen, implementeert Kubernetes een “BackOff”-vertraging tussen elke herstart poging. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wat is BackOff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BackOff is een algoritme in het Kubelet-onderdeel dat de herstart lus voorkomt. Wanneer een container in een pod stopt met een fout en de &lt;strong&gt;restartPolicy&lt;/strong&gt; is ingesteld op always (standaard) of &lt;strong&gt;OnFailure&lt;/strong&gt;, probeert de kubelet de pod opnieuw te starten. Maar als de container steeds direct crasht, gebruikt de kubelet een BackOff-algoritme, dat een toenemende vertraging toevoegt (&lt;strong&gt;10s, 20s, 30s...&lt;/strong&gt;) na elke herstart poging. Dit geeft je een kort moment om het probleem te vinden en op te lossen. Deze vertraging gaat door tot 300 seconden (5 minuten). Als het probleem niet is opgelost, start de kubelet de pod elke 5 minuten opnieuw.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhp6li3xrrya699h2os6f.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhp6li3xrrya699h2os6f.gif" alt="CrashLoopBackOff" width="676" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Hoe te detecteren CrashLoopBackOff
&lt;/h2&gt;

&lt;p&gt;Er zijn gewone en eenvoudige methodes om de CrashLoopBackOff-fout te detecteren. Die methodes zijn als volgt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kubectl get pods:&lt;/strong&gt; Dit is je standaardcommando om de status van de pod te controleren&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53x1jhy0wukgh74fxl41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53x1jhy0wukgh74fxl41.png" alt="get pod" width="416" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kubectl describe pod :&lt;/strong&gt; Dit commando geeft alle details van de pods, inclusief hun events. In de event-sectie kun je de fout van CrashLoopBackOff zien.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4hfq4vmm4ls1la026w5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4hfq4vmm4ls1la026w5.png" alt="describe" width="512" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kubectl get events:&lt;/strong&gt; Het laat je alle events van de pods zien die draaien. Je kunt dit commando ook gebruiken om de hoofdoorzaak van de fout te vinden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m8hbo87533xzijrp979.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m8hbo87533xzijrp979.png" alt="events" width="512" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. De oorzaken ervan begrijpen
&lt;/h2&gt;

&lt;p&gt;De oorzaken van CrashLoopBackOff zijn verschillend. Maar ze vallen onder enkele belangrijke categorieën zoals hieronder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a. Problemen op applicatieniveau.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Als je applicatiecode of configuratie fout is, kan het ervoor zorgen dat de container kort na het starten crasht. Enkele veelvoorkomende applicatieproblemen zijn als volgt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runtime-fouten, zoals uitzonderingen, die niet goed worden afgehandeld in je applicatiecode, laten de container crashen.&lt;/li&gt;
&lt;li&gt;Ontbrekende afhankelijkheden, zoals startbestanden, omgevingsvariabelen of bibliotheken die niet aanwezig zijn in de container.&lt;/li&gt;
&lt;li&gt;Fouten zoals verkeerde database verbinding strings, API-sleutels of andere applicatiespecifieke configuraties die voorkomen dat de container start.&lt;/li&gt;
&lt;li&gt;Poortconflict, waar de applicatie probeert te verbinden met een poort die al in gebruik is door een andere container in de pod. Het is een minder vaak voorkomend probleem, maar het is wel een van de redenen voor CrashLoopBackOff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;b. Verkeerde configuratie in manifest.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Soms zorgt een fout in de manifest bestanden voor crashes van de pod zoals: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verkeerde command, args, of EntryPoint die zijn opgegeven in de Dockerfile of in het Kubernetes deployment manifest zorgen voor een fout bij het starten van de container.&lt;/li&gt;
&lt;li&gt;Verkeerde volume mount configuraties of mount paths in de container zijn fout, en de applicatie kan de nodige bestanden niet vinden.&lt;/li&gt;
&lt;li&gt;Typefouten bij environment variables, verkeerde waarden, of ontbrekende verplichte variabelen zorgen ervoor dat de container niet kan starten.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;c. Fouten met probes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Probes worden gebruikt om de gezondheid en gereedheid van de container in de pod te bepalen. Als de probes falen, kan dat leiden tot een ongezonde herstart van de container.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Liveness Probe: Deze probe wordt gebruikt om te bepalen of de container leeft en goed draait. Voortdurend falen kan leiden tot een herstart van de container, wat CrashLoopBackOff kan veroorzaken.&lt;br&gt;
Enkele veelvoorkomende redenen zijn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect eindpunt:  Als de probe is geconfigureerd om een eindpunt     te controleren dat niet bestaat of geen antwoord geeft. Dat zal leiden tot meerdere herstarts en een crash van de container.&lt;/li&gt;
&lt;li&gt;Slow Response: Als de applicatie langzaam reageert op de probe, die langer duurt dan de timeout Seconds van de probe. Dat veroorzaakt meerdere herstarts van de container.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Debuggen
&lt;/h2&gt;

&lt;p&gt;In deze sectie, we zullen leren hoe te identificeren problemen oplossen de CrashLoopBackOff-fout. Of het nu gaat om het applicatie niveau, een verkeerde configuratie in het manifest, of probe fouten.&lt;/p&gt;

&lt;p&gt;Voor dit doel gebruiken wij een aangepaste image en applicatie logica:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. DockerFile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM busybox:latest

ENV APP_MODE=staging

RUN mkdir -p /home/app
WORKDIR /home/app

COPY startup.sh .
RUN chmod +x startup.sh

ENTRYPOINT ["./startup.sh"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Application Code(codelogica kan variëren)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/sh
set -e
# Step 1: Check if config file exists
[ -f /config/app.conf ] || (echo "[Stage 1] Config file missing. Exiting..." &amp;amp;&amp;amp; false)


# Step 2: Check for valid APP_MODE
[ "$APP_MODE" = "production" ] || (echo "[Stage 2] Invalid APP_MODE=$APP_MODE. Exiting..." &amp;amp;&amp;amp; false)


# Step 3: App started
echo "[Stage 3] App started successfully."
while true; do
  echo "App running..."
  sleep 10
done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In de bovenstaande Dockerfile en shell-script is er een verschil tussen de Dockerfile env variabele en de code. In het script, bij stap 1, is er een controle of het bestand app.conf bestaat in de container. En bij stap 2, is er een controle voor een geldige APP_MODE als productie.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. K8s Manifest&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: crashloop-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: crashloop-demo
  template:
    metadata:
      labels:
        app: crashloop-demo
    spec:
      containers:
      - name: demo
        image: aqualyte/crashloop_busybox
        env:
        - name: APP_MODE
          value: "staging"
        livenessProbe:
          exec:
            command:
            - cat
            - /config/app.conf
          initialDelaySeconds: 0
          periodSeconds: 1
          timeoutSeconds: 1
          failureThreshold: 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In het bovenstaande manifest gebruiken wij de aangepaste image en geven env als staging. En een liveness probe die het cat commando uitvoert.&lt;br&gt;
Na het toepassen van het manifest-bestand zal het een CrashLoopBackOff fout geven.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkd06e74h9axavwocv4uk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkd06e74h9axavwocv4uk.png" alt="get pods" width="800" height="66"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Om de oorzaak van de fout te vinden, zoals eerder genoemd, gebruik de kubectl log of kubectl describe commando.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkoczae19ubyet2z3x39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkoczae19ubyet2z3x39.png" alt="config" width="751" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zoals de logs laten zien, zoekt het naar app.conf in de container, dat niet aanwezig is, en het shell-script heeft ook een controle voor het config bestand. Het is een van de verkeerde configuraties in het manifest waar je vergeet het config bestand te geven. Om dit op te lossen, moeten wij het config bestand koppelen aan de pod.&lt;/p&gt;

&lt;p&gt;Beste praktijk is om de config map als een volume te koppelen aan de pod.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ConfigMap&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  app.conf: |
    env=production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na het toepassen van de config map, voeg het volume en de volume mount toe in het k8s manifest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Volume and Volume mounts&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volumes:
- name: config-volume
  configMap:
   name: app-config
  volumeMounts:
  - name: config-volume
    mountPath: /config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eenmaal toegevoegd, verwijder de deployment en pas opnieuw het manifest toe. Na opnieuw toepassen, als het probleem blijft, zoals hieronder getoond:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jg3lk9ffnpfpjw3wf45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jg3lk9ffnpfpjw3wf45.png" alt="pods" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gebruik dan het kubectl describe commando, waar je de exit code van de container kan lezen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaty9ok0a6ro4rs3jled.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaty9ok0a6ro4rs3jled.png" alt=" " width="800" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exit code: 1 betekent dat de container is gestopt door een applicatiefout of door een verkeerde referentie in de image specificatie.&lt;/p&gt;

&lt;p&gt;Controleer de logs van de pod om de fout te debuggen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuaz0s7nlal6b9pm3od2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuaz0s7nlal6b9pm3od2k.png" alt="staging" width="681" height="58"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In de logs, het laat de ongeldige APP_MODE zien. Dit is omdat in de code logica er een check is voor APP_MODE als productie, maar wij geven de verkeerde waarde. Dit zijn de scenario’s wanneer er een conflict is tussen code logica en een misconfiguratie in het manifest.&lt;/p&gt;

&lt;p&gt;Hier wij hebben twee manieren om te debuggen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Maak veranderingen in de code logica en Dockerfile, en zet opnieuw in.&lt;/li&gt;
&lt;li&gt;Of geef de vereiste environment waarde om het probleem op te lossen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Voor nu, laten wij met de tweede optie gaan en de environment waarde in het manifest veranderen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;K8s manifest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APP_MODE = Production&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: crashloop-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: crashloop-demo
  template:
    metadata:
      labels:
        app: crashloop-demo
    spec:
      containers:
      - name: demo
        image: aqualyte/crashloop_busybox
        env:
        - name: APP_MODE
          value: "production"
        volumeMounts:
        - name: config-volume
          mountPath: /config
        livenessProbe:
          exec:
            command:
            - cat
            - /config/app.conf
          initialDelaySeconds: 0
          periodSeconds: 1
          timeoutSeconds: 1
          failureThreshold: 2
      volumes:
          - name: config-volume
            configMap:
              name: app-config

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zodra veranderingen klaar zijn in het manifest, verwijder de vorige deployment en pas opnieuw toe.&lt;/p&gt;

&lt;p&gt;Deployment zal actief en werkend zijn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr90yl4w40i9zek428u2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr90yl4w40i9zek428u2t.png" alt=" " width="756" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusie
&lt;/h2&gt;

&lt;p&gt;CrashLoopBackOff is meer dan alleen een fout; het is een signaal dat iets niet goed is met jouw applicatie of met de configuratie. Door de logs, exit code, probe instellingen en gebruik van resources te bekijken, jij kan snel de oorzaak vinden en oplossen. Elke keer jij zal de mogelijkheden kleiner maken tot jij de echte oorzaak hebt gevonden.&lt;/p&gt;

&lt;h2&gt;
  
  
  Over mij
&lt;/h2&gt;

&lt;p&gt;Ik ben &lt;strong&gt;Shubh Dadhich&lt;/strong&gt;, een Kubernetes expert met interesse in DevOps, Cloud en Automatisering. Ik werk graag aan het maken van moeilijke problemen tot makkelijke, schaalbare oplossingen, en ik deel informatie via blogs en mentorschap.&lt;/p&gt;

&lt;p&gt;Ik ben open voor consultatie, training en mentorschap in Kubernetes, DevOps en Cloud. Of je net begint of je vaardigheden wilt verbeteren.&lt;/p&gt;

&lt;p&gt;🔗 Verbinden met mij op LinkedIn: &lt;a href="https://www.linkedin.com/in/shubhcloud/" rel="noopener noreferrer"&gt;Shubh Dadhich&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dutch</category>
      <category>nederlands</category>
      <category>kubernetes</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
