当前位置: 首页 > ds >正文

CKA考试知识点分享(10)---NetworkPolicy

CKA 版本:1.32
第十套题是涉及NetworkPolicy相关。
注意:本文不是题目,只是为了学习相关知识点做的实验。仅供参考

实验目的

创建NetworkPolicy,来验证网络策略带来的影响。
注意:需要网络插件支持网络策略。我使用的是calico

实验开始

禁止pod的出入站流量

创建命名空间
kubectl create ns test1
kubectl create ns test2
创建两个pod和svc

apiVersion: apps/v1
kind: Deployment
metadata:name: backendnamespace: test1
spec:selector:matchLabels:app: backendtemplate:metadata:labels:app: backendspec:containers:- name: nginximage: docker.m.daocloud.io/library/nginx:stable-alpineports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: backendnamespace: test1labels:app: backend
spec:ports:- port: 80selector:app: backend

再创建一个前端,把label修改成:app: frontend
查看pod
在这里插入图片描述
测试访问:同空间后端nginx能够成功访问到前端nginx
kubectl exec -n test1 backend-74c99c7f54-b4f4j – sh -c “curl frontend.test1”
在这里插入图片描述

添加网络策略,限制空间下pod拒绝出入站流量。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: default-deny-ingressnamespace: test1
spec:podSelector: {}policyTypes:- Ingress- Egress

创建后,再次验证发现pod不能互相通讯了。
在这里插入图片描述

同命名空间pod准许被访问

现在需要设置test1下的backend 能访问frontend服务

需要设置test1 下的出站

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: test1-network-egressnamespace: test1
spec:podSelector:matchLabels:app: backendpolicyTypes:- Egressegress:- to:- namespaceSelector:matchLabels:kubernetes.io/metadata.name: kube-system  #这个是为了解析服务名称- podSelector:matchLabels:app: frontend

需要设置test1 下frontend 准许backend入站

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: test1-network-ingressnamespace: test1
spec:podSelector:matchLabels:app: frontendpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: backend

测试访问:
kubectl exec -n test1 backend-74c99c7f54-b4f4j – sh -c “curl frontend.test1”
在这里插入图片描述
测试frontend 去访问backend,发现不能成功
在这里插入图片描述

不同命名空间之间pod互相访问

我们test1 命名空间下的backend 想要访问 test2 空间下的frontend 如何实现呢?
由于跨不同的命名空间,所以需要添加多个命名空间的访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: test1-network-egressnamespace: test1
spec:podSelector:matchLabels:app: backendpolicyTypes:- Egressegress:- to:- namespaceSelector:matchExpressions:- key: "kubernetes.io/metadata.name"operator: Invalues: ["kube-system", "test2"]- podSelector:matchLabels:app: frontend
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: test2-network-ingressnamespace: test2
spec:podSelector:matchLabels:app: frontendpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: backend- namespaceSelector:matchExpressions:- key: "kubernetes.io/metadata.name"operator: Invalues: ["test1"]- podSelector:matchLabels:app: backend

测试访问:test1 命名空间下的backend 可以访问 test2 空间下的frontend
在这里插入图片描述
从上面可以看出这几种选择器的作用

podSelector:此选择器将在与 NetworkPolicy 相同的名字空间中选择特定的 Pod,应将其允许作为入站流量来源或出站流量目的地。
namespaceSelector:此选择器将选择特定的名字空间,应将所有 Pod 用作其入站流量来源或出站流量目的地。
namespaceSelector 和 podSelector:一个指定 namespaceSelector 和 podSelector 的 to/from 条目选择特定名字空间中的特定 Pod。

参考链接:
https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/

http://www.xdnf.cn/news/13618.html

相关文章:

  • 【Git】TortiseGit设置过滤上传文件
  • 神经网络:深度剖析过拟合、欠拟合及其泛化能力提升策略
  • 【学习笔记】HTTP
  • P2834 纸币问题 3
  • 讲一件Java虚拟线程
  • 小白理财 - 入门第一课
  • 扁平风格职场商务通用PPT模版分享
  • AI支持下的-ArcGIS数据处理、空间分析、可视化及多案例综合应用
  • Java多线程实现之同步方法详解
  • Win10重装系统 (重生篇:我在华强修电脑)
  • 用python玩转大语言模型——从 RNN 到文本生成大语言模型的奇幻之旅
  • SpringBoot学习day2-前后端的交互搭建以及跨域问题、拦截过滤器问题的解决
  • 理解系统交互:UML时序图
  • 驭码CodeRider 2.0 产品体验:在VSCode安装并创建一个雷电小游戏
  • Django项目QQ授权登录报错:redirect uri is illegal(100010) 解决方法
  • 深度学习小项目合集之音频语音识别
  • docker-compose搭建eureka-server和zipkin
  • ubuntu 安装 JDK8
  • 安信可(云知声蜂鸟US516P6)SDK开发学习---log日志打印子系统模块
  • 云原生安全实践:CI/CD流水线集成DAST工具
  • 【PostgreSQL系列】PostgreSQL WAL 目录配置
  • 力扣HOT100之贪心算法:45. 跳跃游戏 II
  • 零基础设计模式——行为型模式 - 备忘录模式
  • 前端实现ios26最新液态玻璃效果!
  • Leetcode-11 2 的幂
  • 前端实战:用 HTML+JS 打造可拖动图像对比滑块,提升视觉交互体
  • Reactive-Resume:重构你的简历编写体验
  • window 显示驱动开发-如何查询视频处理功能(六)
  • (LeetCode 动态规划(基础版) )337. 打家劫舍 III (深度优先搜索dfs)
  • 智慧医疗能源事业线深度画像分析(下)