[root@k8smaster ~]# cd /usr/local/src/ssl/
[root@k8smaster ssl]# vim flanneld-csr.json
{
"cn": "flanneld",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
"c": "cn",
"st": "beijing",
"l": "beijing",
"o": "k8s",
"ou": "system"
}
]
2.生成證書
[root@k8smaster ssl]# cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem \
-ca-key=/opt/kubernetes/ssl/ca-key.pem \
-config=/opt/kubernetes/ssl/ca-config.json \
-profile=kubernetes flanneld-csr.json | cfssljson -bare flanneld
3.分發證書
[root@k8smaster ssl]# cp flanneld.pem /opt/kubernetes/ssl/
[root@k8smaster ssl]# scp flanneld.pem k8snode1:/opt/kubernetes/ssl/
[root@k8smaster ssl]# scp flanneld*.pem k8snode2:/opt/kubernetes/ssl/
4.下載下傳flannel軟體包
[root@k8smaster k8s-v1.10.1]# tar zxf flannel-v0.10.0-linux-amd64.tar.gz
[root@k8smaster k8s-v1.10.1]# cp flanneld mk-docker-opts.sh /opt/kubernetes/bin/
[root@k8smaster k8s-v1.10.1]# scp flanneld mk-docker-opts.sh k8snode1:/opt/kubernetes/bin/
[root@k8smaster k8s-v1.10.1]# scp flanneld mk-docker-opts.sh k8snode2:/opt/kubernetes/bin/
複制對應腳本到/opt/kubernetes/bin目錄下。
[root@k8smaster ~]# cd /usr/local/src/k8s-v1.10.1-manual/k8s-v1.10.1/kubernetes/cluster/centos/node/bin/
[root@k8smaster bin]# ls
mk-docker-opts.sh remove-docker0.sh
[root@k8smaster bin]# cp remove-docker0.sh /opt/kubernetes/bin/
[root@k8smaster bin]# scp remove-docker0.sh k8snode1:/opt/kubernetes/bin/
[root@k8smaster bin]# scp remove-docker0.sh k8snode2:/opt/kubernetes/bin/
5.配置flannel
[root@k8smaster ~]# vim /opt/kubernetes/cfg/flannel
flannel_etcd="-etcd-endpoints=https://192.168.137.171:2379,https://192.168.137.201:2379,https://192.168.137.198:2379"
flannel_etcd_key="-etcd-prefix=/kubernetes/network"
flannel_etcd_cafile="--etcd-cafile=/opt/kubernetes/ssl/ca.pem"
flannel_etcd_certfile="--etcd-certfile=/opt/kubernetes/ssl/flanneld.pem"
flannel_etcd_keyfile="--etcd-keyfile=/opt/kubernetes/ssl/flanneld-key.pem"
複制配置到其它節點上
[root@k8smaster ~]# scp /opt/kubernetes/cfg/flannel k8snode1:/opt/kubernetes/cfg/
[root@k8smaster ~]# scp /opt/kubernetes/cfg/flannel k8snode2:/opt/kubernetes/cfg/
[root@k8smaster ~]#
6.設定flannel系統服務
[root@k8smaster ~]# vim /usr/lib/systemd/system/flannel.service
[unit]
description=flanneld overlay address etcd agent
after=network.target
before=docker.service
[service]
environmentfile=-/opt/kubernetes/cfg/flannel
execstartpre=/opt/kubernetes/bin/remove-docker0.sh
execstart=/opt/kubernetes/bin/flanneld ${flannel_etcd} ${flannel_etcd_key} ${flannel_etcd_cafile} ${flannel_etcd_certfile} ${flannel_etcd_keyfile}
execstartpost=/opt/kubernetes/bin/mk-docker-opts.sh -d /run/flannel/docker
type=notify
[install]
wantedby=multi-user.target
requiredby=docker.service
[root@k8smaster ~]# scp /usr/lib/systemd/system/flannel.service k8snode1:/usr/lib/systemd/system/
[root@k8smaster ~]# scp /usr/lib/systemd/system/flannel.service k8snode2:/usr/lib/systemd/system/
flannel cni內建
下載下傳cni
https://github.com/containernetworking/plugins/releases
wget https://github.com/containernetworking/plugins/releases/download/v0.7.1/cni-plugins-amd64-v0.7.1.tgz
[root@k8smaster ~]# cd /usr/local/src/k8s-v1.10.1-manual/k8s-v1.10.1/
[root@k8smaster k8s-v1.10.1]# tar zxf cni-plugins-amd64-v0.7.1.tgz -c /opt/kubernetes/bin/cni
[root@k8smaster ~]# scp -r /opt/kubernetes/bin/cni/ k8snode1:/opt/kubernetes/bin/cni/
[root@k8smaster ~]# scp -r /opt/kubernetes/bin/cni/ k8snode2:/opt/kubernetes/bin/cni/
建立etcd的key
[root@k8smaster ssl]# /opt/kubernetes/bin/etcdctl --ca-file /opt/kubernetes/ssl/ca.pem --cert-file /opt/kubernetes/ssl/flanneld.pem --key-file /opt/kubernetes/ssl/flanneld-key.pem \
--no-sync -c https://192.168.137.171:2379,https://192.168.137.201:2379,https://192.168.137.198:2379 \
mk /kubernetes/network/config '{ "network": "10.2.0.0/16", "backend": { "type": "vxlan", "vni": 1 }}' >/dev/null 2>&1
啟動flannel(所有節點)
[root@k8smaster ~]# systemctl daemon-reload
[root@k8smaster ~]# systemctl enable flannel
[root@k8smaster ~]# chmod +x /opt/kubernetes/bin/*
[root@k8smaster ~]# systemctl start flannel
[root@k8smaster ~]# systemctl status flannel
[root@k8smaster ~]# ip a
3: flannel.1: <broadcast,multicast,up,lower_up> mtu 1450 qdisc noqueue state unknown
link/ether 6a:83:e1:9e:94:a7 brd ff:ff:ff:ff:ff:ff
inet 10.2.79.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
inet6 fe80::6883:e1ff:fe9e:94a7/64 scope link
配置docker使用flannel
[root@k8smaster ~]# vim /usr/lib/systemd/system/docker.service
#在unit下面修改after和增加requires
#增加environmentfile=-/run/flannel/docker
description=docker application container engine
documentation=https://docs.docker.com
after=network-online.target firewalld.service flannel.service
wants=network-online.target
requires=flannel.service
environmentfile=-/run/flannel/docker
execstart=/usr/bin/dockerd $docker_opts
[root@k8smaster ~]# scp /usr/lib/systemd/system/docker.service k8snode1:/usr/lib/systemd/system/
[root@k8smaster ~]# scp /usr/lib/systemd/system/docker.service k8snode2:/usr/lib/systemd/system/
[root@k8smaster ~]# systemctl restart docker
4: docker0: <no-carrier,broadcast,multicast,up> mtu 1500 qdisc noqueue state down
link/ether 02:42:28:be:a7:90 brd ff:ff:ff:ff:ff:ff
inet 10.2.79.1/24 brd 10.2.79.255 scope global docker0