作成を実行した後、Kubernetesクラスターのポッドが「ContainerCreating」でスタックします。スタックしている理由を診断するために、この操作のログをどのように確認しますか? kubectl logs
はコンテナが非保留状態である必要があるため、機能していないようです。
kubectl describe pods
は、画像のプル、コンテナの開始など、ポッドに関連するすべてのイベントをリストします。それは助けになるかもしれません。
kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp'
イベントでより多くの情報を提供できます。
私の場合、ポッドに関連するイベントがありました:
default 13s Warning FailedMount Pod Unable to mount volumes for pod "restore-db-123-1-5f24s_default(9b7df264-2976-11ea-bb8f-42010a9a002c)": timeout expired waiting for volumes to attach or mount for pod "default"/"restore-db-123-1-5f24s". list of unmounted volumes=[nfsv]. list of unattached volumes=[nfsv default-token-hxrng]
私の場合、ドッカーのインターネットへのアクセスがブロックされました。プロキシを使用して解決されました( sandylssのコメントを使用 ):
minikube stop
_minikube delete
_export http_proxy=http://user:pass@ip:port
_export https_proxy=http://user:pass@ip:port
_export no_proxy=192.168.99.0/24
__minikube start --logtostderr --v=0 --bootstrapper=localkube --vm-driver hyperv
--hyperv-virtual-switch "Primary Virtual Switch" --docker-env HTTP_PROXY=$http_proxy \
--docker-env HTTPS_PROXY=$https_proxy --docker-env NO_PROXY=$no_proxy
_
export no_proxy=$no_proxy,$(minikube ip)
export NO_PROXY=$no_proxy,$(minikube ip)
次に、Dockerがインターネットにアクセスできるかどうかを確認するには、次のコマンドを実行します。
_$ docker pull tutum/hello-world
_
クラスター内(_minikube ssh
_を使用してクラスターに接続);ダウンロードを開始する場合は、プロセスを停止します。
2つ目の問題は、インターネット接続が遅いことでした。必要なDockerイメージは100MB程度であるため、DockerコンテナーとKubernetesポッドの両方が30分間_\pause
_およびContainerCreating
状態のままでした。
Dockerがイメージをダウンロードしているかどうかを確認するには、次のコマンドを実行します。
_$ ls -l /var/lib/docker/tmp
_
クラスター内。ダウンロード中の一時的なイメージファイルを表示します。それ以外の場合は空です。
Minikubeで開発し、VPNを使用している場合、dockerは fiddler を介してVPNを使用できます。つまり、Dockerはフィドラーのip:portに接続され、フィドラーはVPNに接続されます。それ以外の場合、VPNはホストとminikube VMの間で共有されません。
私がこれにぶつかったのは、リソース宣言が誤って非常に小さいためです。
リソース:制限:cpu:1000mメモリ:1024Mリクエスト:cpu:1000mメモリ:1024M
対
リソース:制限:cpu:1000mメモリ:1024mリクエスト:cpu:1000mメモリ:1024m
そのmを大文字にすると、リソースの使用に非常に大きな違いが生じます。コンテナに十分なメモリを割り当てていなかったため、ContainerCreatingで立ち往生していました。