<p>I've had the opportunity to install k8s clusters on CentOS VMs. In most cases, i used flanneld as overlay. On some other cases, though, i noticed flannel pods in kube-system namespace. IMHO, we need not have both flanneld and flannel pods for underlying CNI to function properly with kubernetes.</p>

<p>Have read plenty of documentation on how flannel overlay fits into kubernetes ecosystem. However, i haven't found the answers to some questions. Hope somebody can provide pointers.</p>

<ol>
<li>What is the basis for choosing flanneld or flannel pod?</li>
<li>Are there any differences in functionality between flanneld and flannel pod?</li>
<li>How does the flannel pod provide CNI functionality? My understanding is the pod populates etcd with IP address k/v pairs but how is this info really used?</li>
<li>Do most CNI plugins have a choice between running as daemon or pod?</li>
</ol>

<p>You are right, you don't need both of them because they do the same job. There is no differences between  them  just where the daemon run in system, in isolated container or in system as regular daemon. All CNI plugins bases on CNI library and route the traffic. Flannel use system ETCD as key-value storage. if you have ETCD inside  kubernetes cluster it will use this if external it will use external ETCD.  it is only you choose what prefer to you, For example If you are running external ETCD usually people running flannel as daemon in system. </p>
