kubernetes calico
来源:原创
时间:2019-01-20
作者:脚本小站
分类:云原生
一般情况下使用flannal作为 kubernetes 的网络通讯插件,而使用calico作为k8s 的路由策略。
帮助文档:https://docs.projectcalico.org/v3.4/getting-started/kubernetes/installation/flannel
下载:
wget https://docs.projectcalico.org/v3.4/getting-started/kubernetes/installation/hosted/canal/canal.yaml
安装:
kubectl apply -f canal.yaml
帮助文档:
kubectl explain networkpolicy
kubectl create namespace dev
入站管控 Ingress
关闭dev名称空间的入口请求:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: ingress-test namespace: dev spec: podSelector: {} # 空表示控制所有 policyTypes: - Ingress # 定义ingress但是没有定义规则,表示都不允许
查看:kubectl get networkpolicy -n dev
打开dev名称空间所有的入站请求:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: ingress-test namespace: dev spec: podSelector: {} ingress: - {} # 为空就是所有Pod都允许接受请求 policyTypes: - Ingress
打开dev名称空间的特定入站请求:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ingress namespace: dev spec: podSelector: matchLabels: app: myapp # 对这些标签的Pod进行通信管制 ingress: - from: - ipBlock: cidr: 10.244.0.0/16 # 这些网段的Pod都可以接受外部请求 except: - 10.244.1.2/32 # 这个IP不允许接收外部请求 ports: - protocol: TCP port: 80 - protocol: TCP port: 443
注意:多个策略会相互影响,如果定义的策略不管用注意查看是否有其他策略影响。
出站管控 Egress
查看规则:
kubectl get netpol -n prod
kubectl get networkpolicy -n prod
关闭prod名称空间的所有出站请求:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: ingress-test namespace: prod spec: podSelector: {} policyTypes: - Egress
打开名称空间prod的所有的出站请求:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: ingress-test namespace: prod spec: podSelector: {} egress: - {} policyTypes: - Egress