K8S简历(十七)

flannel最大弊端就是没有网络策略,为了弥补这个弊端今天我们来说说cannel。cannel是flannel和calicod结合体,cannel规则和iptable类似也把一个资源分为出站和入站来分别控制。如果要限制namespace中的Pod访问就要在出站处写规则,如果要限制namespace中的Pod提供的服务就要在入站处写规则。


NetworkPolicy

cannel下载:

curl https://docs.projectcalico.org/v3.7/manifests/canal.yaml -O
#下载yaml文件
kubectl apply -f canal.yaml
#部署

入站规则例子:

拒绝其他namespace访问:

apiVesion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: tmp-net-po      #只里不写namespace需要在部署的时候指定namespace
spec:
  podSelector: {}        #没有指定pod则表示该namespace中的全部Pod
  policyTypes:            #指定启动出站规则或入站
  - Ingress

允许指定IP访问服务:

apiVesion: networking.k8s.io/v1
kind: NetwordPolicy
metadata:
  name: tmp-net-po2
spec:
  podSelector:
    matchLaels:
      app: nginx                        #对有app:nginx标签的Pod做策略
  ingress:
  - from:
    - ipBlock:
      cidr: 192.168.1.0/24        #允许192.168.1.0/24网段访问
      except:
      - 192.168.1.11/32          #拒绝192.168.1.11主机服务
  ports:
  - protocol: TCP
    port: 80

出站:

出站和入站写法差不多只是把Ingress改成Engress就可以了。

你可能感兴趣的:(K8S简历(十七))