K8S_03_flanneld安装配置

Kubernetes 设计了网络模型,但却将它的实现交给了网络插件,CNI网络插件最主要的功能就是实现POD资源能够跨宿主机进行通信。

常风的CNI网络插件:
Flannel Calico canal Contiv OpenContrail NSX-T Kube-router
K8s 的网络插件 ---- Flannel
集群规划



两台服务器(运算节点)上都部署 flannel

官方地址:https://github.com/flannel-io/flannel/releases
我们用的版本是:0.11




10.4.7.21 10.4.7.22上面操作:
cd /root
wget https://github.com/flannel-io/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz

创建flannel 目录
mkdir -p /opt/flannel-v0.11.0
tar xf flannel-v0.11.0-linux-amd64.tar.gz -C /opt/flannel-v0.11.0/
ln -s /opt/flannel-v0.11.0 /opt/flannel
cd /opt/flannel
mkdir cert && cd cert

scp hdss7-200:/opt/certs/ca.pem .
scp hdss7-200:/opt/certs/client.pem .
scp hdss7-200:/opt/certs/client-key.pem .



因为flannel 默认使用etcd去做一些存储和配置的,所以你需要让flannel 能够连上etcd,你要让flannel 连上etcd话,需要把 client证书拷贝过来,它是etcd的客户端。

创建配置:hdss7-21(10.4.7.21) hdss7-22(10.4.7.22)

vim /opt/flannel/subnet.env

FLANNEL_NETWORK=172.7.0.0/16
FLANNEL_SUBNET=172.7.21.1/24
FLANNEL_MTU=1500
FLANNEL_IPMASQ=false



10.4.7.22上面的配置



创建启动脚本:hdss7-21(10.4.7.21) hdss7-22(10.4.7.22)

vi /opt/flannel/flanneld.sh

#!/bin/sh
./flanneld \
 --public-ip=10.4.7.21 \
 --etcd-endpoints=https://10.4.7.12:2379,https://10.4.7.21:2379,https://10.4.7.22:2379 \
 --etcd-keyfile=./cert/client-key.pem \
 --etcd-certfile=./cert/client.pem \
 --etcd-cafile=./cert/ca.pem \
 --iface=eth0 \
 --subnet-file=./subnet.env \
 --healthz-port=2401

######++++++++
10.4.7.22 上面



chmod +x /opt/flannel/flanneld.sh
mkdir -p /data/logs/flanneld

###++++++
操作 etcd,增加 host-gw ### 在etcd任意 一台上面都可以执行

cd /opt/etcd

./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}'







删除: ./etcdctl rm /coreos.com/network/config

配置supervisor

vim /etc/supervisord.d/flannel.ini

[program:flanneld-7-21]
command=/opt/flannel/flanneld.sh
numprocs=1
directory=/opt/flannel
autostart=true
autorestart=true
startsecs=30
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopwaitsecs=10
user=root
redirect_stderr=true
stdout_logfile=/data/logs/flanneld/flanneld.stdout.log
stdout_logfile_maxbytes=64MB
stdout_logfile_backups=4
stdout_capture_maxbytes=1MB
stdout_events_enabled=false

###### ++++++++
10.4.7.22


supervisorctl update

#######++++++++






测试:

在hdss7-21 上面ping hdss7-22的pod



在hdss7-22 上面ping hdss7-21的pod