k8s基于canel的网络策略
Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的。但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制。
亲测:在kubernetes集群中,默认可以设定NetworkPolicy资源,但是必须安装支持网络策略的插件,否则即使设置好网络策略也不会生效。
calico提供了多种解决方案:
(1)使用flannel提供网络,使用calico插件提供网络策略;
(2)使用calico同时提供网络和策略;
(3)仅使用calico提供网络策略;
。。。
flannel并不能对集群中网络提供网络策略功能,但是并没有必要卸载flannel单独安装calico。
多数情况下,我们使用calico提供的第一种解决方案,只需要安装calico的网络策略功能插件即可。
我们使用第一种,让flannel提供网络功能,calico提供网络策略功能:
有两种安装方式:1.使用kubernetes的etcd存储栈;
2.单独创建专门用于canal插件的etcd存储栈;
一般使用基于Kubernetes API的etcd存储栈,而且是官方推荐的方案。
官网:https://docs.projectcalico.org
安装:
(1)安装calico的canal插件:
curl https://docs.projectcalico.org/v3.7/manifests/canal.yaml -O
(2)如果您使用的是pod cidr 10.244.0.0/16,请跳到下一步。如果您使用的是不同的pod cidr,请使用以下命令来设置包含pod cidr的环境变量pod cidr,并将清单中的10.244.0.0/16替换为pod cidr。
POD_CIDR="<your-pod-cidr>" \
sed -i -e "s?10.244.0.0/16?$POD_CIDR?g" canal.yaml
(3)部署canal插件:
kubectl apply -f canal.yaml
使用kubectl get pods -n kube-system中查看安装进程。
安装完成后,即可编写networkPolicy的资源清单。
NetworkPolicy的配置清单编写:
NetworkPolicy是kubernetes集群中标准的资源,所以书写格式和其他资源的清单差不多。
主要字段:
apiVersion: Networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name:
namespace:
spec:
egress: ##出站规则。不写则按默认允许所有出站;
ingress: ##入站规则。不写则按默认不允许所有入站;
podSelector: ##必写字段。不写则策略将应用在所在的命名空间下的所有资源;
policyTypes: ##策略类型:egress或ingress或无或搭配;
例:禁止所有入站:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
spec:
podSelector: {}
policyTypes:
- Ingress
例:允许所有出站:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-egress
spec:
podSelector: {}
egress:
- {}
policyTypes:
- Egress
例:允许特定的访问流量
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-myapp-policy
spec:
podSelector:
matchLabels:
app: myapp ##标签为app=myapp允许入站访问。
ingress:
- from:
- ipBlock: ##地址段。
cidr: 10.244.0.0/ ##允许这个地址段访问。
except: ##以下地址不可以访问。
- 10.244.1.2/
ports:
- port: ##只允许访问80端口。
protocol: TCP
例:指定pod标签访问
我们要对namespace为dev,带有"role: backend"标签的所有pod进行访问控制:只允许标签为"role: frontend"的Pod,并且TCP端口为80的数据流入,其他流量都不允许。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: all-frontend
spec:
podSelector:
matchLabels:
role:backend
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port:
例:指定namespaces标签访问
我们要对标签为"role=frontend"的所有Pod进行访问控制:只允许namespace标签为"user=smbands"的各Pod,并且TCP端口为443的数据流入,其他流量都不允许。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-tcp-
spec:
podSelector:
matchLabels:
role: frontend
ingress:
- ports:
- protocol: TCP
port:
from:
- namespaceSelector:
matchLabels:
user: smbands
k8s基于canel的网络策略的更多相关文章
- Kubernetes 学习19基于canel的网络策略
一.概述 1.我们说过,k8s的可用插件有很多,除了flannel之外,还有一个流行的叫做calico的组件,不过calico在很多项目中都会有这个名字被应用,所以他们把自己称为project cal ...
- kubernetes学习笔记之十三:基于calico的网络策略入门
一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...
- k8s之网络插件flannel及基于Calico的网络策略
1.k8s网络通信 a.容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现; b.pod之间的通信:pod ip <---> pod ip,pod和pod之间不经过任何转换即可 ...
- k8s系列---基于canal的网络策略
文章拷自:http://blog.itpub.net/28916011/viewspace-2215383/ 加上自己遇到的问题简单记录 安装文档:https://docs.projectcalico ...
- canel的网络策略
资源: https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel 基于pod Egress ...
- k8s-基于canel的网络策略-十九
一.前提 上一节学习了flannel,但是我们应该了解flannel只能提供网络通讯,而不能提供网络策略.因此,我们本节学习canal,让它来提供网络策略,来配合flannel使用. canal是ca ...
- 041.Kubernetes集群网络-K8S网络策略
一 Kubernetes网络策略 1.1 策略说明 为实现细粒度的容器间网络访问隔离策略,Kubernetes发布Network Policy,目前已升级为networking.k8s.io/v1稳定 ...
- Kubernetes学习之路(二十一)之网络模型和网络策略
目录 Kubernetes的网络模型和网络策略 1.Kubernetes网络模型和CNI插件 1.1.Docker网络模型 1.2.Kubernetes网络模型 1.3.Flannel网络插件 1.4 ...
- eBPF Cilium实战(1) - 基于团队的网络隔离
在 Rainbond 集群中,每个团队对应于底层 Kubernetes 的一个 Namespace ,由于之前使用的底层网络无法进行 Namespace 级别的网络管理,所以在 Rainbond 同一 ...
随机推荐
- 目前最全的浏览器/CSS选择器兼容性总结(2009-8-10更新)
2009年2月24日,Safari 4.0 beta版正式发布,Safari从它的3.2版本开始就已经支持所有的CSS选择器(包括最新的CSS3).不过为了方便大家的工作,下面提供了最新版本的CSS选 ...
- NET Core 2.1 Preview 1
NET Core 2.1 Preview 1 [翻译] .NET Core 2.1 Preview 1 发布 原文: Announcing .NET Core 2.1 Preview 1 今天,我们宣 ...
- NET full stack framework
NFX UNISTACK 介绍 学习.NET Core和ASP.NET Core,偶然搜索到NFX UNISTACK,现翻译一下Readme,工程/原文:https://github.com/aumc ...
- Codeforces Round #375 (Div. 2) D. Lakes in Berland 并查集
http://codeforces.com/contest/723/problem/D 这题是只能把小河填了,题目那里有写,其实如果读懂题这题是挺简单的,预处理出每一块的大小,排好序,从小到大填就行了 ...
- jquery自定义组件开发
jquery的组件已经有很多,但是有可能找不到符合我们需求的组件,所以我们可以动手自己封装一个jquery组件. 第一步要知道封装jquery组件的基本语法 (function ($) { $.fn. ...
- mysql主给备赋予权限时报错,MySQL [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause
https://www.cnblogs.com/skymyyang/p/7551646.html 在my.cnf 里面设置sql_mode='STRICT_TRANS_TABLES,NO_ZERO_I ...
- 快速开启MySQL慢日志查询的方法
MySQL慢日志查询对于很多刚接触MySQL数据的新人来说比较陌生,下面就为您介绍MySQL慢日志查询的用法和好处,供您参考. mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是 ...
- IIS访问网站出错[要求输入用户名密码]的解决方案
症状: 1.HTTP 500 - 内部服务器错误 2.您不具备使用所提供的凭据查看该目录或页的权限 3.基于所提供的凭据,您没有权限查看此目录或网页.HTTP 错误 401.3 - 访问被资源 ACL ...
- springMVC框架的理解加深,个人的一些想法
一 写spring-boot整合的时候,有种想看源码的冲动!呸,是钻牛角尖的毛病犯了... @RequestMapping("/index") public String inde ...
- Java函数的传参机制
一 最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了. 我就打算好好理一理java的传参机制,整理一番 二 很多人一听Java的传参,那一定会脱口而出,java ...