kubectl 安装 CNI
时间: 2023-11-03 14:58:15 浏览: 110
要在 Kubernetes 集群上安装 CNI,可以按照以下步骤操作:
1. 下载 CNI 插件二进制文件
可以从 CNI Github 仓库下载 CNI 插件二进制文件:https://github.com/containernetworking/plugins/releases
选择最新版本的 tar.gz 压缩包下载,解压后得到一个包含多个二进制文件的目录。
2. 将 CNI 插件二进制文件复制到 Kubernetes 节点
将解压后的 CNI 插件二进制文件复制到 Kubernetes 节点中的 `/opt/cni/bin/` 目录下。如果该目录不存在,则需要先创建。
例如,使用以下命令将二进制文件复制到所有 Kubernetes 节点:
```
$ sudo mkdir -p /opt/cni/bin/
$ sudo tar -C /opt/cni/bin/ -xzf <path-to-cni-tar.gz>
```
3. 配置 CNI 插件
创建一个 CNI 配置文件,例如 `10-mynet.conf`,并将其保存到 `/etc/cni/net.d/` 目录下。该文件应指定要使用的 CNI 插件及其配置参数。
以下是一个简单的 `10-mynet.conf` 配置文件示例:
```
{
"cniVersion": "0.4.0",
"name": "mynet",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "10.1.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
```
该配置文件使用 `bridge` 类型的 CNI 插件创建一个名为 `cni0` 的网桥,并在其中分配 IP 地址。该网桥将作为容器的默认网关,并启用 IP 地址伪装。
4. 测试 CNI 插件
可以使用 `cnitool` 工具测试 CNI 插件是否正确安装和配置。例如,使用以下命令测试 `bridge` 类型的 CNI 插件:
```
$ cnitool add mynet <path-to-10-mynet.conf>
```
该命令应该不会出现错误,并返回一个 JSON 格式的网络配置。
5. 将 CNI 插件配置添加到 kubelet
最后,需要在 Kubernetes 集群中的每个节点上配置 kubelet,以使用 CNI 插件。可以通过修改 kubelet 的启动参数,将 `--network-plugin=cni` 与 `--cni-conf-dir=/etc/cni/net.d` 参数一起传递。
例如,在 systemd 中,可以编辑 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 文件,将以下行添加到 `[Service]` 部分中:
```
Environment="KUBELET_NETWORK_PLUGIN=cni"
Environment="KUBELET_CNI_CONF_DIR=/etc/cni/net.d"
```
然后重启 kubelet 服务:
```
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
```
完成上述步骤后,CNI 插件应该已经成功安装和配置,并可以用于 Kubernetes 集群中的容器网络。
阅读全文