<p>I initialized Kubernetes with <code>kubeadm init</code>, and after I used <code>kubeadm reset</code> to reset it I found <code>--pod-network-cidr</code> was wrong. After correcting it I tried to use <code>kubeadm</code> to init Kubernetes again like this:</p>

<pre><code>kubeadm init --use-kubernetes-version v1.5.1 --external-etcd endpoints=http://10.111.125.131:2379 --pod-network-cidr=10.244.0.0/16
</code></pre>

<p>Then I got some errors on the nodes</p>

<pre><code>12月 28 15:30:55 ydtf-node-137 kubelet[13333]: E1228 15:30:55.838700   13333 cni.go:255] Error adding network: no IP addresses available in network: cbr0
12月 28 15:30:55 ydtf-node-137 kubelet[13333]: E1228 15:30:55.838727   13333 cni.go:209] Error while adding to cni network: no IP addresses available in network: cbr0
12月 28 15:30:55 ydtf-node-137 kubelet[13333]: E1228 15:30:55.838781   13333 docker_manager.go:2201] Failed to setup network for pod "test-701078429-tl3j2_default(6945191b-ccce-11e6-b53d-78acc0f9504e)" using network plugins "cni": no IP addresses available in network: cbr0; Skipping pod  
12月 28 15:30:56 ydtf-node-137 kubelet[13333]: E1228 15:30:56.205596   13333 pod_workers.go:184] Error syncing pod 6945191b-ccce-11e6-b53d-78acc0f9504e, skipping: failed to "SetupNetwork" for "test-701078429-tl3j2_default" with SetupNetworkError: "Failed to setup network for pod \"test-701078429-tl3j2_default(6945191b-ccce-11e6-b53d-78acc0f9504e)\" using network plugins \"cni\": no IP addresses available in network: cbr0; Skipping pod"
</code></pre>

<p>or</p>

<pre><code>Dec 29 10:20:02 ydtf-node-137 kubelet: E1229 10:20:02.065142   22259 pod_workers.go:184] Error syncing pod 235cd9c6-cd6c-11e6-a9cd-78acc0f9504e, skipping: failed to "SetupNetwork" for "test-701078429-zmkdf_default" with SetupNetworkError: "Failed to setup network for pod \"test-701078429-zmkdf_default(235cd9c6-cd6c-11e6-a9cd-78acc0f9504e)\" using network plugins \"cni\": \"cni0\" already has an IP address different from 10.244.1.1/24; Skipping pod"
</code></pre>

<p>Why can't I create a network for the new pods?</p>

<p>By the way, I use flannel as network provider and it works fine.</p>

<pre><code>[root@ydtf-master-131 k8s151]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                      READY     STATUS                       RESTARTS   AGE       IP               NODE
default       test-701078429-tl3j2                      0/1       ContainerCreating   0          2h        &lt;none&gt;           ydtf-node-137
kube-system   dummy-2088944543-hd7b7                    1/1       Running             0          2h        10.111.125.131   ydtf-master-131
kube-system   kube-apiserver-ydtf-master-131            1/1       Running             7          2h        10.111.125.131   ydtf-master-131
kube-system   kube-controller-manager-ydtf-master-131   1/1       Running             0          2h        10.111.125.131   ydtf-master-131
kube-system   kube-discovery-1769846148-bjgp8           1/1       Running             0          2h        10.111.125.131   ydtf-master-131
kube-system   kube-dns-2924299975-q8x2m                 4/4       Running             0          2h        10.244.0.3       ydtf-master-131 
kube-system   kube-flannel-ds-3fsjh                     2/2       Running             0          2h        10.111.125.137   ydtf-node-137
kube-system   kube-flannel-ds-89r72                     2/2       Running             0          2h        10.111.125.131   ydtf-master-131
kube-system   kube-proxy-7w8c4                          1/1       Running             0          2h        10.111.125.137   ydtf-node-137
kube-system   kube-proxy-jk6z6                          1/1       Running             0          2h        10.111.125.131   ydtf-master-131
kube-system   kube-scheduler-ydtf-master-131            1/1       Running             0          2h        10.111.125.131   ydtf-master-131
</code></pre>

<p>I figured it out, if you change <strong>--pod-network-cidr</strong> when you reinitialize kubernetes via <strong>kubeadm init</strong>, you should delete some auto-created things, just follow the steps below before you execute <strong>kubeadm init</strong> again:</p>
<ol>
<li><p>execute <strong>kubeadm reset</strong> on master and nodes.</p>
</li>
<li><p>execute <strong>etcdctl rm --recursive registry</strong> reset data in etcd.</p>
</li>
<li><p><strong>rm -rf /var/lib/cni</strong> on master and nodes</p>
</li>
<li><p><strong>rm -rf /run/flannel</strong> on master and nodes</p>
</li>
<li><p><strong>rm -rf /etc/cni</strong> on master and nodes</p>
</li>
<li><p><strong>ifconfig cni0 down</strong> on master and nodes</p>
</li>
<li><p><strong>brctl delbr cni0</strong> on master and nodes</p>
</li>
</ol>
<p>Now, my Kubernetes works fine :)</p>
