Calico根据拓扑分配 IP 地址并隔离

本文默认已安装calico,Calico可通过节点标签分配ip池,当pod落在特定标签的节点上时,会从给定的ip池中获取ip

10-calico.conflist文件确认

确认/etc/cni/net.d/10-calico.conflist中ipam字段为以下内容,不能在此处填入ipv4_pools: ["xx.xx.xx.xx/xx"],如果有,直接删除该字段即可

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

配置calicoctl 

如已配置可忽略

下载对应架构及对应操作系统calicoctl二进制文件

Install calicoctl

连接etcd

Configure calicoctl to connect to an etcd datastore

calicoclt默认配置文件为/etc/calico/calicoctl.cfg,如果没有手动创建,本次示例如下

apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
  etcdEndpoints: https://172.20.42.70:2379
  etcdKeyFile: etc/ssl/etcd/ssl/node-master1-key.pem
  etcdCertFile: etc/ssl/etcd/ssl/node-master1.pem 
  etcdCACertFile: etc/ssl/etcd/ssl/ca.pem

测试配置情况

calicoctl get ippool

ippool操作

删除默认ippool

如果calicoctl get ippool -o wide 获取到的默认ippool占据了整个cluster-cidr,可从kube-controller-manager.yaml文件中查看-cluster-cidr,需要删除默认ippool,ippool名字无影响,主要是nodeSelector字段如果为 all()则表示应用在所有node

calicoctl delete ippool default-pool

其他操作参考  Assign IP addresses based on topology即可

创建NetworkPolicy

 参考网络策略 | Kubernetes

上文中创建一个ippool,其cidr为10.233.1.0/24,此处创建一个NetworkPolicy,表示只能允许10.233.1.0/24网段的ip访问label为app: nginx的pod,label为app: nginx的pod也只能访问网段为10.233.1.0/24的pod,此处的标签可替换为整个隔离环境公共的一个标签

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: my-network-policy
spec:
  podSelector:
    matchLabels:
      app: nginx
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.233.1.0/24
  egress:
  - to:
    - ipBlock:
        cidr: 10.233.1.0/24
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值