簡體   English   中英

kubernetes pods卡在容器創建

[英]kubernetes pods stuck at containercreating

我有一個覆盆子pi集群(一個主,3個節點)

我的基本形象是:raspbian stretch lite

我已經建立了一個基本的kubernetes設置,其中一個主人可以看到他所有的節點(kubectl獲取節點),他們都在運行。 我使用weave網絡插件進行網絡通信

當一切都設置好后,我試圖在我的集群上運行一個nginx pod(首先是一些副本,但現在只有一個pod),然后kubectl運行my-nginx --image = nginx

但不知何故,pod陷入“容器創建”狀態,當我運行docker圖像時,我無法看到nginx圖像被拉動。 並且通常nginx圖像不是那么大,所以它現在必須被拉(15分鍾)。 kubectl描述pod提供了pod沙箱無法創建的錯誤,kubernetes將重新創建它。

我搜索了關於這個問題的一切,並嘗試了stackoverflow上的解決方案(重新啟動重啟群集,搜索描述pods,新網絡插件嘗試使用法蘭絨)但我無法看到實際問題是什么。 我在虛擬框中做了完全相同的事情(只是ubuntu而不是ARM)並且一切正常。

首先,我認為這是一個權限問題,因為我作為普通用戶運行一切,但在vm我做了同樣的事情,沒有任何改變。 然后我檢查kubectl獲取pods --all-namespaces來驗證weaver網絡和kube-dns的pod正在運行,並且那里也沒有任何錯誤。

這是Raspberry pi中的防火牆問題嗎? 編織網絡插件是不兼容的(甚至kubernetes網站說它是)與arm設備? 我猜測有一個api網絡問題,這就是為什么我不能讓我的pod在節點上運行

[編輯]日志文件

kubectl描述podName

>     
>     Name:           my-nginx-9d5677d94-g44l6 Namespace:      default Node: kubenode1/10.1.88.22 Start Time:     Tue, 06 Mar 2018 08:24:13
> +0000 Labels:         pod-template-hash=581233850
>                     run=my-nginx Annotations:    <none> Status:         Pending IP: Controlled By:  ReplicaSet/my-nginx-9d5677d94 Containers: 
> my-nginx:
>         Container ID:
>         Image:          nginx
>         Image ID:
>         Port:           80/TCP
>         State:          Waiting
>           Reason:       ContainerCreating
>         Ready:          False
>         Restart Count:  0
>         Environment:    <none>
>         Mounts:
>           /var/run/secrets/kubernetes.io/serviceaccount from default-token-phdv5 (ro) Conditions:   Type           Status  
> Initialized    True   Ready          False   PodScheduled   True
> Volumes:   default-token-phdv5:
>         Type:        Secret (a volume populated by a Secret)
>         SecretName:  default-token-phdv5
>         Optional:    false QoS Class:       BestEffort Node-Selectors:  <none> Tolerations:     node.kubernetes.io/not-ready:NoExecute for
> 300s
>                      node.kubernetes.io/unreachable:NoExecute for 300s Events:   Type     Reason                  Age   From               
> Message   ----     ------                  ----  ----               
>     -------   Normal   Scheduled               5m    default-scheduler   Successfully assigned my-nginx-9d5677d94-g44l6 to kubenode1   Normal  
> SuccessfulMountVolume   5m    kubelet, kubenode1  MountVolume.SetUp
> succeeded for volume "default-token-phdv5"   Warning 
> FailedCreatePodSandBox  1m    kubelet, kubenode1  Failed create pod
> sandbox.   Normal   SandboxChanged          1m    kubelet, kubenode1 
> Pod sandbox changed, it will be killed and re-created.

kubectl記錄podName

Error from server (BadRequest): container "my-nginx" in pod "my-nginx-9d5677d94-g44l6" is waiting to start: ContainerCreating

journalctl -u kubelet給出了這個錯誤

Mar 12 13:42:45 kubeMaster kubelet[16379]: W0312 13:42:45.824314   16379 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
Mar 12 13:42:45 kubeMaster kubelet[16379]: E0312 13:42:45.824816   16379 kubelet.go:2104] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

問題似乎與我的網絡插件有關。 在我的/etc/systemd/system/kubelet.service.d/10.kubeadm.conf中。 網絡插件的標志是否存在? environment = kubelet_network_args --cni-bin-dir = / etc / cni / net.d --network-plugin = cni

謝謝大家回答我的問題。 我現在解決了我的問題。 對於任何未來提出問題的人來說,解決方案如下。

我克隆了我的覆盆子pi圖像,因為我需要一個basicConfig.img,當我需要在我的集群中添加一個新節點時才會出現故障。

編織網絡(我使用的插件)感到困惑,因為在每個節點和主服務器上,操作系統具有相同的機器ID。 當我刪除機器ID並創建一個新的(並重新啟動節點)時,我的錯誤得到修復。 執行此操作的命令是

sudo rm /etc/machine-id
sudo rm /var/lib/dbus/machine-id
sudo dbus-uuidgen --ensure=/etc/machine-id

我的耐心再次受到考驗。 因為我的kubernetes設置正常,我的覆盆子pi os是正常的。 我是在kubernetes社區的某個人的幫助下創立的。 這再次向我們展示了我們的IT社區是多么重要和偉大。 對未來的人們來說這個問題。 我希望這個解決方案可以解決你的錯誤,並減少你在一個愚蠢的小事后搜索的時間。

您可以通過查找嘗試拉取圖像的節點來查看它是否與網絡相關:

kubectl describe pod <name> -n <namespace>

SSH到節點,並在其上運行docker pull nginx 如果手動拉動圖像時出現問題,則可能與網絡有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM