エラー原因と対応方法|Kubernetes|CreateContainerConfigError|Cronjob を実行すると、pod 作成時に CreateContainerConfigError が発生


Cronjob を実行すると、CreateContainerConfigError が発生した。

ここでは、エラー原因と対応方法について、記載する。


エラー原因と対応方法


事象

Crontab を作成して、作成した Cronjob を実行すると、Job が作成され、その後、pod 作成時に、CreateContainerConfigError が発生した。


1. マニフェストファイルから Cronjob「sample-cronjob」を作成する。


・コマンド

Kubectl apply -f sample-cronjob.yaml


・マニフェストファイル「sample-cronjob.yaml」

apiVersion: batch/v1
kind: CronJob
metadata:
  name: sample-cronjob
spec:
  ...(省略)...
  jobTemplate:
    spec:
      template:
        ...(省略)...
        spec:
          containers:
          - name: sample-container
            env:
              - name: TEST_NAME
                valueFrom:
                  configMapKeyRef:
                    name: sample-configmap
                    key: TEST_KEY
...(省略)..


2. Cronjob「sample-cronjob」が作成されたことを確認する。


・コマンド

kubectl get cronjob


3. Cronjob「sample-cronjob」を実行する。


・コマンド

kubectl create job sample-job --from=cronjob/sample-cronjob

※ここで、sample-job は job名、sample-cronjob は cronjob名を指定する。


4. job「sample-job」が作成されたことを確認する。


・コマンド

kubectl get job


5. pob「sample-job-xxx」を確認すると、「STATUS」が「CreateContainerConfigError」になっており、pod 作成時に、「CreateContainerConfigError」 が発生していることが確認できた。


・コマンド

kubectl get pod


・作成された pod

NAME              READY   STATUS                       RESTARTS   AGE
sample-job-xxxx   0/1     CreateContainerConfigError   0          21s


原因

pod の状態を kubectl describe pod コマンドを実行して確認すると、「Events」に、エラーメッセージ「Error: configmap "sample-configmap" not found」が表示されていた。


これは、Cronjob のマニフェストファイル「sample-cronjob.yaml」で参照している「sample-configmap」という名前の ConfigMap を作成しておらず存在していなかったため、エラーが発生していた。


・コマンド

kubectl describe pod sample-job-xxxx

※ここで、sample-job-xxxx は pod名を指定する。


・pod の状態

Events:
  Type     Reason     Age               From      Message
  ----     ------     ----              ----      -------
  Warning  Failed     7s (x3 over 18s)  kubelet   Error: configmap "sample-configmap" not found


対応方法

作成していたマニフェストファイルから ConfigMap「sample-configmap」を作成していなかったため、kubectl apply コマンドを実行して作成した。


・コマンド

kubectl apply -f sample-configmap.yaml


・マニフェストファイル「sample-configmap.yaml」

apiVersion: v1
kind: ConfigMap
metadata:
  name: sample-configmap
...(省略)..








スポンサーリンク

0 件のコメント :

コメントを投稿