写入的 Pod 网段({"Network":"10.233.0.0/16"}) 必须与 kube-controller-manager 的 --cluster-cidr 选项值一致;
安装和配置flanneld 下载 flanneld [root@mimo222 ~]# mkdir /tnp/flannel [root@mimo222 ~]# cd /tmp/flannel [root@mimo222 ~]# wget https://github.com/coreos/flannel/releases/download/v0.7.1/flannel-v0.7.1-linux-amd64.tar.gz [root@mimo222 ~]# tar -xzvf flannel-v0.7.1-linux-amd64.tar.gz [root@mimo222 ~]# cp {flanneld,mk-docker-opts.sh} /usr/local/bin 创建启动文件flanneld.service [root@mimo222 ~]# vi /etc/systemd/system/flanneld.service # 添加以下信息: [Unit] Description=Flanneld overlay address etcd agent After=network.target After=network-online.target Wants=network-online.target After=etcd.service Before=docker.service [Service] Type=notify ExecStart=/usr/local/bin/flanneld \\ -etcd-cafile=/etc/kubernetes/ssl/ca.pem \\ -etcd-certfile=/etc/flanneld/ssl/flanneld.pem \\ -etcd-keyfile=/etc/flanneld/ssl/flanneld-key.pem \\ -etcd-endpoints=https://10.0.11.222:2379 \\ -etcd-prefix=/kubernetes/network ExecStartPost=/usr/local/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker Restart=on-failure [Install] WantedBy=multi-user.target RequiredBy=docker.service
-etcd-endpoints :填写etcd配置的URL,注意使用https。
-etcd-prefix:上面第一步设置的Pod网段key前缀。我设置的key为/kubernetes/network/config,因此前缀为/kubernetes/network。
注意CA验证证书的路径是否正确。
启动 flanneld [root@mimo222 ~]# systemctl daemon-reload [root@mimo222 ~]# systemctl enable flanneld [root@mimo222 ~]# systemctl start flanneld [root@mimo222 ~]# systemctl status flanneld etcd中flannel网段信息查询对于以下命令,--endpoints参数后跟的是etcd集群IP:PORT(多个etcd节点需填多个IP:PORT),/kubernetes/network是我这里设置的FLANNEL_ETCD_PREFIX,因此大家可根据自己设置的flannel etcd 前缀来填写。--ca-file、--cert-file、--key-file是指相应flannel证书路径,若没有采用CA验证,则不需要。
下面的命令仅是我这里用的一些命令例子,其中参数需要根据自己需要修改一下。
查看ETCD中flannel集群 Pod 网段 etcdctl --endpoints=https://10.0.11.222:2379 \ --ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ get /kubernetes/network/config {"Network":"10.233.0.0/16"} 查看已分配的 Pod 子网段列表 etcdctl --endpoints=https://10.0.11.222:2379 \ --ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ ls /kubernetes/network/subnets /kubernetes/network/subnets/10.233.50.0-24 /kubernetes/network/subnets/10.233.86.0-24 查看某一 Pod 网段对应的 flanneld 进程监听的 IP 和网络参数 etcdctl --endpoints=https://10.0.11.222:2379 \ --ca-file=/opt/ssl/ca.pem \ --cert-file=/etc/kubernetes/ssl/flanneld.pem \ --key-file=/etc/kubernetes/ssl/flanneld-key.pem \ get /kubernetes/network/subnets/10.233.50.0-24 {"PublicIP":"10.0.11.221"} 确保各节点间 Pod 网段能互联互通在各节点上部署完 Flannel 后,根据上面命令查看已分配的 Pod 子网段列表(此处是我分配的网段列表):
/kubernetes/network/subnets/10.233.50.0-24 /kubernetes/network/subnets/10.233.86.0-24在各节点上分配 ping 这两个网段的网关地址,确保能通:
ping 10.233.50.1 ping 10.233.86.1 Kubernetes Node节点安装配置kubernetes node节点需要安装kubelet、kube-proxy、flannel。下面的配置步骤,指明在master节点执行的需要在master节点执行,没有指明的在node节点执行。
配置 kubelet(Master节点执行)