English | 中文
Dockin运维管理系统是安全的运维管理服务,优化exec执行性能、支持命令权限管理、支持场景运维编排。
更多Dockin组件请访问 https://github.com/WeBankFinTech/Dockin
dockin cni 与资源管理模块(RM)进行交互,共同来管理容器网络,当前支持:
以下为运行dockin cni的需要组件
cni配置文件需要放置到/etc/cni/net.d
下(kubelet使用的默认配置路径。如果重定向了配置路径,请将配置文件放置到kubelet使用的路径。
配置文件的命名可以参考00-dockin-cni.json
这样的命名方式
配置文件内容示例:
{
"cniVersion": "0.2.0",
"name": "dockin-cni",
"type": "dockin-cni",
"confDir": "/etc/cni/dockin/net.d",
"binDir": "/opt/cni/bin",
"logFile": "/data/kubernetes/dockin-cni.log",
"logLevel": "debug",
"backend": "http://localhost:10002/rmController/getPodMultiNetwork"
}
参数描述如下:
这里同样需要创建配置network相关的配置文件。
首先,您需要有一个web服务器提供webhook,用于获取pod的网络信息(包括单/双网卡),该web服务需要实现一个带有podName
url参数的API。比如:
<IP>:<port>/<URL>?podName=
这里的话,可以使用Dockin-RM作为例子。可以使用curl
命令来访问rm的以下API:
curl 127.0.0.1:10002/rmController/getPodMultiNetwork?podName=<your_pod_name>
如果没有出现错误的话,您将会得到如下格式的响应:
{
"code": 0,
"reqId": "1234",
"message": "success",
"data": [
{
"type": "test",
"podIp": "192.168.1.2",
"subnetMask": "255.255.255.0",
"gateway": "192.168.1.1",
"ifName": "eth0",
"master": true
},
{
"type": "dockin",
"podIp": "192.168.2.2",
"subnetMask": "255.255.255.0",
"gateway": "192.168.1.1",
"ifName": "net0",
"master": false
}
]
}
其中:
这里我们需要关注的是其中type
字段. 在这个例子中,一共有两个类型: test
和 dockin
network 配置通过网桥进行管理,更多细节可参考以下链接:
https://github.com/containernetworking/plugins/tree/master/plugins/main/bridge
网络配置通过json文件进行存储,存放在confDir
中(在cni配置中),并且将会传给kubelet创建网络。
{
"cniVersion": "0.2.0",
"name": "dockin",
"type": "bridge",
"bridge": "br1"
}
上面对配置的内容做了简单介绍,现在来创建network配置文件.
目录的路径可以从前面的cni配置文件中的confDir
找到
mkdir -p /etc/cni/dockin/net.d
在上面的例子中,我们需要创建两个network配置文件
1.为类型test
创建配置文件
touch /etc/cni/dockin/net.d/test.json
配置文件内容:
{
"cniVersion": "0.2.0",
"name": "test", // type
"type": "bridge",
"bridge": "br0"
}
2.为类型dockin
创建配置文件
touch /etc/cni/dockin/net.d/dockin.json
配置文件内容:
{
"cniVersion": "0.2.0",
"name": "dockin", // type
"type": "bridge",
"bridge": "br0"
}
binDir
中你可以使用make
命令完成dockin-cni
和dockin-ipam
的编译,然后将两个可执行文件放到cni配置文件中binDir
指向的路径。通常情况下,cni的bin目录为/opt/cni/bin
。
静态IPAM插件用来为容器分配静态IP地址(IPv4/IPv6),使用与需要为容器分配静态IP的场景(即重启或kill之后ip地址保持不变)
static IPAM is very simple IPAM plugin that assigns IPv4 and IPv6 addresses statically to container. This will be useful in debugging purpose and in case of assign same IP address in different vlan/vxlan to containers.
{
"ipam": {
"type": "static",
"addresses": [
{
"address": "192.168.0.1/24",
"gateway": "192.168.0.254"
},
{
"address": "3ffe:ffff:0:01ff::1/64",
"gateway": "3ffe:ffff:0::1"
}
],
"routes": [
{ "dst": "0.0.0.0/0" },
{ "dst": "192.168.0.0/16", "gw": "192.168.1.1" },
{ "dst": "3ffe:ffff:0:01ff::1/64" }
],
"dns": {
"nameservers" : ["8.8.8.8"],
"domain": "example.com",
"search": [ "example.com" ]
}
}
}
type
(string, 必须): "static"addresses
(array, 可选): ip地址对象数组:
address
(string, 必须): 以CIDR表示的ip地址.gateway
(string, 可选): 执行子网内的ip作为网管.routes
(string, 可选): 需要加载到容器命名空间的路由列表。每条路由信息都是有dst及gw(可选)字段构成的字典,如果设置了gw字段,“gateway”标签对应的值将会被使用.dns
(string, 可选): 由"nameservers", "domain" 及 "search"构成的映射表.支持以下CNI参数 CNI_ARGS:
IP
: 需要指定一个以CIDR表示法表示的ip地址,用逗号进行分割
GATEWAY
: 需要指定一个网关地址
(示例: CNI_ARGS="IP=192.168.1.1/24;GATEWAY=192.168.1.254")
同时插件支持能力参数 capability argument.
ips
: 为CNI接口传入多个ip地址支持以下既定参数 args conventions :
ips
(字符串数组): 用于尝试分配ip的自定义ip列表 (e.g. '192.168.1.1/24')注意: 如果以上某些参数同时使用,将会通过以下的优先级选择其中一个进行生效
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。