kubernetes cni网络插件(kubernetes cni安装详解)

作者 : 慕源网 本文共2498个字,预计阅读时间需要7分钟 发布时间: 2023-02-28 共1.47K人阅读

Kubernetes使用CNI(容器网络接口)来实现网络连接。CNI是一种插件,可以安装在Kubernetes中,可以帮助我们实现高可用性、高吞吐量、最小网络抖动和低延迟等目标。通过安装CNI插件,Kubernetes Pod可以拥有与它们所在的VPC网络相同的IP地址,并控制为Pod启动分配IP地址和ENI。简而言之,CNI插件允许我们将任何网络接口插入容器命名空间中,并允许我们编辑主机,然后分配一个IP地址给网络接口。在接下来的教程部分,我们将更详细地介绍Kubernetes CNI的内部工作原理和设置,以便初学者更好地理解。

在之前的讨论中,我们已经了解了CNI如何在Kubernetes中实现网络连接。在本节中,我们将了解如何使用它以及使用它的重要性。让我们开始吧。

1)在Kubernetes中,网络连接是一个核心部分,因此我们需要了解它的工作原理,尽管它相当复杂。在网络连接期间,我们可能会遇到不同类型的问题,其中包括以下四个:

a)外部到服务

b)Pod到Pod

c)高度耦合

d)Pod到服务

因此,我们需要确保应用程序可以共享计算机,并确保两个应用程序不会尝试使用相同的端口。以上是在Kubernetes中实现网络模型时可能遇到的问题。因此,我们现在将看到如何在Kubernetes中实现它,我们有不同的方法可供选择,其中之一是CNI。让我们试着了解如何使用它。

1)Azure CNI:我们可以使用Azure CNI,这是一个开源的插件,可以帮助我们将Kubernetes pods集成到虚拟网络(VNet)中。现在,Pod可以访问Azure服务,其中一些服务可以通过私有链接或服务端点进行保护。我们还可以使用安全策略、路由等功能,来过滤Kubernetes中的Pod流量。该插件帮助我们为Pod分配一个预配置在Kubernetes节点上的IP地址。

通过这种方式,我们可以使用Azure CNI插件。我们还有其他可选插件,但这里我们主要讨论了Azure CNI。在接下来的部分中,我们将查看其他可用选项,但所有这些选项都是开源插件,用于在Kubernetes中启用网络连接。

以下是关于CNI的支持内容:

支持 HostPort:如果我们想要启用 HostPort,则必须在“cni-conf-dir”内添加“portMappings capability”属性。

支持流量整形:如果我们想要启用此功能,必须将一个名为“bandwidth”的额外插件添加到CNI配置中。

kubernetes cni安装和Kubernetes CNI示例

在本节中,我们将主要了解如何在Kubernetes中安装CNI,它使Kubernetes能够与网络提供商(如Calico)进行交互,因此我们必须在Kubernetes集群中的每个节点上安装此插件。为此,我们可能需要配置和一些账户等,让我们详细讨论以下安装过程:

1)CNI插件在创建Pod时会尝试与Kubernetes API进行交互,以获取有关Pod的其他信息和存储的信息。

2)首先,我们将在Kubernetes主节点上创建CNI密钥,以便能够对CNI插件进行身份验证和证书签名请求。以下是创建密钥的配置:

3)要在主节点上创建密钥,请按照以下说明操作:

openssl req -newkey rsa:4096 \
-keyout cni.key \
-nodes \
-out cni.csr \
-subj "/CN=calico-cni"

4)为了认证和签署证书,我们将使用以下一组配置;

sudo openssl x509 -req -in cni.csr \
-CA /etc/kubernetes/pki/ca.crt \
-CAkey /etc/kubernetes/pki/ca.key \
-CAcreateserial \
-out cni.crt \
-days 365
sudo chown ubuntu:ubuntu cni.crt

现在我们需要创建 kubeconfig 文件,该文件将允许我们的 CNI 插件访问 Kubernetes。请按照以下说明进行操作

6)将其命名为 cni.kubeconfig 文件,并记住我们必须在 Kubernetes 集群上的每个节点上执行此操作并复制此文件。我们正在为 Kubernetes 的主节点执行此操作。

现在我们将在每个节点上安装插件,请按照以下步骤进行操作;

1)运行以下 root 命令;

- sudo su

2)尝试从以下网址安装 CNI 插件二进制文件,我们将在此运行一组标准的命令,这是从官方网站参考的:

例如:

curl -L -o /opt/cni/bin/calico https://github.com/projectcalico/cni-plugin/releases/download/v3.14.0/calico-amd64
chmod 755 /opt/cni/bin/calico
curl -L -o /opt/cni/bin/calico-ipam https://github.com/projectcalico/cni-plugin/releases/download/v3.14.0/calico-ipam-amd64
chmod 755 /opt/cni/bin/calico-ipam

3)一旦插件通过上述命令安装,我们将尝试创建配置目录以进一步操作;

例如:

mkdir -p /etc/cni/net.d/

4)现在我们将尝试将所有kubeconfig文件复制到该目录中,为此在命令提示符中运行’cp’命令。

5)现在我们需要编写CNI配置。

6)所有步骤都完成后退出root用户,再次回到登录用户。

7)在这一步骤中,我们将安装CNI并准备好Kubernetes,因为Kubernetes包含网络提供程序,可以通过运行以下命令来查看:

例如:

kubectl get nodes

以下是 CNI 的几个特点:

1)高可用性

2)低延迟

3)高吞吐量

4)最小网络抖动

结论:

通过使用 CNI,我们在文章中看到了它的各种功能,它可以使 Kubernetes 具有网络功能,这非常重要。kubernetes cni插件容易安装,为每个节点创建 CNI,由开发人员进行维护。


慕源网 » kubernetes cni网络插件(kubernetes cni安装详解)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录