【云原生、k8s】Calico网络策略

news2024/11/17 4:42:36

第四阶段

时  间:2023年8月17日

参加人:全班人员

内  容:

Calico网络策略

目录

一、前提配置

二、Calico网络策略基础

1、创建服务

2、启用网络隔离

3、测试网络隔离

4、允许通过网络策略进行访问

三、Calico网络策略进阶

1、创建服务

2、拒绝所有入口流量

3、允许进入Nginx的流量

4、拒绝所有出口流量

5、允许DNS出口流量

6、允许出口流量到Nginx


一、前提配置

1、主机初始化设置

[root@k8s-master ~]# iptables -F

[root@k8s-master ~]# setenforce 0

[root@k8s-master ~]# systemctl stop firewalld

[root@k8s-master ~]# free

[root@k8s-master ~]# sysctl -p

 

2、安装部署k8s集群,并使用calico网络

[root@k8s-master ~]# kubectl get nodes

[root@k8s-master ~]# kubectl get pods -n kube-system

 

二、Calico网络策略基础

1、创建服务

1)创建命名空间

[root@k8s-master ~]# kubectl create ns policy-demo

 

2)在 policy-demo 命名空间中创建两个副本的 Nginx Pod。

[root@k8s-master ~]# vim nginx-deployment.yaml

[root@k8s-master ~]# kubectl apply -f nginx-deployment.yaml

[root@k8s-master ~]# kubectl get pod -n policy-demo

 

3)通过服务暴露 Nginx 的 80 端口。

[root@k8s-master ~]# kubectl expose --namespace=policy-demo deployment nginx --port=80

[root@k8s-master ~]# kubectl get all -n policy-demo

 

4)通过 busybox 的 Pod 去访问 Nginx 服务。

[root@k8s-master ~]# kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh

/ # wget -q nginx -O -

[root@k8s-master ~]# kubectl get all -n policy-demo

2、启用网络隔离

        在 policy-demo 命名空间中打开隔离。然后 Calico 将阻止连接到该命名空间中的 Pod。执行以下命令将创建一个 NetworkPolicy,该策略将对 policy-demo 名称空间中的所有 Pod实现默认的拒绝行为。

[root@k8s-master ~]# kubectl create -f - <<EOF

kind: NetworkPolicy

apiVersion: networking.k8s.io/v1

metadata:

  name: default-deny

  namespace: policy-demo

spec:

  podSelector:

    matchLabels: {}

EOF

 

3、测试网络隔离

启用网络隔离后,所有对 Nginx 服务的访问都将阻止。执行以下命令,尝试再次访问Nginx 服务,查看网络隔离的效果。

/ # wget -q --timeout=5 nginx -O -

 

4、允许通过网络策略进行访问

        使用 NetworkPolicy 启用对 Nginx 服务的访问。设置允许从 accessPod 传入的连接,但不能从其他任何地方传入。创建 access-nginx 的网络策略具体内容如下所示。

[root@k8s-master ~]# kubectl create -f - <<EOF

kind: NetworkPolicy

apiVersion: networking.k8s.io/v1

metadata:

  name: access-nginx

  namespace: policy-demo

spec:

  podSelector:

    matchLabels:

      app: nginx

  ingress:

    - from:

      - podSelector:

          matchLabels:

            run: access

EOF

 

从 accessPod 访问该服务。

[root@k8s-master ~]# kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh

/ # wget -q --timeout=5 nginx -O -

 

如果没有标记access,仍然无法访问服务。

[root@k8s-master ~]# kubectl run --namespace=policy-demo cant-access --rm -ti --image busybox /bin/sh

/ # wget -q --timeout=5 nginx -O -

[root@k8s-master ~]# kubectl get all -n policy-demo

三、Calico网络策略进阶

1、创建服务

删除命令空间 policy-demo,创建新的命名空间 advanced-policy-demo。

[root@k8s-master ~]# kubectl delete ns policy-demo

[root@k8s-master ~]# kubectl create ns advanced-policy-demo

 

使用 YAML 文件创建 Nginx 服务。

[root@k8s-master ~]# vim nginx-deployment.yaml

[root@k8s-master ~]# kubectl apply -f nginx-deployment.yaml

[root@k8s-master ~]# kubectl expose --namespace=advanced-policy-demo deployment nginx --port=80

[root@k8s-master ~]# kubectl get all -n advanced-policy-demo

 

验证访问权限并访问百度测试外网连通性。

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh

/ #  wget -q --timeout=5 nginx -O -

/ # wget -q --timeout=5 www.baidu.com -O -

[root@k8s-master ~]# kubectl get all -n advanced-policy-demo

2、拒绝所有入口流量

设置网络策略,要求 Nginx 服务拒绝所有入口流量。然后进行访问权限的验证。

[root@k8s-master ~]# kubectl create -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: default-deny-ingress

  namespace: advanced-policy-demo

spec:

  podSelector:

    matchLabels: {}

  policyTypes:

  - Ingress

EOF

[root@k8s-master ~]# kub        w.baidu.com -O -

        从上述命令执行结果中可以看出,对 Nginx 服务的入口访问被拒绝,而仍然允许对出站 Internet 的出口访问。

3、允许进入Nginx的流量

        执行以下命令,创建一个 NetworkPolicy,设置允许流量从 advanced-policy-demo 命名空间中的任何 Pod 到 Nginx Pod。创建策略成功后,就可以访问 Nginx 服务了。

[root@k8s-master ~]# kubectl create -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: access-nginx

  namespace: advanced-policy-demo

spec:

  podSelector:

    matchLabels:

      app: nginx

  ingress:

    - from:

      - podSelector:

          matchLabels: {}

EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh

/ # wget -q --timeout=5 nginx -O -

/ # wget -q --timeout=5 www.baidu.com -O -

 

4、拒绝所有出口流量

        设置拒绝所有出口流量的网络策略,该策略设置成功后,任何策略未明确允许的入站或出站流量都将被拒绝。

[root@k8s-master ~]# kubectl create -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: default-deny-egress

  namespace: advanced-policy-demo

spec:

  podSelector:

    matchLabels: {}

  policyTypes:

  - Egress

EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh

/ # nslookup nginx

/ # wget -q --timeout=5 nginx -O -

/ # wget -q --timeout=5 www.baidu.com -O -

 

5、允许DNS出口流量

        执行以下命令,在 kube-system 名称空间上创建一个标签。该标签的 NetworkPolicy允许 DNS 从 advanced-policy-demo 名称空间中的任何 Pod 到名称空间 kube-system 的出站流量。

[root@k8s-master ~]# kubectl label namespace kube-system name=kube-system

[root@k8s-master ~]# kubectl create -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: allow-dns-access

  namespace: advanced-policy-demo

spec:

  podSelector:

    matchLabels: {}

  policyTypes:

  - Egress

  egress:

  - to:

    - namespaceSelector:

        matchLabels:

          name: kube-system

    ports:

    - protocol: UDP

      port: 53

EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh

/ # nslookup nginx

/ # nslookup www.baidu.com

        即使DNS 出口流量被允许,但来自 Advanced-policy-demo 命名空间中所有 Pod 的所有其他出口流量仍被阻止。因此,来自 wget 调用的 HTTP 出口流量仍将失败。

/ # wget -q --timeout=5 nginx -O -

 

6、允许出口流量到Nginx

        执行以下命令,创建一个 NetworkPolicy,允许从 advanced-policy-demo 名称空间中的任何 Pod 到具有 app: nginx 相同名称空间中标签匹配的 Pod 的出站流量。

[root@k8s-master ~]# kubectl create -f - <<EOF

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: allow-egress-to-advance-policy-ns

  namespace: advanced-policy-demo

spec:

  podSelector:

    matchLabels: {}

  policyTypes:

  - Egress

  egress:

  - to:

    - podSelector:

        matchLabels:

          app: nginx

EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh

/ # wget -q --timeout=5 nginx -O -

/ # wget -q --timeout=5 www.baidu.com -O -

 

        访问百度超时,是因为它可以解决 DNS 匹配标签以外的其他任何出口访问 app: nginx的 advanced-policy-demo 命名空间。

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

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

相关文章

【RP2040】香瓜树莓派RP2040之搭建开发环境(windows)

本文最后修改时间&#xff1a;2022年08月23日 01:57 一、本节简介 本节以树莓派pico开发板为例&#xff0c;搭建windows下的编译环境。 二、实验平台 1、硬件平台 1&#xff09;树莓派pico开发板 ①树莓派pico开发板 ②micro usb数据线 2&#xff09;电脑 2、软件平台 …

绝对值函数的可导性

绝对值函数的可导性 声明&#xff1a;下面截图来自《考研数学常考题型解题方法技巧归纳》

无涯教程-Perl - syswrite函数

描述 此函数尝试将SCALAR中的LENGTH个字节写入与FILEHANDLE相关的文件。如果指定了OFFSET,则从提供的SCALAR中的OFFSET字节中读取信息。该函数使用C /操作系统的write()函数,该函数绕过普通缓冲。 语法 以下是此函数的简单语法- syswrite FILEHANDLE, SCALAR, LENGTH, OFFS…

[oneAPI] 手写数字识别-GAN

[oneAPI] 手写数字识别-GAN 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolki…

高德地图1.4.15楼层处理

前因&#xff1a; 接入了高德1.4.15JS API的项目中使用了mapStyle: ‘amap://styles/grey’,在这个模式下楼层几近透明&#xff0c;方案一是升级到2.0然后加wallColor &#xff08;表示建筑物墙面的颜色&#xff09;和roofColor &#xff08;表示建筑物屋顶的颜色&#xff09;…

机器学习与模型识别1:SVM(支持向量机)

一、简介 SVM是一种二类分类模型&#xff0c;在特征空间中寻找间隔最大的分离超平面&#xff0c;使得数据得到高效的二分类。 二、SVM损失函数 SVM 的三种损失函数衡量模型的性能。 1. 0-1 损失&#xff1a; 当正例样本落在 y0 下方则损失为 0&#xff0c;否则损失为…

uniapp小程序实现上传图片功能,并显示上传进度

效果图&#xff1a; 实现方法&#xff1a; 一、通过uni.chooseMedia(OBJECT)方法&#xff0c;拍摄或从手机相册中选择图片或视频。 官方文档链接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia uni.chooseMedia({count: 9,mediaType: [image,video],so…

如何最大利用WhatsApp高效拓客引流?

对话式商务盛行&#xff0c;WhatsApp是许多国家最受欢迎的聊天应用程序&#xff0c;包括巴西、德国、印尼、泰国、新加坡等。用户渗透率超过80%&#xff0c;作为一个无敌社交APP&#xff0c;自然也是跨境业务的首选。 以下是使用 WhatsApp 进行电子商务时需要记住的一些策略。…

做好需求管理的四个最佳实践

改进您的需求管理过程可以对你的开发过程产生重大影响&#xff0c;所带来的益处包括&#xff1a;提高效率、缩短上市时间&#xff0c;以及节省宝贵的预算和资源。需求是最能向工程师说明要构建什么&#xff0c;以及向测试人员说明要测试什么的信息。 需求具有三个主要功能&…

数据结构——栈(C语言)

需求&#xff1a;无 栈的概念&#xff1a; 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端为栈底。栈中的数据元素遵守后进先出&#xff08;LIFO&#xff09;原则。压栈&…

FPGA应用学习笔记-----布线布局优化

优化约束&#xff1a; 设置到最坏情况下会过多 布局和布线之间的关系&#xff1a; 最重要的是与处理器努力的&#xff0c;挂钩允许设计者调整处理器努力的程度 逻辑复制&#xff1a; 不能放置多个负载&#xff0c;只使用在关键路径钟 减少布线延时&#xff0c;但会增加面积&a…

大规模SFT微调指令数据的生成

前言 想要微调一个大模型&#xff0c;前提是得有一份高质量的SFT数据&#xff0c;可以这么说其多么高质量都不过分&#xff0c;关于其重要性已经有很多工作得以验证&#xff0c;感兴趣的小伙伴可以穿梭笔者之前的一篇文章&#xff1a; 《大模型时代下数据的重要性》&#xff…

【AI】百度AI助力开发,测试一下百度搜索的AI能力如何

百度搜索页面有个AI对话&#xff0c;点击进去看看&#xff1a; 是不是文心一言&#xff1f;它说不是。 测试一下辅助写代码功能&#xff1a; 1、写个爬虫&#xff1a; 代码&#xff1a; import requests from bs4 import BeautifulSoup# 目标网站的URL url "http:/…

Ubuntu虚拟机网络无法连接的几种解决方法

虚拟机网络无法连接的几种解决方法 问题状况描述可能的解决方案 问题状况描述 Ubuntu虚拟机没有网络&#xff0c;无法ping通互联网&#xff0c;左上角网络连接图标消失等情况可能的解决方案 1.重启虚拟机网络编辑器 2.重启虚拟机网络适配器 3.重启虚拟机网络服务器1.重启网络…

优思学院|五大工具:APQP、FMEA、MSA、SPC、PPAP

在现代制造业中&#xff0c;质量是企业成功的关键之一。为了确保产品和过程的质量&#xff0c;需要采用一系列有效的工具和方法。APQP、FMEA、MSA、SPC和PPAP被认定为质量管理体系的五大核心工具&#xff0c;这些工具不仅在汽车行业中得到广泛应用&#xff0c;还被其他制造领域…

生信豆芽菜-分组比较的表格

网址&#xff1a;http://www.sxdyc.com/visualsCliTableCompare 1、数据准备 两列的数据&#xff0c;最后比较这两组的样本分布 2、选择两个分组的颜色&#xff0c;有几个就选几个颜色&#xff0c;表头颜色&#xff0c;图片的宽度和高度&#xff0c;提交等待运行成功 3、结…

PHP入门基础教程 - 专栏导读

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

148. 排序链表

题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5]示例 3&#…

【仿写tomcat】四、解析http请求信息,响应给前端,HttpServletRequest、HttpServletResponse的简单实现

思考 在解析请求之前我们要思考一个问题&#xff0c;我们解析的是其中的哪些内容&#xff1f; 对于最基本的实现&#xff0c;当然是请求类型&#xff0c;请求的url以及请求参数&#xff0c;我们可以根据请求的类型作出对应的处理&#xff0c;通过url在我们的mapstore中找到se…

计算机控制技术|17/8|11:32

目录 1. 学习计算控制系统需要的相关知识有哪些&#xff1f; 2. 计算机控制系统是什么&#xff1f; 3. 计算机控制系统的主要研究内容是什么&#xff1f; 4. 计算机控制系统的主要特点是什么&#xff1f; 5. 计算机控制系统的性能指标主要有哪些&#xff1f; 6. 计算机控…