kubernetes cni网络插件(kubernetes cni安装详解)
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,由开发人员进行维护。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!