036.集群网络-K8S网络模型及Linux基础网络
一 Kubernetes网络模型概述
1.1 Kubernetes网络模型
- 主要区别是后者的动态端口映射会引入端口管理的复杂性,而且访问者看到的IP地址和端口与服务提供者实际绑定的不同(因为NAT的缘故,它们都被映射成新的地址或端口了),这也会引起应用配置的复杂化。
- 同时,标准的DNS等名字解析服务也不适用了,甚至服务注册和发现机制都比较复杂,因为在端口映射情况下,服务自身很难知道自己对外暴露的真实的服务IP和端口,外部应用也无法通过服务所在容器的私有IP地址和端口来访问服务。
- 所有容器都可以在不用NAT的方式下同别的容器通信。
- 所有节点都可以在不用NAT的方式下同所有容器通信,反之亦然。
- 容器的地址和别人看到的地址是同一个地址。
二 Docker网络基础
2.1 网络命名空间
- 网络命名空间的实现


资源
|
含义
|
uts_ns
|
UTS为Unix Timessharing System的简称,包含内存名称、脚本、版本、底层体系结构等信息。
|
ipc_ns
|
所有与进程通信(IPC)有关的信心。
|
nmt_ns
|
当前装载的文件系统。
|
pid_ns
|
有关进程ID的信息。
|
user_ns
|
资源配额的信息。
|
net_ns
|
网络信息。
|
- 网络命名空间操作
1 [root@k8smaster01 ~]# ip netns add mytestns #创建命名空间
2 [root@k8smaster01 ~]# ip netns exec mytestns <command> #进入命名空间bash
3 [root@k8smaster01 ~]# ip netns exec mytestns bash #进入命名空间bash
4 [root@k8smaster01 ~]# exit #退出命名空间
5 [root@k8smaster01 ~]# ip link set <device> netns mytestns #转移设备
2.2 Veth设备对

- veth pair操作
1 [root@k8smaster01 ~]# ip link add veth0 type veth peer name veth1 #创建veth设备对
2 [root@k8smaster01 ~]# ip link show | grep veth #当前查看veth
3 [root@k8smaster01 ~]# ip netns add ns0
4 [root@k8smaster01 ~]# ip netns add ns1 #创建命名空间
5 [root@k8smaster01 ~]# ip link set veth0 netns ns0
6 [root@k8smaster01 ~]# ip link set veth1 netns ns1 #veth移入命名空间
7 [root@k8smaster01 ~]# ip netns exec ns0 ip link show #进入命名空间查看veth
8 [root@k8smaster01 ~]# ip netns exec ns0 ip addr add local 192.168.10.1/24 dev veth0
9 [root@k8smaster01 ~]# ip netns exec ns1 ip addr add local 192.168.10.2/24 dev veth1 #设置对应的IP
10 [root@k8smaster01 ~]# ip netns exec ns0 ifconfig veth0 up
11 [root@k8smaster01 ~]# ip netns exec ns1 ifconfig veth1 up #开启设备
12 [root@k8smaster01 ~]# ip netns exec ns0 ping 192.168.10.2 #连通性测试

1 [root@k8smaster01 ~]# ip netns exec ns0 ethtool -S veth0
2 NIC statistics:
3 peer_ifindex: 9
4 [root@k8smaster01 ~]# ip netns exec ns1 ip link | grep 9
2.3 网桥
- Linux网桥的实现

- 网桥的常用操作命令


1 [root@k8smaster01 ~]# ip link add tap1 type veth peer name tap1_peer
2 [root@k8smaster01 ~]# ip link add tap2 type veth peer name tap2_peer
3 [root@k8smaster01 ~]# ip link add tap3 type veth peer name tap3_peer
4 [root@k8smaster01 ~]# ip link add tap4 type veth peer name tap4_peer
5 #创建veth pair
6 [root@k8smaster01 ~]# ip netns add ns1
7 [root@k8smaster01 ~]# ip netns add ns2
8 [root@k8smaster01 ~]# ip netns add ns3
9 [root@k8smaster01 ~]# ip netns add ns4
10 #创建namespace
11 [root@k8smaster01 ~]# ip link set tap1 netns ns1
12 [root@k8smaster01 ~]# ip link set tap2 netns ns2
13 [root@k8smaster01 ~]# ip link set tap3 netns ns3
14 [root@k8smaster01 ~]# ip link set tap4 netns ns4
15 #tap和namespace关联
16 [root@k8smaster01 ~]# brctl addbr br1 #创建桥
17 [root@k8smaster01 ~]# brctl addif br1 tap1_peer
18 [root@k8smaster01 ~]# brctl addif br1 tap2_peer
19 [root@k8smaster01 ~]# brctl addif br1 tap3_peer
20 [root@k8smaster01 ~]# brctl addif br1 tap4_peer
21 #把相应的tap添加至bright中
22 [root@k8smaster01 ~]# ip netns exec ns1 ip addr add local 192.168.20.1/24 dev tap1
23 [root@k8smaster01 ~]# ip netns exec ns2 ip addr add local 192.168.20.2/24 dev tap2
24 [root@k8smaster01 ~]# ip netns exec ns3 ip addr add local 192.168.20.3/24 dev tap3
25 [root@k8smaster01 ~]# ip netns exec ns4 ip addr add local 192.168.20.4/24 dev tap4
26 #配置相应IP地址
27 [root@k8smaster01 ~]# ip link set br1 up
28 [root@k8smaster01 ~]# ip link set tap1_peer up
29 [root@k8smaster01 ~]# ip link set tap2_peer up
30 [root@k8smaster01 ~]# ip link set tap3_peer up
31 [root@k8smaster01 ~]# ip link set tap4_peer up
32 [root@k8smaster01 ~]# ip netns exec ns1 ip link set tap1 up
33 [root@k8smaster01 ~]# ip netns exec ns2 ip link set tap2 up
34 [root@k8smaster01 ~]# ip netns exec ns3 ip link set tap3 up
35 [root@k8smaster01 ~]# ip netns exec ns4 ip link set tap4 up
36 #将bright和tap设置为up
37 [root@k8smaster01 ~]# ip netns exec ns1 ping 192.168.20.2 #互ping

2.4 iptables和Netfilter
- iptables规则
- filter:实现防火墙功能;
- nat:实现NAT功能;
- mangle:实现流量整形。
- iptables-save: 按照命令的方式打印iptables的内容。
- iptables-vnL: 以另一种格式显示Netfilter表的内容。
- Netfilter规则


- PREROUTING:报文进入网络接口尚未进入路由之前的时刻;
- INPUT:路由判断是本机接收的报文,准备从内核空间进入到用户空间的时刻;
- FORWARD:路由判断不是本机接收的报文,需要路由转发,路由转发的那个时刻;
- OUTPUT:本机报文需要发出去 经过路由判断选择好端口以后,准备发送的那一刻 ;
- POSTROUTING:FORWARD/OUTPUT 已经完成,报文即将出网络接口的那一刻 。
表名
|
时刻点
|
mangle
|
PREROUTING, INPUT, FORWARD, OUTPUT
|
nat
|
PREROUTING, OUTPUT, POSTROUTING
|
filter
|
INPUT, FORWARD, OUTPUT
|
2.5 路由
- 目的IP地址:此字段表示目标的IP地址。这个IP地址可以是某主机的地址,也可以是一个网络地址。如果这个条目包含的是一个主机地址,那么它的主机ID将被标记为非零;如果这个条目包含的是一个网络地址,那么它的主机ID将被标记为零。
- 下一跳路由器的IP地址:若并非最终目的的路由器,则该条目给出的下一个路由器的地址用来转发在相应接口接收到的IP数据报文。
- 标志:这个字段提供了另一组重要信息,例如,目的IP地址是一个主机地址还是一个网络地址。此外,从标志中可以得知下一个路由器是一个真实路由器还是一个直接相连的接口。
- 网络接口规范:为一些数据报文的网络接口规范,该规范将与报文一起被转发。
- 路由表的创建

- 路由表的查看

036.集群网络-K8S网络模型及Linux基础网络的更多相关文章
- Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)
大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...
- Linux基础网络配置
目录 Linux基础网络配置 参考 IP配置 Route配置 DNS指向 ss命令 *网络排查工具 Linux基础网络配置
- 038.集群网络-K8S网络实现
一 Kubernetes网络实现 1.1 Kubernetes网络优势 在实际的业务场景中,业务组件之间的关系十分复杂,微服务的理念更是让应用部署的粒度更加细小和灵活.为了支持业务应用组件的通信,Ku ...
- 040.集群网络-CNI网络模型
一 CNM网络模型 1.1 网络模型 生产环境中,跨主机容器间的网络互通已经成为基本要求,更高的要求包括容器固定IP地址.一个容器多个IP地址.多个子网隔离.ACL控制策略.与SDN集成等.目前主流的 ...
- 041.Kubernetes集群网络-K8S网络策略
一 Kubernetes网络策略 1.1 策略说明 为实现细粒度的容器间网络访问隔离策略,Kubernetes发布Network Policy,目前已升级为networking.k8s.io/v1稳定 ...
- Linux 基础网络设置
一.查看以及测试网络 查看及测试网络配置是管理Linux网络服务的第一步,本节将学习Linux系统中的网络查看以及测试命令.其中讲解的大多数命令以普通用户权限就可以完成操作,但是普通用户在执行&quo ...
- Linux基础: 网络命令和进程管理
netstat lsof ps pstree pkill/kill (了解jenkins git,排查环境) 查询服务器之间是否有链接(netstat -an) 某个服务是否启动(了解服务对应的 ...
- Linux基础网络设置
查看Linux网络参数 ifconfig—-查看网络接口 > [root@localhost ~]# ifconfig eth1 Link encap:Ethernet HWaddr 00:0C ...
- Linux基础网络搭建实验
一.实验目标 利用3台虚拟机,搭建vmnet2和vmnet3两个host-only网络,实现两个网络的互联 二.实验环境 内网 外网 网关 IP 192.168.0.10/24 202.3.4.1 ...
随机推荐
- overflow属性的应用
在使用JQueryUI chosen插件的时候,由于页面布局的原因,下拉列表框超出div范围,图形效果严重变形,一点解决的思路都没有,最后请教公司前端,瞬间解决,原来使用CSS 中的overflow属 ...
- 关于unicode汉字范围正则表达式的写法
\u2E80-\u2EFF:CJK部首补充: \u2F00-\u2FDF:康熙部首: \u3000-\u303F:CJK标点符号: \u31C0-\u31EF:CJK笔划: \u3200-\u32FF ...
- MariaDB 外键
drop database literatureDB; create database literatureDB; use literatureDB; # 类型表 create table `type ...
- Service层在MVC框架中的意义和职责
https://blog.csdn.net/u012562943/article/details/53462157 mvc框架由model,view,controller组成,执行流程一般是:在con ...
- 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子
1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...
- log4j不输出日志错误分析
1.rootLogger不输出 代码如下: 配置文件代码: log4j.rootLogger=info, R,userLog log4j.appender.R=org.apache.log4j.Rol ...
- [转载] 自定义标签,jsp调用java类
自己懒得做笔记,借用一下. 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于taglib中的<tag>的基本功能已经介绍完毕了,在taglib中我们发现有一个标签叫做< ...
- 使用pandas,numpy进行数据分析建模的一些常用命令
1.读取文件为pandas格式: import pandas as pd import numpy as np dataset = pd.read_csv("C:/Users/Adminis ...
- zookeeper ACL(access control lists)权限控制
基本作用: 针对节点可以设置 相关读写等权限,目的为了保障数据安全性 权限permissions可以制定不同的权限范围以及角色 一:ACL构成 zk的acl ...
- 苹果又要召回iPhone 7!这到底是要闹哪样?
7!这到底是要闹哪样?" title="苹果又要召回iPhone 7!这到底是要闹哪样?"> 现在的苹果虽然刚刚收获了史上最赚钱的一个季度--营收和利润均创下史上最 ...