加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

Kubernetes 集群网络从懵圈到熟悉

发布时间:2021-04-18 15:14:50 所属栏目:评论 来源:互联网
导读:Kubernetes 中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则: Pod 无论运行在任何节点都可以互相直接通信,而不需要借助NAT地址转换实现。 N

Kubernetes 中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则:

  • Pod 无论运行在任何节点都可以互相直接通信,而不需要借助NAT地址转换实现。
  • Node 与 Pod 可以互相通信,在不限制的前提下,Pod 可以访问任意网络。
  • Pod 拥有独立的网络栈,Pod 看到自己的地址和外部看见的地址应该是一样的,并且同个 Pod 内所有的容器共享同个网络栈。

容器网络基础

一个 Linux 容器的网络栈是被隔离在它自己的 Network Namespace 中,Network Namespace 包括了:网卡(Network Interface),回环设备(Lookback Device),路由表(Routing Table)和 iptables 规则,对于服务进程来讲这些就构建了它发起请求和相应的基本环境。而要实现一个容器网络,离不开以下Linux网络功能:

  • 网络命名空间:将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信
  • Veth Pair:Veth设备对的引入是为了实现在不同网络命名空间的通信,总是以两张虚拟网卡(veth peer)的形式成对出现的。并且,从其中一端发出的数据,总是能在另外一端收到
  • Iptables/Netfilter:Netfilter负责在内核中执行各种挂接的规则(过滤、修改、丢弃等),运行在内核中;Iptables模式是在用户模式下运行的进程,负责协助维护内核中Netfilter的各种规则表;通过二者的配合来实现整个Linux网络协议栈中灵活的数据包处理机制
  • 网桥:网桥是一个二层网络虚拟设备,类似交换机,主要功能是通过学习而来的Mac地址将数据帧转发到网桥的不同端口上
  • 路由: Linux系统包含一个完整的路由功能,当IP层在处理数据发送或转发的时候,会使用路由表来决定发往哪里

基于以上的基础,同宿主机的容器时间如何通信呢?

我们可以简单把他们理解成两台主机,主机之间通过网线连接起来,如果要多台主机通信,我们通过交换机就可以实现彼此互通,在linux中,我们可以通过网桥来转发数据。

在容器中,以上的实现是通过docker0网桥,凡是连接到docker0的容器,就可以通过它来进行通信。要想容器能够连接到docker0网桥,我们也需要类似网线的虚拟设备Veth Pair来把容器连接到网桥上。

我们启动一个容器:

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读