Kubernetes 停留在 ContainerCreating 上

Kubernetes 停留在 ContainerCreating 上

我的 Kubernetes 叢集中的一個 Pod 在運行建立後卡在「ContainerCreating」上。如何查看此操作的日誌以診斷其卡住的原因?kubectl logs似乎不起作用,因為容器需要處於非掛起狀態。

答案1

kubectl describe pods將列出一些(可能是大多數但不是全部)與 pod 相關的事件,包括拉取鏡像、啟動容器。

答案2

活動中可以提供更多資訊。

kubectl get events --all-namespaces  --sort-by='.metadata.creationTimestamp'

但請注意,由於此錯誤,排序事件可能無法正常運作:https://github.com/kubernetes/kubernetes/issues/29838


或者:

從 Kubernetes 1.18 開始,所有新物件都有用於伺服器端應用的元數據,這為我們提供了一種對事件進行排序的新方法:

kubectl get events --sort-by=".metadata.managedFields[0].time"

從:https://github.com/kubernetes/kubernetes/issues/29838#issuecomment-789660546


就我而言,我發生了一個與 Pod 相關的事件:

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]

答案3

就我而言,docker 對互聯網的存取被阻止。使用代理解決了這個問題(使用sandylss的評論):

  1. minikube stop
  2. minikube delete
  3. export http_proxy=http://user:pass@ip:port
  4. export https_proxy=http://user:pass@ip:port
  5. export no_proxy=192.168.99.0/24
  6. 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
    
  7. export no_proxy=$no_proxy,$(minikube ip)
  8. export NO_PROXY=$no_proxy,$(minikube ip)

然後,要檢查 docker 是否可以存取互聯網,請執行:

$ docker pull tutum/hello-world

在集群中(使用 連接到集群minikube ssh);如果開始下載,請停止該進程。

我的第二個問題是網路連線速度慢。由於所需的 docker 映像約為 100MB,因此 docker 容器和 Kubernetes Pod 都保持\pauseContainerCreating狀態 30 分鐘。

若要檢查 docker 是否正在下載映像,請執行:

$ ls -l /var/lib/docker/tmp

在叢集中,顯示正在下載的臨時映像文件,否則為空。

如果您在 minikube 中進行開發並使用 VPN,docker 可以透過以下方式使用您的 VPN提琴手。即docker會連接fiddler的ip:port,fiddler連接VPN。否則,VPN 不會在您的主機和 minikube VM 之間共用。

答案4

我第一次遇到這個問題是因為我的資源聲明意外地非常小。

資源:限制:cpu:1000m 記憶體:1024M 請求:cpu:1000m 記憶體:1024M

資源:限制:cpu:1000m 記憶體:1024m 請求:cpu:1000m 記憶體:1024m

利用 m 可以使資源利用產生很大的差異。我被困在 ContainerCreating 上,因為我沒有為我的容器提供足夠的記憶體。

相關內容