0

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

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

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 个容器:

[root@ip-10-0-1-63 centos]# weave ps | wc -l
26

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

[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 在哪里。它发生在所有三个节点上。

这是编织状态的输出供您参考:

[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

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

4

3 回答 3

1

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

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

于 2019-07-31T12:54:30.807 回答
1

我猜有 16 个 IP 保留用于 Pod 重用目的。这些是基于 CIDR 范围的每个节点的最大 pod。

  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
于 2019-08-01T03:09:09.427 回答
0

如果您正在编织 IP 已用尽,并且某些 IP 在重新启动后未释放。您可以删除该文件/var/lib/weave/weave-netdata.db并重新启动 weave pod。

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

在此处发布此内容,希望其他人会发现它对他们的用例有用。

于 2019-08-26T06:37:23.880 回答