Skip to content

Commit c13bdf0

Browse files
author
QIU Jian
committed
fix: host local network intro
1 parent 186649f commit c13bdf0

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
sidebar_position: 40
3+
---
4+
5+
# HostLocal网络
6+
7+
从4.0版本开始,{{Cloudpods}}支持了一种特殊的经典网络模式:host_local(宿主机本地网络)。这种模式专门为容器主机设计,在宿主机上实现了一个本地的网络环境,仅在宿主机内可见。
8+
9+
## 1. 实现效果
10+
11+
容器主机使用host_local网络实现如下效果:
12+
* *网络隔离* 容器内可以分配一个独立的IP地址,但容器之间无法互相访问该IP地址,容器内只能通过该IP地址访问外部网络或者被外部网络访问
13+
* *访问外部网络* 容器访问外部网络时,自动在宿主机上进行SNAT,使用宿主机的IP地址访问外部网络
14+
* *暴露服务端口* 可以配置host_local网卡的port_mapping规则,将宿主机上的TCP或UDP端口映射到容器主机内的指定端口,外部网络通过访问宿主机的指定端口实现主动访问容器主机内的对应端口
15+
16+
## 2. 工作原理
17+
18+
host_local类型的IP子网配置在二层网络上,宿主机上host服务启动时,会拉取本宿主机所对接的二层网络的所有host_local IP子网,并将这些IP子网的网关配置在对应二层网络的网桥设备上。同时,配置openvswitch流表,实现:(1)阻止容器网络内节点之间互相访问;(2)实现容器访问外网的SNAT规则;(3)配置端口映射规则,实现外部访问宿主机端口并转发到容器内端口的DNAT规则。
19+
20+
## 3. 配置方法
21+
22+
### 配置 host_local IP子网
23+
24+
新建host_local类型的经典网络IP子网,需要选择对应宿主机对接的二层网络。
25+
26+
### 重启host服务
27+
28+
配置了新的host_local IP子网后,需要重启该子网对应二层网络对接的宿主机上的host服务。服务启动时,会自动拉取host local子网的配置信息,将host_local的网关IP地址配置在二层网络对应的网桥上。
29+
30+
### 配置port_mapping
31+
32+
如果需要从外部网络访问容器内服务端口,可以给容器的虚拟网卡配置端口映射规则,命令如下:
33+
34+
```
35+
climc server-network-update --port-mapping <PORT_MAPPING_RULE> <SID> <NID>
36+
```
37+
38+
其中,PORT_MAPPING_RULE支持规则字段如下:
39+
40+
| 字段 | 说明 | 是否可选 |
41+
|-----------------|----------------------------------------------------------------|------|
42+
| port | 容器内服务端口 | 必填 |
43+
| protocol | 端口协议,tcp或者udp | 必填 |
44+
| host_port | 对应的宿主机端口 | 必填 |
45+
| host_port_range | 如果不指定host_port,则从host_port_range中自动选择一个可用的随机端口, | 可选 |
46+
| | 不指定则默认为20000-25000 | 可选 |
47+
| remote_ips | 访问该端口的白名单列表,多个用 \| 隔开。不指定则无限制。 | 可选 |
48+
49+
一个网卡允许指定多个port_mapping规则
50+
51+
### 配置安全组
52+
53+
容器主机默认可以访问任意的外部网络,包括宿主机的IP地址,云平台内的其他虚拟机的IP地址。为了组织容器访问这些基础设施IP地址,可以设置容器主机的安全组。

0 commit comments

Comments
 (0)