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

kubernetes网络之网络策略-----Network Policies - Example

创建一个Deployment并配置Service

  • 创建一个 nginx Deployment 用于演示 Kubernetes 的 NetworkPolicy:

    kubectl create deployment nginx --image=nginx   
    

    输出结果

    deployment.apps/nginx created
    
  • 通过Service暴露该Deployment

    kubectl expose deployment nginx --port=80 
    

    输出结果

    service/nginx exposed
    
  • 查询结果

    kubectl get svc,pod   
    

    输出结果

    NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
    service/kuard        ClusterIP   10.110.143.73    <none>        80/TCP    155d
    service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   155d
    service/nginx        ClusterIP   10.102.109.126   <none>        80/TCP    17sNAME                           READY   STATUS    RESTARTS   AGE
    pod/nginx-8f458dc5b-mj7hv      1/1     Running   0          3m36s
    

从另外一个pod访问Service

默认是可以从另外一个Pod访问 nginx Service 的。下面的方法可以执行此测试:

default 名称空间中创建 busybox 容器,并执行 wget 命令:

kubectl run busybox --rm -ti --image=busybox -- /bin/sh

在命令行中执行 wget --spider --timeout=1 nginx

If you don't see a command prompt, try pressing enter.
/ # 
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.102.109.126:80)
remote file exists

限制对nginx的访问

下面的 NetworkPolicy 可以声明:只有带 access=true 标签的 Pod 可以访问 nginx 服务:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: access-nginx
spec:podSelector:matchLabels:app: nginxingress:- from:- podSelector:matchLabels:access: "true"
  1. apiVersion: networking.k8s.io/v1: 这指定了使用的 Kubernetes API 版本,表示该配置文件遵循的网络策略 API 的版本。
  2. kind: NetworkPolicy: 这表明我们正在定义一个网络策略对象。
  3. metadata: 这是网络策略对象的元数据部分,包含关于该策略的信息,比如名称(name)。
  4. name: access-nginx: 这是网络策略对象的名称。在这个例子中,它命名为 “access-nginx”。
  5. spec: 这是网络策略对象的规范部分,定义了实际的策略规则。
  6. podSelector: 这是策略的一个重要字段,用于选择要应用该策略的 Pod。
    • matchLabels: 这是一个标签选择器,用于指定选择的 Pod 必须具有哪些标签。在这里,app: nginx 表示只有带有标签 app=nginx 的 Pod 才会受到这个策略的影响。换句话说,这个策略只会应用于带有 app=nginx 标签的 Pod。
  7. ingress: - from: - podSelector: matchLabels: access: "true": 这是策略的一个重要字段,用于指定入站流量的规则。
    • from: 这是一个规则条件,指定了允许访问受该策略限制的 Pod 的来源。
    • podSelector: 这是一个标签选择器,用于指定允许访问的来源 Pod 必须具有哪些标签。在这里,matchLabels: access: "true" 表示只有带有标签 access=true 的 Pod 才被允许访问具有 app=nginx 标签的 Pod。换句话说,只有带有标签 access=true 的 Pod 可以访问具有 app=nginx 标签的 Pod。
  • 执行命令以创建该 NetworkPolicy:

    kubectl apply -f network-policy.yaml    
    

    输出结果如下:

    networkpolicy.networking.k8s.io/access-nginx created 
    

从不带标签的Pod访问nginx服务

如果从不带标签的 Pod 访问该 nginx 服务,请求将超时:

kubectl run  busybox --rm -ti --image=busybox -- /bin/sh

在命令行中执行 wget --spider --timeout=1 nginx

If you don't see a command prompt, try pressing enter.
/ # 
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.102.109.126:80)
wget: download timed out

从带有标签的Pod访问nginx服务

从带有 access=true 标签的 Pod 中访问 nginx 服务,将能够执行成功:

kubectl run busybox --rm -ti --labels="access=true" --image=busybox -- /bin/sh

在命令行中执行 wget --spider --timeout=1 nginx

If you don't see a command prompt, try pressing enter.
/ # 
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.102.109.126:80)
remote file exists
http://www.lryc.cn/news/112480.html

相关文章:

  • 【GDI/GDI+】如何抓取屏幕保存到bitmap文件?
  • HDFS介绍
  • 每日一题——两数之和
  • Maven: ‘mvn‘ is not recognized as an internal or external command
  • CubeSLAM: Monocular 3D Object SLAM——论文简述
  • 【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2
  • linux scp 拷贝文件到目标linux系统
  • Oracle-expdp报错ORA-39077、06502(Bug-16928674)
  • Kafka入门,保姆级教学
  • RabbitMQ 过期时间(TTL)
  • C 语言练习题、持续更新
  • Android Q以上后台启动Activity初步尝试
  • 【torchlars】windows下载github中的torchlars包遇到的问题及解决方案
  • SolidUI社区-通用Prompt技巧
  • C++中类的封装写出一个文件加密的小项目
  • 【网络编程·传输层】UDP和TCP的报头
  • C语言编程技巧 全局变量在多个c文件中公用的方法
  • 【HDFS】NN处理全量块汇报时reportDiff的一些细节
  • JVM之类加载与字节码(一)
  • 【数据结构OJ题】合并两个有序数组
  • 数据结构笔记--归并排序及其拓展题(小和问题、逆序对问题)
  • flutter开发实战-实现css线性渐变转换flutter渐变LinearGradient功能
  • python推理小游戏bagels
  • DBSCAN聚类
  • java+ssm美食推荐交流系统 7jsw7
  • 基于php雪花算法工具类Snowflake -来自chatGPT
  • 怎么加密文件夹才更安全?安全文件夹加密软件推荐
  • 知识分享和Tomcat简单部署press应用
  • 回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测
  • 步入React前厅 - 组件和JSX