天天看点

手动安装K8s第八节:部署Fannel网络wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gzmkdir /opt/kubernetes/bin/cni

[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