Kubernetes 上的 Flannel 安装

Flannel installation on Kubernetes

我已经在一台主机上安装了全新的 Kubernetes 1.6.2 master,现在尝试使用 https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

启动 Flannel

pod 没有出现:

$ kubectl get pods kube-flannel-ds-l6gn4 --namespace kube-system   
NAME                    READY     STATUS             RESTARTS   AGE
kube-flannel-ds-l6gn4   1/2       CrashLoopBackOff   36         2h

$ kubectl logs kube-flannel-ds-l6gn4 --namespace kube-system kube-flannel
E0427 15:35:52.232093       1 main.go:127] Failed to create 
SubnetManager: error retrieving pod spec for 'kube-system/kube-flannel-ds-l6gn4': the server does not allow access to the requested resource (get pods kube-flannel-ds-l6gn4)

我也使用默认服务帐户尝试过此操作,但不会出现。

如果你使用的是RBAC authorizer,你还需要创建https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel-rbac.yml来设置flannel服务账号的角色和权限

请注意,要使用 flannel 安装 Kubernetes,您需要指定 --pod-network-cidr 标志。参见 kubeadm init section

示例

kubeadm init --pod-network-cidr=10.244.0.0/16

然后像Jordan提到的那样,在某些环境下你需要安装RBAC

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

如果问题仍然存在,请检查

  1. 确保您的 cni 插件二进制文件在 /opt/cni/bin 中就位。您应该看到每个 CNI 附加组件的相应二进制文件

  2. 确保网络插件的 CNI 配置文件在 /etc/cni/net.d 下 [root@node1]# ls /etc/cni/net.d 10-flannel.conf

  3. 运行 ifconfig 检查docker,flannel 网桥和虚拟接口已启动

正如在 github 上提到的 https://github.com/kubernetes/kubernetes/issues/36575#issuecomment-264622923

我已经写了一篇complete blog post on the topic如果有帮助的话

对于最近可能正在寻找此内容的任何人,most recent docs 声明正确的配置命令(对于启用 RBAC 的 1.7+)是:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

注意还有instruction docs for older versions/without RBAC,其中状态:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml

请注意,要在旧版本之上安装 RBAC:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

不工作

adminka@l-test:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml serviceaccount/flannel不变 configmap/kube-flannel-cfg 已配置 错误:无法识别“https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml”:版本“extensions/v1beta1”中的种类“DaemonSet”没有匹配项“

adminka@l-test:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml 无法识别“https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml”:版本“rbac.authorization.k8s.io/v1beta1”中种类“ClusterRole”没有匹配项 无法识别“https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml”:版本“rbac.authorization.k8s.io/v1beta1”中种类“ClusterRoleBinding”没有匹配项 adminka@l-test:~$