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
![]()