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集群中标准的资源,所以书写格式和其他资源的清单差不多。
            主要字段:

 1 apiVersion: Networking.k8s.io/v1
 2 kind: NetworkPolicy
 3 metadata:
 4    name:
 5    namespace:
 6 spec:
 7    egress:              ##出站规则。不写则按默认允许所有出站;
 8    ingress:             ##入站规则。不写则按默认不允许所有入站;
 9    podSelector:      ##必写字段。不写则策略将应用在所在的命名空间下的所有资源;
10    policyTypes:       ##策略类型:egress或ingress或无或搭配;               

例:禁止所有入站:

1 apiVersion: networking.k8s.io/v1
2 kind: NetworkPolicy
3 metadata:
4    name: deny-all-ingress
5 spec:
6    podSelector: {}
7    policyTypes:
8    - Ingress

例:允许所有出站:

 1 apiVersion: networking.k8s.io/v1
 2 kind: NetworkPolicy
 3 metadata:
 4   name: allow-all-egress
 5 spec:
 6    podSelector: {}
 7    egress:
 8    - {}
 9    policyTypes:
10    - Egress

   例:允许特定的访问流量

 1 apiVersion: networking.k8s.io/v1
 2 kind: NetworkPolicy
 3 metadata:
 4   name: allow-myapp-policy
 5 spec:
 6   podSelector:
 7     matchLabels:
 8       app: myapp   ##标签为app=myapp允许入站访问。
 9   ingress:
10   - from:
11     - ipBlock:     ##地址段。
12         cidr: 10.244.0.0/16  ##允许这个地址段访问。
13         except:    ##以下地址不可以访问。
14         - 10.244.1.2/32
15     ports:
16     - port: 80     ##只允许访问80端口。
17       protocol: TCP

例:指定pod标签访问

    我们要对namespace为dev,带有"role: backend"标签的所有pod进行访问控制:只允许标签为"role: frontend"的Pod,并且TCP端口为80的数据流入,其他流量都不允许。

 1 apiVersion: networking.k8s.io/v1
 2 kind: NetworkPolicy
 3 metadata:
 4   name: all-frontend
 5 spec:
 6   podSelector:
 7     matchLabels:
 8       role:backend
 9   ingress:
10   - from:
11     - podSelector:
12         matchLabels:
13           role: frontend
14     ports:
15     - protocol: TCP
16         port: 80

例:指定namespaces标签访问
               我们要对标签为"role=frontend"的所有Pod进行访问控制:只允许namespace标签为"user=smbands"的各Pod,并且TCP端口为443的数据流入,其他流量都不允许。

 1 apiVersion: networking.k8s.io/v1
 2 kind: NetworkPolicy
 3 metadata:
 4   name: allow-tcp-443
 5 spec:
 6   podSelector:
 7     matchLabels:
 8       role: frontend
 9   ingress:
10   - ports:
11     - protocol: TCP
12       port: 443
13     from:
14     - namespaceSelector:
15         matchLabels:
16           user: smbands

原文地址:https://www.cnblogs.com/Smbands/p/10932334.html

时间: 2024-11-08 20:23:21

k8s基于canel的网络策略的相关文章

12.基于canel的网络策略

参考文档:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/ 一.Calico作为网络插件提供网络功能 Calico:基于BGP网络协议来通过自动学习判定生成路由条目. 隧道方式:IPIP 路由方式:BGP 默认网段192.168.0.0/16. 二.Calico提供网络策略 1.安装部署 不同环境,使用目的不同,安装方式不同,参考官方文档. 也依赖etcd,可通过api-server去写k8s的etcd,或独立部署一个

k83 calico 网络策略

常见的CNI网络插件包含以下几种: Flannel:为Kubernetes提供叠加网络的网络插件,基于TUN/TAP隧道技术,使用UDP封装IP报文进行创建叠 加网络,借助etcd维护网络的分配情况,缺点:无法支持网络策略访问控制.Calico:基于BGP的三层网络插件,也支持网络策略进而实现网络的访问控制:它在每台主机上都运行一个虚拟路由,利用Linux内核转发网络数据包,并借助iptables实现防火墙功能.实际上Calico最后的实现就是将每台主机都变成了一台路由器,将各个网络进行连接起来

利用Openfiler配置基于文件系统的网络存储

一.Openfiler简介 Openfiler是一个操作系统,其提供基于文件的网络附加存储和基于块的存储区域网络功能. Openfiler支持的网络协议包括:NFS,SMB/CIFS,HTTP/WebDAV,FTP和iSCSI. Openfiler支持的网络目录包括:NIS,LDAP(支持SMB/CIFS密码加密),Active Directory(本地和混合模式),基于Windows NT的域控制器和Hesiod.认证协议包括Kerberos 5. Openfiler支持基于卷的分区技术:如本

网络策略服务器

TechNet 库 Windows Server Windows Server 2008 R2 und Windows Server 2008 按类别提供的 Windows Server 内容 按类别提供的 Windows Server 2008 R2 内容 已安装的 Windows Server 2008 R2 产品帮助 Network Policy and Access Services 网络策略服务器 网络策略服务器概述 NPS 和防火墙 NPS 模板 NPS 中的策略 在 Active

远程访问VPN以及NPS网络策略服务

为了实现远程访问,需要搭建一台专用的远程访问服务器,该服务器同时连接内网和外网,并安装路由和远程访问服务,该服务器的内网IP地址是192.168.10.10/24,公网地址是12.0.0.1/24 Windows 7在本实验中设置为公网地址 在系统管理员账号登录,在远程访问服务器上打开"管理工具"中的"服务器管理器"窗口,选择"角色",单击"添加角色",打开"选择服务角色"的界面. 第一步:在"选

基于图卷积网络的图深度学习

基于图卷积网络的图深度学习 先简单回顾一下,深度学习到底干成功了哪些事情! 深度学习近些年在语音识别,图片识别,自然语音处理等领域可谓是屡建奇功.ImageNet:是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库,并且被业界熟知. 我们先回顾一下,没有大数据支撑的欧式深度学习技术.对于一个字母"Z"的识别,我们通常是建立一个2D网格(点阵),如果将其中的点连接起来,定义这样的连接方式所形成的就是"Z".然后是用其他字母来测试,这个模型的正确性. 传统

Calico网络策略实践

因为Kubernetes官方用的flannel无法实现多租户环境下的网络隔离,建立起来的pod之间实际可以相互访问,而Calico可以实现,因此周末找个时间试了一下大概的过程. 前面的kubernetes安装掠过 Calico安装 下载yaml文件 http://docs.projectcalico.org/v2.3/getting-started/kubernetes/installation/hosted/calico.yaml http://docs.projectcalico.org/v

疑惑:Windows 7 打上KB3159398补丁之后,GPMC基于用户对象的策略该何去何从?

以往,为了方便管理或者其它目的,我们将组策略中的用户策略通过GPMC下发(例如用户文件夹重定向),只需把这条策略链接至该用户的同级\上级OU,然后在"安全筛选"中选中该用户(或者用户所在的用户组).然而在去年10月,封装一个虚拟机模版时,更新了win7 pro sp1 x64的所有安全补丁,因为是在原有的模版基础上做更新,因此没有全面测试(一些必要的测试,也是用系统的本地管理员登录进行的),直接用这个模版创建新的虚拟机给同事使用,同事用域用户登录后,发现基于用户的所有策略全部失效!!!

【java爬虫】---爬虫+基于接口的网络爬虫

爬虫+基于接口的网络爬虫 上一篇讲了[java爬虫]---爬虫+jsoup轻松爬博客,该方式有个很大的局限性,就是你通过jsoup爬虫只适合爬静态网页,所以只能爬当前页面的所有新闻.如果需要爬一个网 站所有信息,就得通过接口,通过改变参数反复调该网站的接口,爬到该网站的所有数据信息. 本博客以爬金色财经新闻信息为对象,去爬取该网站从建站以来发表的所有新闻信息.下面会一步一步讲解.这里重点重点讲思路,最后我会提供完整源码. 第一步:找接口 你要获得该网站所有新闻数据,第一步当然是获得接口,通过接口