首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s集群网络(10)-flannel vxlan overlay网络setup

k8s集群网络(10)-flannel vxlan overlay网络setup

作者头像
TA码字
发布2020-04-01 15:32:31
6310
发布2020-04-01 15:32:31
举报
文章被收录于专栏:TA码字TA码字

上一篇文章里我们对基于iptable和ipvs模式下cluster ip类型的service和node port类型的service做了总结和对比,在这里我们主要介绍flannel overlay网络setup,以便后面分析pod到pod的通讯过程。对于flannel overlay网络有vxlan 方式和udp方式,这里我们介绍vxlan 方式的setup。对于vxlan 是一种overlay网路技术,意在利用在三层网络之上构建二层网络。对于二层网络一般我们采用vlan技术来隔离,不过vlan在数据包里总共4个字节,有12bit用来标识不同的二层网络,这样总共可以有4000多个vlan。而vxlan header有8个字节,有24bit用来标识不同的二层网络,这样总共是1600多万个vxlan。更多关于vxlan可以参考https://tools.ietf.org/html/rfc7348

对于flannel vxlan overlay网络我们需要把以前文章setup的docker,flannel,kubelet,kube-proxy,kube-apiserver,kube-scheduler,kube-controller-manager服务停掉,然后在以前文章中安装的etcd里进行配置。

修改etcd配置:

  • "Backend": {"Type":"vxlan"}==>表示为vxlan类型网络
  • "VNI": 1==>表示vxlan的网络id为1
  • "Port ": 8472==>表示vxlan的vtep端点udp端口为8472(vxlan利用udp封包)
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key set /cloudnetwork/config  '{ "Network": "10.1.0.0/16", "SubnetLen": 24, "Backend": {"Type":"vxlan"}, "VNI": 1, "Port ": 8472}'
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/config

启动所有节点的flannel service并查看网络生成情况:

systemctl start flanneld
systemctl status flanneld

etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key ls /cloudnetwork/subnets
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.82.0-24
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.55.0-24
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.74.0-24

我们发现:

  • 在node 172.20.11.41上生成子网10.1.82.0/24
  • 在node 172.20.11.42上生成子网10.1.55.0/24
  • 在node 172.20.11.43上生成子网10.1.74.0/24

在3个node上分别check子网和docker网络配置文件:

ip addr|grep 41
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.82.0-24
cat /var/run/flannel/docker

ip addr|grep 42
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.55.0-24
cat /var/run/flannel/docker

ip addr|grep 43
etcdctl --ca-file /etc/etcd/ca.crt --cert-file /etc/etcd/etcd-client.crt --key-file /etc/etcd/etcd-client.key get /cloudnetwork/subnets/10.1.74.0-24
cat /var/run/flannel/docker

这里我们发现数据包的最大传输单元mtu(Maximum Transmission Unit)为1450,不是一般的1500。是因为vxlan是利用udp包的payload封装了二层eth包,所以导致最大传输单元mtu变小了。

启动所有worker node docker服务:

systemctl start docker
systemctl status docker

启动所有worker node kubelet服务:

systemctl start kubelet
systemctl status kubelet

启动所有worker node kube-proxy服务:

systemctl start kube-proxy
systemctl status kube-proxy

启动master node kube-apiserver服务:

systemctl start kube-apiserver
systemctl status kube-apiserver

启动master node kube-scheduler服务:

systemctl start kube-scheduler
systemctl status kube-scheduler

启动master node kube-controller-manager服务:

systemctl start kube-controller-manager
systemctl status kube-controller-manager

打开所有worker node 8472 udp port :

firewall-cmd --permanent --zone=public --add-port=8472/udp
firewall-cmd --reload
firewall-cmd --list-all

vxlan利用udp封包,根据上面etcd中的配置,udp使用8472端口接收数据,所以需要在所有的worker node上打开8472 udp port 。

检查以前部署的pod处于ready状态:

kubectl get pods -o wide --all-namespaces

目前先写到这里,下一篇文章里我们继续介绍k8s集群flannel vxlan overlay网络下pod到pod的通讯过程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TA码字 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档