当前位置: 首页 > 工具软件 > Network-Opt > 使用案例 >

kubelet配置cni插件_kubernetes calico-network

顾俊誉
2023-12-01

要求:

1.已存在的k8s集群版本大于v1.1,想要使用NetworkPolicy,需要大于v1.3.0

2.可以被所有节点访问的etcd集群(可以和k8s共享etcd集群,但是最好建立一个独立的集群)

calico组件:

整合ks8/calico一共有三个组件:

1.每个节点运行一个calico/node容器;包含了calico路由必须的bgp客户端

2.calico-cni网络插件的二进制文件(这是两个二进制可执行文件和配置文件的组合);直接与kubelet集成,运行在每节点从而发现被创建的容器,添加容器到calico网络

3.如果想要使用NetworkPolicy,需要安装Calico policy controller;实现了NetworkPolicy.

安装calico组件:

两种方式安装:

1.手动安装

2.kubernetes-hosted安装(1.4以上版本)

手动安装

1.运行 calico/node 并且配置节点

master节点和每个node节点需要calico/node容器,每个节点也记录在calico的数据存储中(etcd)

可以使用calicoctl命令完成

# Download and install `calicoctl`

sudo chmod +x calicoctl

# Run the calico/node container

sudo ETCD_ENDPOINTS=http://: ./calicoctl node

查看calicoctl_node文档获取更多信息

systemd单元文件示例(calico-node.service)

如果使用systemd作为初始化系统,接下来的服务文件可以被使用:

[Unit]

Description=calicoctl node

After=docker.service

Requires=docker.service

[Service]

User=root

Environment=ETCD_ENDPOINTS=http://:

PermissionsStartOnly=true

ExecStartPre=/usr/bin/chmod +x /opt/bin/calicoctl

ExecStart=/opt/bin/calicoctl node --detach=false

Restart=always

RestartSec=10

[Install]

WantedBy=multi-user.target

替换:为你自己的配置

2.下载配置你的calico cni插件

k8s kubelet组件调用calico和calico-ipam插件

下载二进制文件,确保可被执行

推荐作为kubelet工作过程的一部分

calico cni插件需要一个标准的cni配置文件,policy部分只有当你为networkpolicy部署calico/kube-policy-controller时被需要

mkdir -p /etc/cni/net.d

cat >/etc/cni/net.d/10-calico.conf <

{

"name": "calico-k8s-network",

"type": "calico",

"etcd_endpoints": "http://:",

"log_level": "info",

"ipam": {

"type": "calico-ipam"

},

"policy": {

"type": "k8s"

}

}

EOF

替换:为你自己的配置

查看配置指南获取更多关于calico cni的信息

3.部署calico网络控制器

calico/kube-policy-controller实现了k8s networkpolicy api通过k8s api监听pod,namespace,networkpolicy事件从而做出对应的时间相应,通过rs运行为一个单独的pod

安装policy controller:

修改配置项

安装kubectl

$ kubectl create -f policy-controller.yaml

一段时间后,你应该可以看到policy controller已经处于运行状态

$ kubectl get pods --namespace=kube-system

NAME                                     READY     STATUS    RESTARTS   AGE

calico-policy-controller                 2/2       Running   0          1m

kubernetes-hosted安装

使用k8s安装calico的方式只使用于v1.4.0以上版本,目前处于试验阶段

在使用k8s安装calico的方式之前,你必须有一个标准的使用cni网络的k8s集群,有很多方式实现,不过在这里我们不会都覆盖,必须满足安装calico需要的配置

下载calico self-hosted mainifest文件,calico.yaml

编辑configmap用于配置calico的deployment,然后通过k8s安装mainifest

kubectl create -f calico.yaml

在kube-system namespace中你可以看到calico服务启动

查看 self-hosted文档获取更多信息

配置k8s

1.配置kubelet

需要配置kubelet 让pod启动时使用calico网络插件,kubelet可以配置使用calico在启动时配置参数:

--network-plugin=cni

--network-plugin-dir=/etc/cni/net.d

kubelet.service单元配置文件示例:

[Unit]

Description=Kubernetes Kubelet

After=calico-node.service

Requires=calico-node.service

[Service]

ExecStartPre=/usr/bin/chmod +x /opt/bin/kubelet

ExecStartPre=/usr/bin/chmod +x /opt/cni/bin/calico

ExecStartPre=/usr/bin/chmod +x /opt/cni/bin/calico-ipam

ExecStart=/opt/bin/kubelet \

--address=0.0.0.0 \

--allow-privileged=true \

--cluster-dns=10.100.0.10 \

--cluster-domain=cluster.local \

--config=/etc/kubernetes/manifests \

--hostname-override=$private_ipv4 \

--api-servers=http://:8080 \

--network-plugin-dir=/etc/cni/net.d \

--network-plugin=cni \

--logtostderr=true

Restart=always

RestartSec=10

[Install]

WantedBy=multi-user.target

确保kubelet和calico插件二进制文件存在

配置kube-proxy

为了使calico policy与k8s结合,kube-peoxy成员必须配置脱离自身绑定网卡源地址(nat转发),在v1.1.0被支持,v1.2.0作为默认启动模式

强烈建议使用最新文档版本,若为旧版本有两种方式启用:

1.--proxy-mode=iptables

 类似资料: