tnblog
首页
视频
资源
登录

Kubernetes Calico Vxlan

6477人阅读 2022/11/15 15:00 总访问:3466989 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes Calico Vxlan

安装vxlan


我们可以通过如下命令一件安装Calico Vxlan。

  1. kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/calico-vxlan.yaml

IPIP模式转换VXLAN与参数讲解

Vxlan不会用到BGP,只有IPIP模式才会用到BGP。

  1. apiVersion: projectcalico.org/v3
  2. kind: IPPool
  3. metadata:
  4. name: ippool-vxlan-1
  5. spec:
  6. cidr: 192.168.0.0/16
  7. vxlanMode: Always
  8. natOutgoing: true


修改我们的IPPool。

  1. kubectl edit ippool default-ipv4-ippool


vxlanMode参数设置为 Always 的时候,三层和二层的通信都通过vxlan的方式进行通信,当值为CrossSubnet的时候只有三层才进行vxlan的方式进行通信。

  1. kind: ConfigMap
  2. apiVersion: v1
  3. metadata:
  4. name: calico-config
  5. namespace: kube-system
  6. data:
  7. # Typha is disabled.
  8. typha_service_name: "none"
  9. # Configure the backend to use.
  10. calico_backend: "vxlan"


当我们想安装calico vxlan的时候。
calico_backend参数将会设置为vxlan将会禁用bird组件。
由于不使用bird组件,所以我们也需要关闭对bird组件的检测# - -bird-ready# - -bird-live,这里已经去掉了。


由于我们需要三层的方式通信,所以我们还需要将CALICO_IPV4POOL_VXLAN参数更改为Always。然后我们才可以进行更新安装配置。

  1. kubectl apply -f calico-vxlan.yaml


安装完成之后,我们发现确实BGP没有运行了。

  1. calicoctl --allow-version-mismatch node status

实践


首先我们创建两个pod,并进行ping尝试是否能够互通。

  1. vim cni.yaml
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: cni
  5. spec:
  6. selector:
  7. matchLabels:
  8. app: cni
  9. replicas: 2
  10. template:
  11. metadata:
  12. labels:
  13. app: cni
  14. spec:
  15. containers:
  16. - name: cni
  17. image: burlyluo/nettoolbox
  1. kubectl apply -f cni.yaml
  2. kubectl get pod -o wide


首先我们node1上的pod测试ping,进过下面代码的测试发现是没问题的。

  1. kubectl exec cni-68878bb9bd-8qzfr -- ping 192.168.202.13

如何实现的?


首先我们来看node1上的pod的路由表。

  1. kubectl exec cni-68878bb9bd-8qzfr -- route -n


169.254.1.1不用再说了吧,就是从当前主机那儿拿到个mac地址。
接下来我们在来看看主机的路由。


我们要到达的目标地址是192.168.202.13,所以下一跳的网关应该是192.168.202.12那么它是如何获取到目标主机地址的呢?
其实是通过目标mac地址在fdb表中查询到的(在这里会修改mac地址),就是2个 veth一端插这头一端插那头。
我们可以通过如下命令进行查看。

  1. # 在node2中查询vxlan.calico的mac地址
  2. ifconfig

  1. # 再次查看fdb表
  2. bridge fdb show grep "66:b5:c2:86:6c:e9"

  1. tcpdump -pne -i vxlan.calico


然后后续到主机上后,通过地址到不同的口子上出去。(这里是cali62f26213c6f出去)

抓包


我们在Node1上抓包试试看。

  1. tcpdump -pne -i vxlan.calico | grep 192.168.202
  1. kubectl exec cni-68878bb9bd-8qzfr -- ping 192.168.202.13
名称 IP mac地址
cni-68878bb9bd-8qzfr 192.168.36.83 F2:DD:ED:53:7B:61
cni-68878bb9bd-s9n4s 192.168.202.13 3E:5B:FD:27:61:5B
Node1上的vxlan.calico 192.168.36.82 66:c6:48:f6:2e:72
Node2上的vxlan.calico 192.168.202.12 66:b5:c2:86:6c:e9
Node1上的eth0 10.211.55.8 00:1c:42:fd:68:ff
Node1上的eth0 10.211.55.9 00:1c:42:ad:be:97


在Wirshark中查看。

  1. tcpdump -pne -i eth0 -w eth0_vxlan.cap


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

cAPS.net 保存base64位格式的图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request["imgBase"]; //c#里边的base6...

Quartz.net实例动态改变周期调度。misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.net Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

c、VB.net中全角半角转换方法

///<summary> ///转全角的函数(SBCcase) ///</summary> ///<paramname="input">任意字符串...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

C.net 配合小程序实现经过第三方服务器中转文件

某些时候,微信小程序前段上传文件的时候需要经过第三方服务器再将文件上传到客户的服务器;操作如下:1:(小程序内向中端服...

.net实现QQ邮箱发送邮件功能

1、微软已经帮我们封装好了发送邮件的类MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。Mai...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

确保.net程序始终以管理员身份运行

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; ...

ASP.net Timer细节处理

Timer的用法:1:本人称之为计时器,是asp.net官方的一种。用法即是计时所用 2:关于计时有很多中方式,本人学识有限,暂...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术