zoukankan      html  css  js  c++  java
  • 实践 Network Policy 【转】

    为了演示 Network Policy,我们先部署一个 httpd 应用,其配置文件 httpd.yaml 为:

    httpd 有三个副本,通过 NodePort 类型的 Service 对外提供服务。部署应用:

    当前没有定义任何 Network Policy,验证应用可以被访问:

    1. 启动一个 busybox Pod,可以访问 Service,也可以 Ping 到副本 Pod。

    2. 集群节点可以访问 Service, 也可以 Ping 到副本 Pod。

    3. 集群外(192.168.56.1)可以访问 Service。

    现在创建如下 Network Policy:

    ① 定义将此 Network Policy 中的访问规则应用于 label 为 run: httpd 的 Pod,即 httpd 应用的三个副本 Pod。

    ② ingress 中定义只有 label 为 access: "true" 的 Pod 才能访问应用。

    ③ 只能访问 80 端口。

    通过 kubectl apply 创建 Network Policy。

    验证 Network Policy 的有效性:

    1. busybox Pod 已经不能访问 Service。

      如果 Pod 添加了 label access: "true" 就能访问到应用,但 Ping 已经被禁止。

    2. 集群节点已经不能访问 Service, 也 Ping 不到副本 Pod。

    3. 集群外(192.168.56.1)已经不能访问 Service。

    如果希望让集群节点和集群外(192.168.56.1)也能够访问到应用,可以对 Network Policy 做如下修改:

    应用新的 Network Policy:

    现在,集群节点和集群外(192.168.56.1)已经能够访问了:

    除了通过 ingress 限制进入的流量,也可以用 egress 限制外出的流量。大家可以参考官网相关文档和示例,这里就不赘述了。

    小结

    Kubernetes 采用的是扁平化的网络模型,每个 Pod 都有自己的 IP,并且可以直接通信。

    CNI 规范使得 Kubernetes 可以灵活选择多种 Plugin 实现集群网络。

    Network Policy 则赋予了 Kubernetes 强大的网络访问控制机制。

  • 相关阅读:
    第四篇--Beyond Compare4 试用期30天后
    第七篇--如何改变vs2017版的背景
    第四篇--git 上传可能出现的问题
    第六篇--MFC美化界面
    第五篇--VS2017如何生成Dll文件
    第四篇--窗体风格
    第四十八篇--数据库的增删改查
    第四十七篇--重命名包名的方法以及问题解决方法
    第三篇--如何修改exe文件版本号和文件信息
    《Java虚拟机原理图解》 1.1、class文件基本组织结构
  • 原文地址:https://www.cnblogs.com/twobrother/p/11150044.html
Copyright © 2011-2022 走看看