首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点重启后,由于编织IP不足,pods卡在containerCreating状态

节点重启后,由于编织IP不足,pods卡在containerCreating状态
EN

Stack Overflow用户
提问于 2019-07-31 19:37:09
回答 3查看 1.6K关注 0票数 0

我在1.11上部署了3个节点的Kubernetes集群,并运行版本2.5.1的kubeadm和weave(CNI)。我提供了128个IP的编织CIDR IP范围。在两次重启节点后,一些pods卡在containerCreating状态。

运行kubectl describe pod <pod_name>后,您将看到以下错误:

代码语言:javascript
复制
Events:
Type     Reason                  Age                From                Message
----     ------                  ----               ----                
-------
Normal   SandboxChanged          20m (x20 over 1h)  kubelet, 10.0.1.63  Pod sandbox changed, it will be killed and re-created.
Warning  FailedCreatePodSandBox  30s (x25 over 1h)  kubelet, 10.0.1.63  Failed create pod sandbox: rpc error: code = DeadlineExceeded desc = context deadline exceeded

如果我检查有多少个容器正在运行,有多少IP地址分配给这些容器,我可以看到24个容器:

代码语言:javascript
复制
[root@ip-10-0-1-63 centos]# weave ps | wc -l
26

在该节点上编织的总IP数是42。

代码语言:javascript
复制
[root@ip-10-0-1-212 centos]# kubectl exec -n kube-system -it weave-net-6x4cp -- /home/weave/weave --local status ipam
Defaulting container name to weave.
Use 'kubectl describe pod/weave-net-6x4cp -n kube-system' to see all of the containers in this pod.
6e:0d:f3:d7:f5:49(10.0.1.63)                42 IPs (32.8% of total) (42 active)
7a:24:6f:3c:1b:be(10.0.1.212)               40 IPs (31.2% of total) 
ee:00:d4:9f:9d:79(10.0.1.43)                46 IPs (35.9% of total) 

您可以看到所有42个IP都是活动的,因此没有更多的IP可用于分配给新的容器。但在42个节点中只有26个实际上分配给了容器,我不确定剩余的IP在哪里,这发生在所有三个节点上。

下面是weave status的输出,供您参考:

代码语言:javascript
复制
[root@ip-10-0-1-212 centos]# weave status

    Version: 2.5.1 (version 2.5.2 available - please upgrade!)

    Service: router
    Protocol: weave 1..2
       Name: 7a:24:6f:3c:1b:be(10.0.1.212)
    Encryption: disabled
PeerDiscovery: enabled
    Targets: 3
Connections: 3 (2 established, 1 failed)
      Peers: 3 (with 6 established connections)
TrustedSubnets: none

    Service: ipam
     Status: waiting for IP(s) to become available
      Range: 192.168.13.0/25
DefaultSubnet: 192.168.13.0/25

如果你需要更多的信息,我很乐意提供。有什么线索吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-26 14:37:24

如果你正在编织,IP地址已经耗尽,一些IP地址在重启后没有被释放。您可以删除文件/var/lib/weave/weave-netdata.db并重新启动编织pods。

对于我的例子,我添加了一个systemd脚本,该脚本在每次系统重新启动或关机时删除/var/lib/weave/weave-netdata.db文件,一旦系统启动,它将为所有pod分配新的IP,并且再也看不到编织IP耗尽。

在这里张贴这篇文章,希望其他人会发现它对他们的用例有用。

票数 0
EN

Stack Overflow用户

发布于 2019-07-31 20:54:31

不确定我们是否也有同样的问题。但是在我重启一个节点之前。我需要先drain它。因此,该节点中的所有pod都将被逐出。我们可以安全地重新启动节点。在该节点启动之后。您需要再次执行uncordon。该节点将再次可用于调度pod。

我的参考https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/

票数 1
EN

Stack Overflow用户

发布于 2019-08-01 11:09:09

我猜有16个IP预留给Pod重用。这些是基于CIDR范围的每个节点的最大pods数。

代码语言:javascript
复制
  Maximum Pods per Node CIDR Range per Node
  8                     /28
  9 to 16               /27
  17 to 32              /26
  33 to 64              /25
  65 to 110             /24
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57289864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档