canel的网络策略
资源:
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的网络策略相关推荐
- 基于canel的网络策略
基于canel的网络策略 canel工作的默认网段是192.168.0.0/16的网段 官网:https://docs.projectcalico.org/v3.2/introduction/ 参考地 ...
- Kubernetes基于canel的网络策略
Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel 安装ca ...
- Kubernetes 学习19基于canel的网络策略
一.概述 1.我们说过,k8s的可用插件有很多,除了flannel之外,还有一个流行的叫做calico的组件,不过calico在很多项目中都会有这个名字被应用,所以他们把自己称为project cal ...
- 十九、基于canel的网络策略
说明 Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel 安 ...
- k8s基于canel的网络策略
Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制. 亲测:在kub ...
- K8s的网络模型和网络策略
K8s的网络模型和网络策略_路---的博客-CSDN博客_k8s网络模式 1.Kubernetes网络模型和CNI插件 在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点, ...
- Kubernetes之(十七)网络模型和网络策略
目录 Kubernetes之(十七)网络模型和网络策略 Kubernetes网络模型和CNI插件 Docker网络模型 Kubernetes网络模型 Flannel网络插件 Direct routin ...
- kubernetes学习笔记之十三:基于calico的网络策略入门
一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...
- Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务
2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN /NFV的实践应用与部署,从SDN/ ...
最新文章
- IO口多路查理复用:三个单片机IO口控制六个LED
- Shell中的while语句
- Hi3515支持NFS-ROOT启动
- 【Tools】GitBook入门教程
- 【Android Studio安装部署系列】十一、Android studio获取数字签名信息
- 拥有成本分析:Oracle WebLogic Server与JBoss
- LeetCode刷题第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...
- 分形与数据结构第二篇
- vue项目中的回车登录
- 汽车传感器:车载雷达与摄像头
- java经纬度转换小数_java经纬度格式转换
- win7计算机打开显卡设置在哪里,win7在哪里打开显卡设置
- C 语言基础-什么是常量、变量?
- 申请CSDN博客专家和码云推荐项目
- WEB渗透测试-安全白帽子修炼
- 【CVPR2018】Deep Mutual Learning
- Pandas 的使用
- 前端三刺客----HTML
- shell练习Day2
- 关于Python打包文件的步骤
热门文章
- “简历造假,面试坦白”如果你是面试官给过吗?
- 《推荐》机械行业ERP企业管理系统的3点核心优势
- vue组件 .vue_Vue列车时刻表组件
- 打开word提示无法启动转换器mswrd632.wpc问题解决
- 调试九法 软硬件错误的排查之道
- 使用Linux卸载zoom(适用于所有软件)
- php 有尾递归吗,什么是 递归 和 尾递归
- 国内第八条、武汉首列无人地铁调试中,将在 5 号线投用
- vue2进阶篇:vue-router之路由的2种工作模式
- web网页设计实例作业 ——中国水墨风书画艺术网站(12页)HTML DⅣV+ CSSJS