Kubernetes CNI Calico:Kubernetes使用calico固定pod ip

本文介绍了如何在Kubernetes集群中使用Calico网络插件,包括设置单个Pod的固定IP地址以及从IP池动态获取IP。步骤包括检查CalicoIPAM配置、使用cni.projectcalico.org/ipAddrs注解固定IP和cni.projectcalico.org/ipv4pools注解从ippool获取IP。
摘要由CSDN通过智能技术生成

colico官网参考
主要涉及两个注解:
1、cni.projectcalico.org/ipAddrs #单个pod ip固定
2、cni.projectcalico.org/ipv4pools #从指定ippool获取

一、检查Calico IPAM

如果 IPAM 设置为其他值,或者 10-calico.conflist 文件不存在,则无法在集群中使用这些功能
cat /etc/cni/net.d/10-calico.conflist

"ipam": {
              "type": "calico-ipam"
          },

二、设置pod单个固定ip

注解 cni.projectcalico.org/ipAddrs,注意双引号和转义 \ 不要少

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1 
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        "cni.projectcalico.org/ipAddrs": "[\"10.244.126.10\"]"  #表示固定单个pod ip
    spec:
      containers:
      - name: nginx
        image: nginx

三、从ippool获取ip

calico官网ippoll详解
calicoctl官网
需要安装 calicoctl 工具。
安装calicoctl参考连接
在这里插入图片描述

vi ippool1.yaml

apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: ippool-1
spec:
  cidr: 10.243.19.0/24
  ipipMode: Always
  natOutgoing: true
  nodeSelector: rack == "1"

calicoctl create -f ippool.yaml
calicoctl get ippool -o wide #查看ippool

vi nginx.yaml

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1 
  template:
    metadata:
      labels:
        app: nginx
      annotations:
       # "cni.projectcalico.org/ipAddrs": "[\"10.243.19.10\"]"  #表示固定单个pod ip
        "cni.projectcalico.org/ipv4pools": "[\"ippool-1\"]" 
    spec:
      nodeName: "k8s-node1"
      containers:
      - name: nginx
        image: nginx

kubectl get pods -o wide #查看IP分配情况
在这里插入图片描述

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes CNI(Container Networking Interface)模型是Kubernetes中用于管理容器网络的一种标准化插件接口。它定义了容器运行时和网络插件之间的通信协议和规范,使得不同的网络插件能够与Kubernetes集群进行无缝集成。 在CNI模型中,每个容器都会被分配一个独立的IP地址,并且可以通过网络插件进行跨节点的通信。以下是CNI模型的主要组成部分: 1. 容器运行时(Container Runtime):负责创建和管理容器的运行环境,比如Docker、containerd等。 2. CNI插件(CNI Plugin):负责配置和管理容器网络的插件,根据CNI规范进行网络设置。它可以是第三方开发的插件,也可以是Kubernetes自带的插件,比如Flannel、Calico等。 3. CNI插件配置文件(CNI Configuration File):定义了容器网络的配置信息,包括网络类型、IP地址分配方式、网关等。 4. CNI二进制文件(CNI Binary):包含了执行网络设置的二进制文件,负责调用对应的CNI插件来完成容器网络的配置。 在Kubernetes中,当一个Pod被创建时,CNI插件会被调用来为Pod中的每个容器分配独立的IP地址,并配置网络规则,使得Pod内的容器可以相互通信。此外,CNI插件还可以与网络插件结合使用,实现跨节点的网络通信。 总的来说,Kubernetes CNI模型定义了容器网络的配置和管理规范,通过插件接口的标准化,实现了多种网络插件与Kubernetes集群的无缝集成。这使得用户可以根据自己的需求选择合适的网络插件,并灵活地管理容器网络。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值