首页
视频
资源
登录
原
Kubernetes Calico Vxlan
4538
人阅读
2022/11/15 15:00
总访问:
2645615
评论:
0
收藏:
0
手机
分类:
容器编排
![](https://img.tnblog.net/arcimg/hb/cf0187c40cbd4549a3cbad26c140763f.png) >#Kubernetes Calico Vxlan [TOC] ## 安装vxlan tn2>我们可以通过如下命令一件安装Calico Vxlan。 ```bash kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/calico-vxlan.yaml ``` ## IPIP模式转换VXLAN与参数讲解 tn>Vxlan不会用到BGP,只有IPIP模式才会用到BGP。 ```yaml apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: ippool-vxlan-1 spec: cidr: 192.168.0.0/16 vxlanMode: Always natOutgoing: true ``` tn2>修改我们的IPPool。 ```bash kubectl edit ippool default-ipv4-ippool ``` ![](https://img.tnblog.net/arcimg/hb/73377328f0184b41b17e440a1534347a.png) tn2>当`vxlanMode`参数设置为 `Always` 的时候,三层和二层的通信都通过vxlan的方式进行通信,当值为`CrossSubnet`的时候只有三层才进行vxlan的方式进行通信。 tn2>我们可以通过点击这个<a href=" https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/calico-vxlan.yaml">链接来访问Vxlan的Yaml</a>。 我首先节选了部分`calico-config`的配置。 ```yaml kind: ConfigMap apiVersion: v1 metadata: name: calico-config namespace: kube-system data: # Typha is disabled. typha_service_name: "none" # Configure the backend to use. calico_backend: "vxlan" ``` tn2>当我们想安装calico vxlan的时候。 calico_backend参数将会设置为`vxlan`将会禁用`bird`组件。 由于不使用`bird`组件,所以我们也需要关闭对`bird`组件的检测`# - -bird-ready`与`# - -bird-live`,这里已经去掉了。 ![](https://img.tnblog.net/arcimg/hb/309306f3438b45ea8684a70b8bd40ae9.png) tn2>由于我们需要三层的方式通信,所以我们还需要将`CALICO_IPV4POOL_VXLAN`参数更改为`Always`。然后我们才可以进行更新安装配置。 ```bash kubectl apply -f calico-vxlan.yaml ``` ![](https://img.tnblog.net/arcimg/hb/424dd99ce8d8494ab2587e51130ce2e9.png) tn2>安装完成之后,我们发现确实BGP没有运行了。 ```bash calicoctl --allow-version-mismatch node status ``` ![](https://img.tnblog.net/arcimg/hb/675498549fdb4d70be2b520acd6084bf.png) ## 实践 tn2>首先我们创建两个pod,并进行ping尝试是否能够互通。 ```bash vim cni.yaml ``` ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: cni spec: selector: matchLabels: app: cni replicas: 2 template: metadata: labels: app: cni spec: containers: - name: cni image: burlyluo/nettoolbox ``` ```bash kubectl apply -f cni.yaml kubectl get pod -o wide ``` ![](https://img.tnblog.net/arcimg/hb/7b33d032ff69457a97d8da65f745e08a.png) tn2>首先我们node1上的pod测试ping,进过下面代码的测试发现是没问题的。 ```bash kubectl exec cni-68878bb9bd-8qzfr -- ping 192.168.202.13 ``` ![](https://img.tnblog.net/arcimg/hb/158f2e4540c943e3b3e5dc4ccf811808.png) ## 如何实现的? tn2>首先我们来看node1上的pod的路由表。 ```bash kubectl exec cni-68878bb9bd-8qzfr -- route -n ``` ![](https://img.tnblog.net/arcimg/hb/350fe723ec2843beb0d112abcd0710c4.png) tn2>169.254.1.1不用再说了吧,就是从当前主机那儿拿到个mac地址。 接下来我们在来看看主机的路由。 ![](https://img.tnblog.net/arcimg/hb/af4f3632fa784cf6bd66edeff68a652c.png) tn2>我们要到达的目标地址是`192.168.202.13`,所以下一跳的网关应该是`192.168.202.12`那么它是如何获取到目标主机地址的呢? 其实是通过目标mac地址在fdb表中查询到的(在这里会修改mac地址),就是2个 veth一端插这头一端插那头。 我们可以通过如下命令进行查看。 ```bash # 在node2中查询vxlan.calico的mac地址 ifconfig ``` ![](https://img.tnblog.net/arcimg/hb/11efb89063bb413f934585500db8e911.png) ```bash # 再次查看fdb表 bridge fdb show | grep "66:b5:c2:86:6c:e9" ``` ![](https://img.tnblog.net/arcimg/hb/0351c9744f7a45d8a0bc1f59d1789835.png) ```bash tcpdump -pne -i vxlan.calico ``` tn2>然后后续到主机上后,通过地址到不同的口子上出去。(这里是cali62f26213c6f出去) ![](https://img.tnblog.net/arcimg/hb/f3bf37ca151b4820945b08af49cff941.png) ## 抓包 tn2>我们在Node1上抓包试试看。 ```bash tcpdump -pne -i vxlan.calico | grep 192.168.202 ``` ```bash 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 | ![](https://img.tnblog.net/arcimg/hb/07099bc0d89146729a1ee1d8d66f57e3.png) tn2>在Wirshark中查看。 ```bash tcpdump -pne -i eth0 -w eth0_vxlan.cap ``` ![](https://img.tnblog.net/arcimg/hb/8baac8a764cf416f9b565490363635f7.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
171篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
3篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
4篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术