Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Kubernetes Multus:不同节点上的豆荚之间没有macvlan连接(不能ping)

Kubernetes Multus:不同节点上的豆荚之间没有macvlan连接(不能ping)
EN

Stack Overflow用户
提问于 2021-01-27 05:52:20
回答 1查看 1.4K关注 0票数 0

我遇到了一个问题,我有一个Kubernetes集群,其中有两个工作节点和一个主节点。让我们对它们进行实验室-- W1、W2和M。我有一个部署,它创建了一组CentOS7荚,其中一些是针对每个工作人员的。我使用Multus,以便在每个吊舱上有一个额外的net1接口,映射到工人上的eth1。所有的豆荚都有net1连接到同一个名为“up”的macvlan上。

在W1和W2上,我可以在运行在同一节点上的豆荚之间切换,但是W1中的荚不能在W2中切换另一个豆荚,反之亦然。eth0上的标准kube网络在所有情况下都能工作。就是那个有这个问题的人。

简而言之,这就是问题所在。现在让我更详细地描述一下我们正在使用的设置。

我们有一个有3台物理服务器的实验室,我们在上面部署了Kolla (这是安装在Kubernet上的Openstack )。在这个Openstack安装中,我再次尝试设置一个Kubernetes安装是主节点,工作节点托管在Openstack虚拟机中(即W1、W2、M)是VM在Openstack中运行的。这意味着我们总共有三层虚拟化。我只想提一下,如果有人知道任何可能的线索的话。但我并没有遇到任何与虚拟化相关的问题。还可以提到,这些vm有两个接口eth0和eth1。Eth1是我想要的设备。最后,对于vm和物理服务器,操作系统都是CentOS7。

关于Kubernetes的安装:

  • Kubernetes (覆盖云)是使用Kubespray安装的。
  • i编辑主机文件,使node1主node2 W1和node3 W2。
  • i set kube_network_plugin_multus to true W2用于为net1接口分配ip地址。
  • i使用calico作为网络驱动程序。

F 211

下面是用于macvlan网络的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: up-net
spec:
  config: '{
      "cniVersion": "0.3.0",
      "name": "up-net",
      "type": "macvlan",
      "master": "eth1",
      "mode": "bridge",
      "ipam": {
        "type": "whereabouts",
        "datastore": "kubernetes",
        "kubernetes": { "kubeconfig": "/etc/cni/net.d/whereabouts.d/whereabouts.kubeconfig" },
        "range": "192.168.3.225/28",
        "log_file" : "/tmp/whereabouts.log",
        "log_level" : "debug"
      }
    }'

下面是豆荚的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: apps/v1
kind: Deployment
metadata:
    name: sample
    labels:
        app: centos-host
spec:
    replicas: 4
    selector:
        matchLabels:
            app: centos-host
    template:
        metadata:
            labels:
                app: centos-host
            annotations:
                k8s.v1.cni.cncf.io/networks: up-net
        spec:
            containers:
              - name: centos-container
                image: centos:7
                command: ["/bin/sleep", "infinity"]

我还没有明确指定他们最终选择的是哪一个工作人员,但通常负载均衡器平均分配四个吊舱。

此外,以下是库贝系统的吊舱:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[centos@node1 ~]$ kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-8b5ff5d58-msq2m   1/1     Running   1          29h
calico-node-2kg2l                         1/1     Running   1          29h
calico-node-4fxwr                         1/1     Running   1          29h
calico-node-m4l67                         1/1     Running   1          29h
coredns-85967d65-6ksqx                    1/1     Running   1          29h
coredns-85967d65-8nbgq                    1/1     Running   1          29h
dns-autoscaler-5b7b5c9b6f-567vz           1/1     Running   1          29h
kube-apiserver-node1                      1/1     Running   1          29h
kube-controller-manager-node1             1/1     Running   1          29h
kube-multus-ds-amd64-dzmj5                1/1     Running   1          29h
kube-multus-ds-amd64-mvfpc                1/1     Running   1          29h
kube-multus-ds-amd64-sbw8n                1/1     Running   1          29h
kube-proxy-6jgvn                          1/1     Running   1          29h
kube-proxy-tzf5t                          1/1     Running   1          29h
kube-proxy-vgmh8                          1/1     Running   1          29h
kube-scheduler-node1                      1/1     Running   1          29h
nginx-proxy-node2                         1/1     Running   1          29h
nginx-proxy-node3                         1/1     Running   1          29h
nodelocaldns-27bct                        1/1     Running   1          29h
nodelocaldns-75cgg                        1/1     Running   1          29h
nodelocaldns-ftvn9                        1/1     Running   1          29h
whereabouts-4tktv                         1/1     Running   0          28h
whereabouts-nfwkz                         1/1     Running   0          28h
whereabouts-vxgwr                         1/1     Running   0          28h

现在,我已经对我所运行的实验进行了说明。

考虑一下worker 1( P1a )上的pods、P1b和W1。工作人员2 (W2)上有P2a和P2b。我使用ping和tcpdump访问连接。

从P1a到P1b的Ping工作正常,tcpdump告诉我W1的eth1设备上有icmp流量。W2也是如此。

但是,当我从P2a中选择P1a时,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@sample-7b9755db48-gxq5m /]# ping -c 2 192.168.3.228
PING 192.168.3.228 (192.168.3.228) 56(84) bytes of data.
From 192.168.3.227 icmp_seq=1 Destination Host Unreachable
From 192.168.3.227 icmp_seq=2 Destination Host Unreachable

--- 192.168.3.228 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms
pipe 2

然而,一个有趣的线索是icmp数据包最终出现在pod上的lo接口上--在本例中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@sample-7b9755db48-gxq5m /]# tcpdump -vnes0 -i lo
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
12:51:57.261003 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 32401, offset 0, flags [none], proto ICMP (1), length 112)
    192.168.3.227 > 192.168.3.227: ICMP host 192.168.3.228 unreachable, length 92
        (tos 0x0, ttl 64, id 39033, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.3.227 > 192.168.3.228: ICMP echo request, id 137, seq 1, length 64
12:51:57.261019 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 32402, offset 0, flags [none], proto ICMP (1), length 112)
    192.168.3.227 > 192.168.3.227: ICMP host 192.168.3.228 unreachable, length 92
        (tos 0x0, ttl 64, id 39375, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.3.227 > 192.168.3.228: ICMP echo request, id 137, seq 2, length 64

你认为我的路由表可能有问题吗?我什么也看不见,但我对社交有点陌生:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@sample-7b9755db48-gxq5m /]# ip route
default via 169.254.1.1 dev eth0 
169.254.1.1 dev eth0 scope link 
192.168.3.224/28 dev net1 proto kernel scope link src 192.168.3.227

最后,列出一些我尝试过但没有奏效的事情:

macaddresses).

  • 将eth1设置为eth1 on W1、W2和M.
  • 的混杂模式,禁用rp_filter for ipv4 (我认为macvlan对W1、W2和M.
  • 进行了奇怪的操作)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-31 23:41:53

最后,我自己找到了答案。原来是OpenStack安全组织造成了这个问题。我所需要做的更改就是在所有eth1网络端口上禁用端口安全。这是我对每个这样的端口使用的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openstack port set --no-security-group --disable-port-security <id or name of the neutron port>

在那之后,机器就可以到达了。无需重新启动服务器或服务等。

不过,我确实觉得奇怪的是,这个问题只发生在二级网络上。无论是哪种情况,希望这都可以帮助其他人在openstack VM中运行kubernetes。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65920557

复制
相关文章
超硬核图解 Kubernetes 网络
底层网络 Underlay Network 顾名思义是指网络设备基础设施,如交换机,路由器, DWDM 使用网络介质将其链接成的物理网络拓扑,负责网络之间的数据包传输。
公众号: 云原生生态圈
2023/08/23
1.4K0
超硬核图解 Kubernetes 网络
KubeVirt macvtap虚拟机创建过程 自动实验
继续上篇 https://www.backendcloud.cn/2022/06/06/macvtap-lab/ 上篇是纯手动,这篇是借助Kubernetes+KubeVirt自动。
后端云
2022/11/25
2K0
KubeVirt macvtap虚拟机创建过程 自动实验
kuberntes中的redis集群性能调优
上周在kubernetes里发布了一个redis PaaS服务,不过其它同学简单测了一下,虽说功能上没啥问题,但性能相比物理上运行的Redis集群差太远,而且随着redis的分片数增加,性能并不能很好地线性增长,增长到一定程度就停止了,这个是需求方不能接受的,于是本周接了活,对部署在kubernetes中的redis服务进行性能优化。
jeremyxu
2019/07/03
2.7K0
Podman 保姆级使用教程,太顶了!
cockpit-podman 软件包作为 cockpit 插件可集成于 Web UI 中,实现 Web UI 管理容器。
米开朗基杨
2022/04/09
20.8K1
Podman 保姆级使用教程,太顶了!
KubeVirt网络源码分析(3)- 虚拟机热迁移网络
虚拟机热迁移过程中很占用带宽,对网络稳定性要求也较高。为和可以原有的Kubernetes网络互不影响,生产环境最好有一套独立的网络给虚拟机热迁移使用。
后端云
2022/06/09
1.5K0
Hbse启动时节点时间不同步导致节点的HRegionServer不能启动
三个节点时间间隔为3分钟 时间不同步
刘浩的BigDataPath
2021/04/13
6610
Hbse启动时节点时间不同步导致节点的HRegionServer不能启动
Kubernetes自动伸缩101:集群自动伸缩、水平自动伸缩和垂直豆荚自动伸缩
Kubernetes的核心是资源管理和编排工具。可以将第1天操作作为重点来探索和体验它的酷特性来部署、监控和控制你的豆荚。但是,你还需要考虑第2天的操作。你需要关注以下问题:
CNCF
2019/12/04
2.2K0
KubeVirt 探秘:一些核心问题解答
上一篇文章 KubeVirt: 耗时 7 年终将虚拟机带入 Kubernetes 世界 | MoeLove 发布后,我收到了很多留言和讨论。限于篇幅,很多回答都比较简短,我想着还是写篇文章来详细聊聊关于 KubeVirt 的一些问题好了。
Jintao Zhang
2023/09/03
9401
KubeVirt 探秘:一些核心问题解答
Kubernetes 笔记 06 豌豆荚之旅(一)
Pod 中文译为豌豆荚,很形象,豌豆荚里面包裹的多颗小豌豆就是容器,小豌豆和亲密无间的老伙计壳荚子自出生之日起就得面对各种各样的人生大事:
Linux云计算网络
2019/05/25
9120
Kubernetes 笔记 07 豌豆荚之旅(二)
Hi,大家好,我是 CloudDeveloper,欢迎大家和我一起学习 K8S,这是系列第 8 篇。
Linux云计算网络
2019/05/25
7490
K8s网络模型
容器不是模拟一个完整的操作系统,而是对进程进行隔离,对容器里的进程来说它接触到的各种资源都是独享的,比虚拟机启动快、占用资源少。
冬夜先生
2021/09/02
1.9K0
Kubernetes 备忘录:你不能没有的 8 个命令
Kubernetes 是一个由主节点和工作节点组成的容器编排工具。它只允许通过作为控制平面核心组件的 API 服务器进行通信。API 服务器公开了一个 HTTP REST API,允许内部组件(如用户和集群)和外部组件之间的通信。
灵雀云
2022/11/29
1.2K0
Kubernetes 备忘录:你不能没有的 8 个命令
基于K8s的SR-IOV网络实践
在传统的虚拟化中,虚拟机的网卡通常是通过桥接(Bridge或OVS)的方式,因为这种方式最方便,也最简单,但是这样做最大的问题在于性能。本文讲的SR-IOV在2010年左右由Intel提出,但是随着容器技术的推广,intel官方也给出了SR-IOV技术在容器中使用的开源组件,例如:sriov-cni和sriov-device-plugin等,所以SR-IOV也开始在容器领域得到的大量使用。
zouyee
2022/05/25
3.8K1
基于K8s的SR-IOV网络实践
Docker网络模型
host网络类型:容器与宿主机共用网络模式,即容器的IP与宿主机的一样,容器内开通的端口就是占用宿主机同样的端口,包括主机名都是相同的
CoderJed
2021/04/14
5520
Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问
由上图我们可以看到创建的网络ID为4554d78082da ,使用ip addr查看本机网络:
1850810
2021/06/06
16.6K0
Docker 网络模型之 macvlan 详解,图解,实验完整
上一篇文章我们详细介绍了 macvlan 这种技术,macvlan 详解,由于它高效易配置的特性,被用在了 Docker 的网络方案设计中,这篇文章就来说说这个。
Linux云计算网络
2019/05/25
15.6K1
网卡也能虚拟化?网卡虚拟化技术 macvlan 详解
前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。因为 macvlan 这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了 多重影分身之术 ,由一个变多个。
Linux云计算网络
2019/05/25
3.8K0
Docker 网络 host、bridge、macvlan 工作原理
Docker 作为容器的主流平台,不仅仅提供了虚拟化隔离,同时也配备的网络隔离技术,并使用不同的网络驱动满足不同的场景,这篇文章对 Docker 的3种网络实现Host、Bridge、Macvlan进行模拟验证,并在实践中理解背后的基本原理。
我的小碗汤
2020/01/13
3.4K0
Docker 网络 host、bridge、macvlan 工作原理
Kubernetes 中数据包的生命周期 -- 第 2 部分
正如我们在第 1 部分中所讨论的,CNI 插件在 Kubernetes 网络中起着至关重要的作用。当前有许多第三方 CNI 插件可供使用,Calico 便是其中之一。凭借着良好的易用性以及对多种网络架构的支持,Calico 获得了许多工程师的青睐。
Se7en258
2022/06/24
9750
Kubernetes 中数据包的生命周期 -- 第 2 部分
Kubernetes出口网络策略指南
https://www.stackrox.com/post/2020/01/kubernetes-egress-network-policies/
CNCF
2020/02/20
2.1K0
Kubernetes出口网络策略指南

相似问题

Kubernetes没有在可用节点上展开豆荚

23

豆荚上Kubernetes资源记忆的不同单元

16

Kubernetes:列出所有豆荚及其节点

70

在不同的节点上,豆荚之间不相互通信(EKS)

10

Kubernetes在节点上达到100%的CPU,而在豆荚上却没有。

244
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文