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

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/

相关文章:

  • 深入浅出:C++深拷贝与浅拷贝
  • Web防火墙深度实战:从漏洞修补到CC攻击防御
  • 重拾前端基础知识:CSS预处理器
  • 基于AI智能体的医疗AI工具库构建路径分析
  • Python爬虫(54)Python数据治理全攻略:从爬虫清洗到NLP情感分析的实战演进
  • 第七章: SEO与渲染方式 三
  • C#接口代码记录
  • 第七章: SEO与渲染方式
  • Scrapy爬虫框架:数据采集的瑞士军刀(附实战避坑指南)!!!
  • ( github actions + workflow 01 ) 实现爬虫自动化,每2小时爬取一次澎湃新闻
  • MyBatis实战指南(七)MyBatis缓存机制
  • Python毕业设计226—基于python+爬虫+html的豆瓣影视数据可视化系统(源代码+数据库+万字论文)
  • Linux:多线程---线程控制(线程创建线程等待线程终止)
  • AJAX、Axios 与 Fetch:现代前端数据请求技术对比
  • Linux Swap分区应该禁用吗?深入辨析其作用与性能优化
  • React 状态管理指南:Redux 原理与优化策略
  • React删除评论逻辑:1、客户端立即更新UI(乐观更新)2、后台调用删除评论API
  • Flutter setState() 状态管理详细使用指南
  • 一键实现全站多语言化:translate.js 极简集成指南,支持Vue 、React 框架。
  • 《HarmonyOSNext属性动画实战手册:让UI丝滑起舞的魔法指南》
  • 网站建设公司利润率/公司seo是什么意思
  • 网站建设使用的工具/网络营销师有前途吗
  • 湖北建设人力资源网站/最新百度快速排名技术
  • 怎么做自己的微信网站/国际新闻头条
  • 优化设计官方网站/西安网站推广助理
  • 深圳网站平台建设/全国疫情排名一览表