1. ホーム
  2. クーベルネッツ

kubernetesでContainerCreating状態の原因究明と解決方法

2022-02-28 17:16:14

最近、kubernetesの勉強を始めたばかりなのですが、コンテナを動かすと、ずっとContainerCreating状態になっていることがわかりました。

コンテナの実行コマンドです。

[root@master-149 ~]# kubectl run my-alpine --image=alpine --replicas=2 ping www.baidu.com

ポッドの状態を確認する

[root@master-149 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-alpine-2150523991-knzcx 0/1 ContainerCreating 0 6m
my-alpine-2150523991-lmvv5 0/1 ContainerCreating 0 6m

常にContainerCreatingの状態、原因究明中
以下のコマンドを実行します。

[root@master-149 ~]# kubectl describe pod my-alpine
Name: my-alpine-2150523991-knzcx
Namespace: default
Node: node-150/192.168.10.150
Start Time: Sat, 19 Nov 2016 18:20:52 +0800
Labels: pod-template-hash=2150523991,run=my-alpine
Status: Pending
IP:		
Controllers: ReplicaSet/my-alpine-2150523991
Containers:
  my-alpine:
    Container ID:	
    Image: alpine
    Image ID:		
    Port:		
    Args:
      ping
      www.baidu.com
    QoS Tier:
      cpu: BestEffort
      memory: BestEffort
    State: Waiting
      Reason: ContainerCreating
    Ready: False
    Restart Count: 0
    Environment Variables:
Conditions:
  Type Status
  Ready False 
No volumes.
Events:
  FirstSeen LastSeen Count From SubobjectPath Type Reason Message
  --------- -------- ----- ---- ------------- -------- ------ -------
  7m 7m 1 {default-scheduler } Normal Scheduled Successfully assigned my-alpine-2150523991-knzcx to node-150
  6m 6m 1 {kube-let node-150} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause:2.0, this may be because there are no credentials on this request. details : (unable to ping registry endpoint https://gcr.io/v0/\nv2 ping attempt failed with error: Get https://gcr.io/v2/: dial tcp 64.233.189.82:443: getsockopt: connection refused\n v1 ping attempt failed with error: Get https://gcr.io/v1/_ping: dial tcp 64.233.189.82:443: getsockopt: connection refused)"

  4m 47s 3 {kubelet node-150} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause:2.0, this may be because there are no credentials on this request. details : (unable to ping registry endpoint https://gcr.io/v0/\nv2 ping attempt failed with error: Get https://gcr.io/v2/: dial tcp 74.125.204.82:443: getsockopt: connection refused\n v1 ping attempt failed with error: Get https://gcr.io/v1/_ping: dial tcp 74.125.204.82:443: getsockopt: connection refused)"

  4m 8s 6 {kubelet node-150} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/google_containers/pause:2.0\""


Name: my-alpine-2150523991-lmvv5
Namespace: default
Node: node-150/192.168.10.150
Start Time: Sat, 19 Nov 2016 18:20:52 +0800
Labels: pod-template-hash=2150523991,run=my-alpine
Status: Pending
IP:		
Controllers: ReplicaSet/my-alpine-2150523991
Containers:
  my-alpine:
    Container ID:	
    Image: alpine
    Image ID:		
    Port:		
    Args:
      ping
      www.baidu.com
    QoS Tier:
      cpu: BestEffort
      memory: BestEffort
    State: Waiting
      Reason: ContainerCreating
    Ready: False
    Restart Count: 0
    Environment Variables:
Conditions:
  Type Status
  Ready False 
No volumes.
Events:
  FirstSeen LastSeen Count From SubobjectPath Type Reason Message
  --------- -------- ----- ---- ------------- -------- ------ -------
  7m 7m 1 {default-scheduler } Normal Scheduled Successfully assigned my-alpine-2150523991-lmvv5 to node-150
  5m 1m 3 {kube-let node-150} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause:2.0, this may be because there are no credentials on this request. details : (unable to ping registry endpoint https://gcr.io/v0/\nv2 ping attempt failed with error: Get https://gcr.io/v2/: dial tcp 74.125.204.82:443: getsockopt: connection refused\n v1 ping attempt failed with error: Get https://gcr.io/v1/_ping: dial tcp 74.125.204.82:443: getsockopt: connection refused)"

  3m 1m 4 {kubelet node-150} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"gcr.io/go

のところです。

Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/ google_containers/pause:2.0, this may be because there are no credentials on this request. details: (unable to ping registry endpoint https://gcr.io /v0/\nv2 ping attempt failed with error: Get https://gcr.io/v2/: dial tcp 74.125.204.82:443: getsockopt: connection refused\n v1 ping attempt failed with error: Get https://gcr.io/v1/_ping: dial tcp 74.125.204.82:443: getsockopt: connection refused)

というのは簡単にわかる。 は、gcr.io にアクセスすることができません。
次のような解決策があります。

  1. 壁を越える
  2. hosts ファイルを修正する(ここでは "61.91.161.217" を使用)。   gcr.io"、ただし動作しない場合があります)
  3. コンテナ "pause:2.0" を別のソースからダウンロードし、".Pause:2.0" としてタグ付けします。 gcr.io/google_containers/pause:2.0"