Kubernetes基于canel的网络策略

Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel
安装canel之前需要注意
如果您使用的是pod CIDR 10.244.0.0/16,请跳至下一步。如果您使用的是其他pod CIDR,请使用以下命令设置一个名为POD_CIDR包含pod CIDR 的环境变量,并使用pod CIDR替换10.244.0.0/16清单。
POD_CIDR=""
sed -i -e “s?10.244.0.0/16?$POD_CIDR?g” canal.yaml

1.拉取资源清单
wget https://docs.projectcalico.org/v3.8/manifests/canal.yaml

2.创建canal
因为某种不可藐视的原因可能无法拉取镜像,需要提前把镜像准备好(所有节点都准备)

kubectl apply -f canal.yaml
3.canal的规则示例

在这里插入图片描述
这里的Ingress跟ingress规则不同,这里指的是通信流量,podselecto表示pod标签选择器,那么我们就可以让一组pod作为整体设置规则

NetworkPolicy在命令行中可以简写为netpol
(1)dev空间下的所有pod拒绝所有人访问

piVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-ingress
  namespace: dev             #在那个命名空间下表示针对那个命名空间下的某些资源
spec:
  podSelector: {} #pod选择器设置为空,表示选择所有pod,即控制整个名称空间
  policyTypes:
  - Ingress #表示只对ingress生效,但是我们上面又把podSelector设置为空,表示默认是ingress拒绝所有的
    #但是我们这里面又没有加egress,所以默认egress是允许所有的

(2)允许别人访问dev命名空间下所有pod

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-ingress
  namespace: dev
spec:
  podSelector: {} #pod选择器设置为空,表示选择所有pod,即控制整个名称空间
  ingress:
  - {}        #这样就表示所有放行
  policyTypes:
  - Ingress #表示只对ingress生效,但是我们上面又把podSelector设置为空,表示>默认是ingress拒绝所有的
    #但是我们这里面又没有加egress,所以默认egress是允许所有的

(3)dev空间下标签是app:nginx的pod允许10.244.0.0/16来访问80端口拒绝10.244.10.2/24
kubectl explain NetworkPolicy.spec.ingress.from

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-ingress
  namespace: dev
spec:
  podSelector: 
    matchLabels:
      app: nginx
  ingress:
  - from: 
    - ipBlock:             #放行IP,也可以写namespaceSelector,podSelector
        cidr: 10.244.0.0/16  
        except:            #排除掉某个IP或者子网
        - 10.244.10.2/24
    ports:
    - protocol: TCP       #TCP
      port: 80           #80端口

(4)允许dev空间下所有标签为app:nginx的pod访问所有
出站与入站是类似的就是ingress和egress的区别

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-ingress
  namespace: dev
spec:
  podSelector:
    matchLabels:
      app: nginx
  egress:
  - {}
  policyTypes:
  - Egress

(5)访问策略大概思路
①设置规则的时候需要想到,如果针对于一个名称空间下的pod设置来说,需要注意同一空间是否可以通信
网络策略:
名称空间:
②拒绝所有出站,入站;
③放行所有出战目标本名称空间内的所Pod
2和3执行以后同一个命名空间基本没问题,跨命名空间就需要额外设置
④根据具体的需求来设置ingress和egress,难点在于需求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自万古的忧伤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值