建议直接使用yum安装flanneld,除非对版本有特殊需求,默认安装的是0.7.1版本的flannel。

    service配置文件。

    1. [Unit]
    2. Description=Flanneld overlay address etcd agent
    3. After=network.target
    4. After=network-online.target
    5. Wants=network-online.target
    6. After=etcd.service
    7. Before=docker.service
    8. [Service]
    9. Type=notify
    10. EnvironmentFile=/etc/sysconfig/flanneld
    11. EnvironmentFile=-/etc/sysconfig/docker-network
    12. ExecStart=/usr/bin/flanneld-start \
    13. -etcd-endpoints=${FLANNEL_ETCD_ENDPOINTS} \
    14. -etcd-prefix=${FLANNEL_ETCD_PREFIX} \
    15. $FLANNEL_OPTIONS
    16. ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
    17. Restart=on-failure
    18. [Install]
    19. WantedBy=multi-user.target
    20. RequiredBy=docker.service

    /etc/sysconfig/flanneld配置文件:

    在etcd中创建网络配置

    执行下面的命令为docker分配IP地址段。

    1. --ca-file=/etc/kubernetes/ssl/ca.pem \
    2. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    3. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    4. mkdir /kube-centos/network
    5. etcdctl --endpoints=https://172.20.0.113:2379,https://172.20.0.114:2379,https://172.20.0.115:2379 \
    6. --ca-file=/etc/kubernetes/ssl/ca.pem \
    7. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    8. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    9. mk /kube-centos/network/config '{"Network":"172.30.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}'

    如果你要使用host-gw模式,可以直接将vxlan改成host-gw即可。

    启动flannel

    现在查询etcd中的内容可以看到:

    1. $etcdctl --endpoints=${ETCD_ENDPOINTS} \
    2. --ca-file=/etc/kubernetes/ssl/ca.pem \
    3. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    4. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    5. ls /kube-centos/network/subnets
    6. /kube-centos/network/subnets/172.30.14.0-24
    7. /kube-centos/network/subnets/172.30.38.0-24
    8. /kube-centos/network/subnets/172.30.46.0-24
    9. $etcdctl --endpoints=${ETCD_ENDPOINTS} \
    10. --ca-file=/etc/kubernetes/ssl/ca.pem \
    11. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    12. { "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }
    13. $etcdctl --endpoints=${ETCD_ENDPOINTS} \
    14. --ca-file=/etc/kubernetes/ssl/ca.pem \
    15. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    16. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    17. get /kube-centos/network/subnets/172.30.14.0-24
    18. {"PublicIP":"172.20.0.114","BackendType":"vxlan","BackendData":{"VtepMAC":"56:27:7d:1c:08:22"}}
    19. $etcdctl --endpoints=${ETCD_ENDPOINTS} \
    20. --ca-file=/etc/kubernetes/ssl/ca.pem \
    21. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    22. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    23. get /kube-centos/network/subnets/172.30.38.0-24
    24. {"PublicIP":"172.20.0.115","BackendType":"vxlan","BackendData":{"VtepMAC":"12:82:83:59:cf:b8"}}
    25. $etcdctl --endpoints=${ETCD_ENDPOINTS} \
    26. --ca-file=/etc/kubernetes/ssl/ca.pem \
    27. --cert-file=/etc/kubernetes/ssl/kubernetes.pem \
    28. --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \
    29. get /kube-centos/network/subnets/172.30.46.0-24

    如果可以查看到以上内容证明flannel已经安装完成,下一步是在node节点上安装和配置docker、kubelet、kube-proxy等,请参考下一节。