资源:

https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel

基于pod

Egress  是Pod作为客户端(需要定义目标端口和目标地址)

ingress 是pod作为服务端(需要定义目标地址和pod自己的端口)

canel工作的默认网段是192.168.0.0/16的网段

官网:https://docs.projectcalico.org/v3.2/introduction/

参考地址:
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel

分别运行:
kubectl apply -f \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/canal/rbac.yaml

kubectl apply -f \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/canal/canal.yaml

监控:
kubectl get pods -n kube-system -w[root@master ~]# kubectl get pods -n kube-system
NAME                                   READY     STATUS    RESTARTS   AGE
canal-98mcn                            3/3       Running   0          3m
canal-gnp5r                            3/3       Running   0          3m
coredns-78fcdf6894-27npt               1/1       Running   1          12d
coredns-78fcdf6894-mbg8n               1/1       Running   1          12d
etcd-master                            1/1       Running   1          12d
kube-apiserver-master                  1/1       Running   1          12d
kube-controller-manager-master         1/1       Running   1          12d
kube-flannel-ds-amd64-6ws6q            1/1       Running   0          1h
kube-flannel-ds-amd64-mg9sm            1/1       Running   0          1h
kube-flannel-ds-amd64-sq9wj            1/1       Running   0          1h
kube-proxy-g9n4d                       1/1       Running   1          12d
kube-proxy-wrqt8                       1/1       Running   2          12d
kube-proxy-x7vc2                       1/1       Running   0          12d
kube-scheduler-master                  1/1       Running   1          12d
kubernetes-dashboard-767dc7d4d-7rmp8   1/1       Running   0          2d
查看帮助:
kubectl explain networkpolicy.spec

网络策略:
名称空间:拒绝所有的出站,入站。放行所有出站目标本名称空间内的所有Pod

ingress

创建名称空间
[root@master networkpolicy]# kubectl create namespace dev
namespace/dev created
[root@master networkpolicy]# kubectl create namespace prod
namespace/prod created创建yaml文件
[root@master networkpolicy]# cat ingres-def.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingress#namespace: dev
spec:podSelector: {}  #空选择器代表名称空间所有的PodpolicyTypes:- Ingress#如果不写Ingress的话,默认都可以访问#如果写上Ingress的话,默认都不能访问[root@master networkpolicy]# kubectl apply -f ingres-def.yaml -n dev
networkpolicy.networking.k8s.io/deny-all-ingress created
-n 是指定的名称空间dev[root@master networkpolicy]# kubectl get netpol -n dev
NAME               POD-SELECTOR   AGE
deny-all-ingress   <none>         39s创建一个web yaml
[root@master networkpolicy]# vim pod-a.yaml
[root@master networkpolicy]# kubectl apply -f pod-a.yaml -n dev
pod/pod1 created
[root@master networkpolicy]# cat pod-a.yaml
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:containers:- name: myappimage: ikubernetes/myapp:v1[root@master networkpolicy]# kubectl get pods
No resources found.
[root@master networkpolicy]# kubectl get pods -n dev
NAME      READY     STATUS    RESTARTS   AGE
pod1      1/1       Running   0          50s[root@master networkpolicy]# kubectl get pods -n dev -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE      NOMINATED NODE
pod1      1/1       Running   0          1m        10.244.2.2   node2     <none>
[root@master networkpolicy]# curl 10.244.2.2发现是访问不了的更换一下名称空间:
[root@master networkpolicy]# kubectl apply -f pod-a.yaml -n prod
pod/pod1 created
[root@master networkpolicy]# kubectl get pods -n prod
NAME      READY     STATUS    RESTARTS   AGE
pod1      1/1       Running   0          8s
[root@master networkpolicy]# kubectl get pods -n prod -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE      NOMINATED NODE
pod1      1/1       Running   0          13s       10.244.1.2   node1     <none>
[root@master networkpolicy]# curl 10.244.1.2
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
发现是可以访问的
因为在dev中Ingress中定义了不能访问
[root@master networkpolicy]# kubectl get pods -n prod -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE      NOMINATED NODE
pod1      1/1       Running   0          3m        10.244.1.2   node1     <none>
[root@master networkpolicy]# kubectl get pods -n dev -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE      NOMINATED NODE
pod1      1/1       Running   0          7m        10.244.2.2   node2     <none>
可以看出,prod和dev不同的命名空间都有一个pods
[root@master networkpolicy]# curl 10.244.1.2  #可以
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@master networkpolicy]# curl 10.244.2.2   #NO
^C
现在放行2.2
dev是默认拒绝一切规则的,他可以请求别人
[root@master networkpolicy]# vim ingres-def.yaml
[root@master networkpolicy]# kubectl apply -f ingres-def.yaml -n dev
networkpolicy.networking.k8s.io/deny-all-ingress configured
[root@master networkpolicy]# cat ingres-def.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingress#namespace: dev
spec:podSelector: {}  #空选择器代表命苦空间所有的Podingress:- {}  #允许所有的入栈规则policyTypes:- Ingress#如果不写Ingress的话,默认都可以访问#如果写上Ingress的话,默认都不能访问再次访问:
[root@master networkpolicy]# curl 10.244.2.2
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
可以访问了
打一个标签,可以设置标签为myapp的特定访问
kubectl label pods pod1 app=myapp -n dev
[root@master networkpolicy]# kubectl label pods pod1 app=myapp -n dev
pod/pod1 labeled[root@master networkpolicy]# cat allow-netpol-demo.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-myapp-ingress
spec:podSelector:matchLabels:app: myappingress:- from:- ipBlock: #ip 网段cidr: 10.244.0.0/16  #允许的网段except:- 10.244.1.2/32  #排除的网段ports:- protocol: TCPport: 80[root@master networkpolicy]# kubectl apply -f allow-netpol-demo.yaml -n dev
networkpolicy.networking.k8s.io/allow-myapp-ingress created[root@master networkpolicy]# kubectl get netpol -n dev
NAME                  POD-SELECTOR   AGE
allow-myapp-ingress   app=myapp      2m
deny-all-ingress      <none>         36m[root@master networkpolicy]# curl 10.244.2.2
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
生效了
[root@master networkpolicy]# curl 10.244.2.2:443
会直接卡主,如果需要访问443,则在yaml文件中配置。

egress

#允许出战[root@master networkpolicy]# vim egress-def.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-egress
spec:podSelector: {}egress:- {}policyTypes:- Egress#拒绝出站[root@master networkpolicy]# vim egress-def.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-egress
spec:podSelector: {}policyTypes:- Egress

转载于:https://www.cnblogs.com/st666/p/10559576.html

canel的网络策略相关推荐

  1. 基于canel的网络策略

    基于canel的网络策略 canel工作的默认网段是192.168.0.0/16的网段 官网:https://docs.projectcalico.org/v3.2/introduction/ 参考地 ...

  2. Kubernetes基于canel的网络策略

    Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel 安装ca ...

  3. Kubernetes 学习19基于canel的网络策略

    一.概述 1.我们说过,k8s的可用插件有很多,除了flannel之外,还有一个流行的叫做calico的组件,不过calico在很多项目中都会有这个名字被应用,所以他们把自己称为project cal ...

  4. 十九、基于canel的网络策略

    说明 Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel 安 ...

  5. k8s基于canel的网络策略

    Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制. 亲测:在kub ...

  6. K8s的网络模型和网络策略

    K8s的网络模型和网络策略_路---的博客-CSDN博客_k8s网络模式 1.Kubernetes网络模型和CNI插件 在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点, ...

  7. Kubernetes之(十七)网络模型和网络策略

    目录 Kubernetes之(十七)网络模型和网络策略 Kubernetes网络模型和CNI插件 Docker网络模型 Kubernetes网络模型 Flannel网络插件 Direct routin ...

  8. kubernetes学习笔记之十三:基于calico的网络策略入门

    一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...

  9. Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务

    2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN /NFV的实践应用与部署,从SDN/ ...

最新文章

  1. IO口多路查理复用:三个单片机IO口控制六个LED
  2. Shell中的while语句
  3. Hi3515支持NFS-ROOT启动
  4. 【Tools】GitBook入门教程
  5. 【Android Studio安装部署系列】十一、Android studio获取数字签名信息
  6. 拥有成本分析:Oracle WebLogic Server与JBoss
  7. LeetCode刷题第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...
  8. 分形与数据结构第二篇
  9. vue项目中的回车登录
  10. 汽车传感器:车载雷达与摄像头
  11. java经纬度转换小数_java经纬度格式转换
  12. win7计算机打开显卡设置在哪里,win7在哪里打开显卡设置
  13. C 语言基础-什么是常量、变量?
  14. 申请CSDN博客专家和码云推荐项目
  15. WEB渗透测试-安全白帽子修炼
  16. 【CVPR2018】Deep Mutual Learning
  17. Pandas 的使用
  18. 前端三刺客----HTML
  19. shell练习Day2
  20. 关于Python打包文件的步骤

热门文章

  1. “简历造假,面试坦白”如果你是面试官给过吗?
  2. 《推荐》机械行业ERP企业管理系统的3点核心优势
  3. vue组件 .vue_Vue列车时刻表组件
  4. 打开word提示无法启动转换器mswrd632.wpc问题解决
  5. 调试九法 软硬件错误的排查之道
  6. 使用Linux卸载zoom(适用于所有软件)
  7. php 有尾递归吗,什么是 递归 和 尾递归
  8. 国内第八条、武汉首列无人地铁调试中,将在 5 号线投用
  9. vue2进阶篇:vue-router之路由的2种工作模式
  10. web网页设计实例作业 ——中国水墨风书画艺术网站(12页)HTML DⅣV+ CSSJS