K8S Calico

NetworkPolicy是kubernetes对pod的隔离手段,是宿主机上的一系列iptables规则。
1334255-20181122144452314-131222249.png

Egress 表示出站流量,就是pod作为客户端访问外部服务,pod地址作为源地址。策略可以定义目标地址或者目的端口
Ingress 表示入站流量,pod地址和服务作为服务端,提供外部访问。pod地址作为目标地址。策略可以定义源地址和自己端口

官网
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/

我们这里使用的是 flannel 构建 K8S 网络,使用 Calico 构建网络规则

mkdir ~/networkpolicy ; cd ~/networkpolicykubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml
kubectl get pods -n kube-system# 创建两个命名空间 dev 和 prod 进行测试
kubectl create namespace dev
kubectl create namespace prodvi pod-a.yaml
# 内容如下
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:containers:- name: myappimage: ikubernetes/myapp:v1# 在命名空间 dev 创建 pod1
kubectl apply -f pod-a.yaml -n dev
kubectl get pods -n dev -o wide
# 运行结果:
NAME   READY   STATUS    RESTARTS   AGE   IP           NODE
pod1   1/1     Running   0          14m   10.244.2.2   node2# 在命名空间 prod 创建 pod1
kubectl apply -f pod-a.yaml -n prod
kubectl get pods -n prod -o wide
# 运行结果:
NAME   READY   STATUS    RESTARTS   AGE   IP           NODE
pod1   1/1     Running   0          14m   10.244.1.2   node1# 测试网络
curl 10.244.1.2    # 正常访问
curl 10.244.2.2    # 正常访问kubectl exec pod1 -it -n prod -- /bin/sh
ping 10.244.2.2   # 链路正常

Ingress

# Ingress 默认禁止所有的入站流量
vi ngress-def.yaml 
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingress
spec:podSelector: {}policyTypes:- Ingresskubectl apply -f ingress-def.yaml -n dev# 查看 networkpolicy 规则
kubectl get netpol -n devcurl 10.244.2.2    # 命名空间 dev  pod1 无法访问curl 10.244.1.2    # 命名空间 prod pod1 正常访问# 开放所有的入站流量
vi ingress-def.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingress
spec:podSelector: {}ingress:- {}policyTypes:- Ingresskubectl apply -f ingress-def.yaml -n devcurl 10.244.1.2   # 命名空间 prod pod1 正常访问curl 10.244.2.2   # 命名空间 dev pod1 正常访问

通过规则限制入站流量

kubectl delete netpol deny-all-ingress -n devkubectl label pods pod1 app=myapp -n dev# 添加网络规则
vi allow-netpol-demo.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-myapp-ingress
spec:podSelector:matchLabels:app: myapp           # 选择app=myapp 的标签放行ingress:- from:- ipBlock:              # 地址段cidr: 10.244.0.0/16 # 允许这个地址段访问except:             # 排除一下地址不可以访问- 10.244.1.2/32ports:- protocol: TCPport: 80              # 允许访问80端口- protocol: TCPport: 443kubectl apply -f allow-netpol-demo.yaml -n devkubectl get netpol -n devcurl 10.244.2.2:80    # 命名空间 dev pod1 正常访问curl 10.244.2.2:443   # NetworkPolicy 放行,没有开放 443 端口,服务器拒绝
curl: (7) Failed connect to 10.244.2.2:443; Connection refusedcurl 10.244.2.2:6443  # 卡住,被 NetworkPolicy 拒绝

Egress

# 默认限制所有的出站流量
vi egrees-def.yaml 
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-egress
spec:podSelector: {}policyTypes:- Egresskubectl apply -f egrees-def.yaml -n prodkubectl get pods -n kube-system -o wide
# 选取一个 coredns 的 pod ipkubectl exec pod1 -it -n prod -- /bin/sh
ping 10.244.0.4    # 无法正常 ping 通# 放行所有的出站流量
vi egrees-def.yaml 
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-egress
spec:podSelector: {}egress:- {}policyTypes:- Egresskubectl apply -f egrees-def.yaml -n prodkubectl exec pod1 -it -n prod -- /bin/sh
ping 10.244.0.4    # 正常 ping 通

转载于:https://www.cnblogs.com/klvchen/p/10000687.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每周总结(第十一周)

转载于:https://www.cnblogs.com/qinlihong/p/5510026.html

10个关于linux中Squid代理服务器的实用面试问答

10个关于linux中Squid代理服务器的实用面试问答 不仅是系统管理员和网络管理员时不时会听到“代理服务器”这个词,我们也经常听到。代理服务器已经成为一种企业常态,而且经常会接触到它。它现在也出现在一些小型的学校或者大型跨国公司的自助餐厅里。Squ…

北京矿大计算机考研每年分数线,2021中国矿业大学北京考研国家线公布时间_国家线是多少分...

中国矿业大学北京考研国家线怎么看?中国矿业大学北京考研国家线是多少分?山西人事考试网整理中国矿业大学北京考研考研国家线怎么看、国家线公布时间、历年中国矿业大学北京考研国家线,希望考生及时关注考研成绩国家线公布信息,为…

工厂模式-依赖倒置原则

老板:阿飞啊,我们公司最近接了个项目,你看着设计一下,我给你说下需求。项目组长阿飞:好啊,什么需求?老板:我们找了一个合作的商铺,他们要设计一套面包销售系统。主要功能…

(6)css盒子模型(基础下)

一、理解多个盒子模型之间的相互关系 现在大部分的网页都是很复杂的,原因是一个“给人用的”网页中是可能存在着大量的盒子,并且它们以各种关系相互影响着。 html与DOM的关系 详情了解“DOM” :http://baike.baidu.com/link?urlSeSj8sRDE-JZ…

easyui获取下拉框选中的文本值_Word中文本显示不全的常见3种情况及解决方法

在日常工作使用Word文档时,经常会遇到文本显示不全的情况,比如文本框或表格里的文本显示不全等情况,你一般是怎么操作呢?以下这3种常见情况你可能也遇到过,一起看看是什么原因并解决它们吧!1、文本显示不全…

CSS中属性的值和单位

CSS中值的单位 1.颜色值 被各种浏览器支持,并且作为 CSS 规范推荐的颜色名称只有 16 种,如下表所示。 百分比表示 color: rgb(100%, 100%, 100%); 这个声明将红、蓝、绿 3 种原色都设置为最大值,结果组合显示为白色。相反,可以设置…

《走进SAP(第2版)》——2.8 SAP的目标是什么

本节书摘来自异步社区《走进SAP(第2版)》一书中的第2章,第2.8节,作者: 【德】Nancy Muir , Ian Kimbell , 等 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 SAP的目标是什么 走进SAP(第2版)…

8 包含min函数的栈

0 引言 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1). 1 抽象问题具体化 2 具体问题抽象分析 需要解决的两个主要问题如下。 &#x…

《Adobe Illustrator大师班:经典作品与完美技巧赏析》—Svetlana Makarova

本节书摘来自异步社区《Adobe Illustrator大师班:经典作品与完美技巧赏析》一书中的Svetlana Makarova,作者【英】Sharon Milne,更多章节内容可以访问云栖社区“异步社区”公众号查看。 Svetlana MakarovaAdobe Illustrator大师班:经典作品与…

有关软件测试的证书,软件测试证书有用吗

要想知道证书有什么用,我们就要详细了解软件评测师考试,以及拿到证书的价值。那么下面和小编来看看这篇软件测试证书有用吗,一定会有收获。一、证书考试软件评测师考试是全国计算机技术与软件技术资格考试的一个中级考试。考试不规定学历和资…

python D29 socketserver以及FTB

一、socketserver 基于tcp协议下的socket只能和一个客户端通信,如果用socketserver可以实现和多个客户端通信。 他是在socket的基础上进行封装,也就是说底层还是调用的socket,在py2.7里面叫做SocketServer也就是大写了两个S,在py3…

sphinx mysql存储引擎_基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计...

Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新…

4-1 线程安全性-原子性-atomic-1

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10026627.html

delphi7 提示注册过期问题

很同情你得经过~ 因为我以前也是经常遇见这个问题~就和你说得一样~ 后来~ 我发现 下载使用的Delphi 7只能使用一个注册码,那就是:6AMD-PKG68E-DB8PP7-9SFE 3QH-9QW所以,你先把C:\Documents and Settings\Administrator\.borland文件夹下的两个文件删除然后用 Progra…

计算机开机引导的结果是,电脑开机显示引导媒体是怎么回事

电脑开机显示引导媒体是怎么回事分类:数据恢复常见问题|最后更新:2020年4月9日开机显示重新启动并选择适当的引导设备或插入1.如果主机上接有可移动存储介质(如光盘、移动硬盘、U盘等),将其拔掉,然后重启。2.如果仍然这样,进入主板设置中,依次检测以下几…

mysql怎样修改my ini_mysql修改my.ini报错怎么办

mysql修改my.ini报错的解决办法:首先将mysql默认编码改成utf8mb4,并修改【my.ini】配置;然后修改变量,并检查是否设置成功即可。更多相关免费学习推荐:mysql教程(视频)mysql修改my.ini报错的解决办法:将mys…

spring-DataSource

spring支持的dataSource有好多, 如:自带的org.springframework.jdbc.datasource.DriverManagerDataSource ibatis、c3p0、JDBC、hibernate等等; 首先看第一种,使用自带的datasource: 1、项目结构 提示:spri…

《Nmap渗透测试指南》—第7章7.8节后台打印机服务漏洞

本节书摘来自异步社区《Nmap渗透测试指南》一书中的第7章7.8节后台打印机服务漏洞,作者 商广明,更多章节内容可以访问云栖社区“异步社区”公众号查看。 7.8 后台打印机服务漏洞表7.8所示为本章节所需Nmap命令表,表中加粗命令为本小节所需命令——后台打…

VSCODE 配置远程调试环境

以下内容为本人的著作,如需要转载,请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/f1KZOlL92ojes-r2l9rlCw 我的需求是,在Windows桌面环境下,通过 VSCODE 远程调试在服务器(或者其它远程主机)的工程代码。其实就…