kubernetes的网络

  1. kubernetes网络模型
    1. Kubernetes采用的是基于扁平地址空间的网络模型,集群中的每个Pod都有自己的IP地址,Pod之间不需要配置NAT就能直接通信,同一个Pod中的容器共享Pod的IP,能够通过localhost通信
    2. Pod容器内的通信
      1. 当Pod被调度到某个节点,Pod中的所有容器都在这个节点上运行,这些容器共享相同的本地文件系统,IPC和网络命名空间
      2. 不同Pod之间不存在端口冲突的问题,因为每个Pod都有自己的IP地址,当某个容器使用localhost时,意味着使用的是容器所属的Pod的地址空间
      3. 比如Pod A有两个容器container-A1和container-A2,container-A1在端口1234上监听,当container-A2连接到localhost:1234时,实际上就是在访问container-A1,这不会与同一个节点上的Pod B冲突,即使Pod B中的容器container-B1也在监听1234端口
    3. Pod之间的通信
      1. Pod的IP是集群可见的,即集群中的任何其他Pod和节点都可以通过IP直接与Pod通信,这种通信不需要借助任何网络地址转换,隧道或代理技术,Pod内部和外部使用的是同一个IP,这也意味着标准的命名服务和发现机制,比如DNS可以直接使用
    4. Pod与Service的通信
      1. Pod间可以直接通过IP地址通信,但前提是Pod知道对方的IP,在Kubernetes集群中,Pod可能会频繁的销毁和创建,也就是说Pod的IP不是固定的,为了解决这个问题,Service提供了访问Pod的抽象层,无论后端的Pod如何变化,Service都作为稳定的前端对外提供服务,同时,Service还提供了高可用和负载功能,Service负责将请求转发给正确的Pod
    5. 外部访问
      1. 无论是Pod的IP还是Service的Cluster IP,他们只能在Kubernetes集群中可见,对集群之外的世界,这些IP是私有的
      2. kubernetes提供了两种方式让外界能够与Pod通信
        1. NodePort,service通过Cluster节点的静态端口对外提供服务,外部可以通过:访问Service
        2. LoadBalancer:Service利用cloud provider提供的load balancer对外提供服务cloud provider负责将load provider的流量导向Service,目前支持的cloud provider有GCP,AWS,Azur等
  2. 各种网络方案
    1. 为了保证网络方案的标准化,扩展性和灵活性,kubernetes采用了Container Networking Interface(CNI)规范
      1. CNI是由CoreOS提出的容器网络规范,使用了插件模型创建容器的网络栈

      2. 在这里插入图片描述

      3. CNI的优点是支持多种容器runtime,不仅仅是Docker

      4. 目前已有多种支持Kubernetes的网络方案,比如Flannel,Calico,Canal,Weave Net等,因为他们都实现了CNI规范,无论选择哪种方案,得到的网络模型都一样,即每个Pod都有独立的IP,可以直接通信,

    2. Network Policy
      1. Network Policy是Kubernetes的一种资源,Network Policy通过Label选择Pod,并指定其他Pod或外界如何与这些Pod通信
      2. 默认情况下,所有Pod是非隔离的,即任何来源的网络流量都能够访问Pod,没有任何限制,当为Pod定义了Network Policy时,只有Policy允许的流量才能访问Pod
      3. 不是所有的Kubernetes网络方案都支持Network Policy,比如Flannel就不支持,Calico支持,
    3. Canal:他用Flannel实现Kubernete集群网络,同时又用Calico实现Network Policy
      1. Canal作为DaemonSet部署到每个节点,属于kube-system这个namespace
    4. 实践Network Policy
      1. 部署一个httpd应用,配置文件为httpd.yaml在这里插入图片描述

      2. httpd有三个副本,通过NodePort类型的Service对外提供服务,部署应用在这里插入图片描述

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

        1. 启动一个busybox Pod,既可以访问Service,也可以Ping到副本Pod在这里插入图片描述

        2. 集群节点既可以访问到Service,也可以Ping到副本Pod在这里插入图片描述

        3. 集群外可以访问Service在这里插入图片描述

      4. 创建Network Policy

        1. 在这里插入图片描述

          1. 定义将次Network Policy中的访问规则应用于label为run:httpd的Pod,即httpd应用的三个副本Pod
          2. ingress中定义只有label为accsee: "true"的Pod才能访问应用
          3. 只能访问80端口
        2. 通过kubectl apply创建Network Policy

          1. 在这里插入图片描述

          2. 验证Network Policy的有效性

            1. busybox Pod已经不能访问Service

              1. 在这里插入图片描述

              2. 如果Pod添加了label access:"true"就能访问到应用,但Ping已经被禁止在这里插入图片描述

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

              1. 在这里插入图片描述
            3. 集群外也不能访问Service

              1. 在这里插入图片描述

              2. 如果希望让集群节点和集群外(192.168.56.1)也能够访问到应用,可以对Network Policy做修改在这里插入图片描述

              3. 应用新的Network Policy在这里插入图片描述

              4. 现在集群节点和集群外(192.168.56.1)已经能够访问了在这里插入图片描述

          3. 通过ingress限制进入的流量,也可以用ingress限制外出的流量

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

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

相关文章

车辆重识别(去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…

【hot100-java】【零钱兑换】

R9-dp篇 class Solution {public int coinChange(int[] coins, int amount) {int ncoins.length;int [][] fnew int[n1][amount1];//除2防止下面1溢出Arrays.fill(f[0],Integer.MAX_VALUE/2);f[0][0]0;for (int i0;i<n;i){for (int c0;c<amount;c){if(c<coins[i]) f[i…

5G NR 协议规范表(对应3GPP 协议编号)

文章目录 5G NR 协议规范表&#xff08;对应3GPP 协议编号&#xff09;5G 架构相关协议5G 新空口相关协议无线接入网相关协议终端相关协议 5G NR 协议规范表&#xff08;对应3GPP 协议编号&#xff09; 5G 架构相关协议 5G 新空口相关协议 无线接入网相关协议 终端相关协议

网页设计html心得

一&#xff0c;认识网页 说到网页&#xff0c;其实大家并不陌生 1.1网页究竟是什么&#xff1f; 网页主要由文字、图像和超链接等元素构成。当然&#xff0c;除了这些元素&#xff0c;网页中还可以包含音频、视频以及Flash等。 1.2网页是如何形成的呢&#xff1f; 1.特殊的…

uni-app在线预览pdf

这里推荐下载pdf.js 插件 PDF.js - Browse Files at SourceForge.net 特此注意 如果报 Promise.withResolvers is not a function 请去查看版本兼容问题 降低pdf.js版本提高node版本 下载完成后 在 static 文件夹下新建 pdf 文件夹&#xff0c;将解压文件放进 pdf 文件…

监控和日志管理:深入了解Nagios、Zabbix和Prometheus

在现代IT运维中&#xff0c;监控和日志管理是确保系统稳定性和性能的关键环节。本文将介绍三种流行的监控工具&#xff1a;Nagios、Zabbix和Prometheus&#xff0c;帮助您了解它们的特点、使用场景以及如何进行基本配置。 一、Nagios Nagios 是一个强大的开源监控系统&#x…

从0新建一个微信小程序实现一个简单跳转

首先 1.从这里下载开发工具 https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.htm 2. 等下载完毕后 创建一个空白项目 在pages目录下右键创建一个page : testUI,这时候会生成四个文件 新建一个文件夹 testUI 给他们放一起 3.增加一个按钮 …

蛋白质结构中模型的提取

在 Biopython 的 PDB 模块中,提取 PDB 结构中的 model 信息相对直观。在 PyMMCIF 包中,我们可以通过提取 atom_site 数据中的 pdbx_PDB_model_num 字段来识别结构中的不同模型。下面是如何使用这两个包分别提取结构的 model 信息的示例代码。 1. Biopython PDB 模块提取模型…

尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)

目录&#xff1a; 自动化持续集成 &#xff08;1&#xff09;环境准备 &#xff08;2&#xff09;初始化 Jenkins 插件和管理员用户 &#xff08;3&#xff09;工作流程 &#xff08;4&#xff09;配置 Jenkins 构建工具 自动化持续集成 互联网软件的开发和发布&#xf…

多线程事务管理:Spring Boot 实现全局事务回滚

多线程事务管理:Spring Boot 实现全局事务回滚 在日常开发中,我们常常会遇到需要在多线程环境下进行数据库操作的场景。这类操作的挑战在于如何保证多个线程中的数据库操作要么一起成功,要么一起失败,即 事务的原子性。尤其是在多个线程并发执行的情况下,确保事务的一致性…

门面(外观)模式

简介 门面模式&#xff08;Facade Pattern&#xff09;又叫作外观模式&#xff0c;提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。其主要特征是定义了一个高层接口&#xff0c;让子系统更容易使用&#xff0c;属于结构型设计模式。 通用模板 创建子系统角色类…

多米诺骨牌(模拟)

初始化数据结构&#xff1a; 使用一个布尔数组 arr 来表示每个位置是否被占用。初始时所有位置均为 false&#xff08;未占用&#xff09;。使用一个 LinkedHashMap&#xff08;命名为 queue&#xff09;来记录最近的 R 操作的位置。这个结构可以保持插入顺序&#xff0c;方便后…

【AI基础】pytorch lightning 基础学习

传统pytorch工作流是首先定义模型框架&#xff0c;然后写训练和验证&#xff0c;测试循环代码。训练&#xff0c;验证&#xff0c;测试代码写起来比较繁琐。这里介绍使用pytorch lightning 部署模型&#xff0c;加速模型训练和验证&#xff0c;记录。 准备工作 1 安装pytorch…

【分布式微服务云原生】使用Docker体验不同Linux发行版

Docker 允许用户在同一个宿主机上运行多种不同的Linux发行版&#xff0c;而共享同一个宿主机内核。这种方式不仅节省资源&#xff0c;还非常方便进行环境测试和开发。 1. Docker与Linux发行版 Linux内核 发行版 Linux内核与各种发行版软件包组合&#xff0c;构成了一个完整的…

JAVA红娘婚恋相亲交友系统源码全面解析

在数字化时代&#xff0c;红娘婚恋相亲交友系统成为了连接单身男女的重要桥梁。JAVA作为一种流行的编程语言&#xff0c;为开发这样的系统提供了强大的支持。编辑h17711347205以下是对JAVA红娘婚恋相亲交友系统源码的全面解析&#xff0c;以及三段示例代码的展示。 系统概述 …

[产品管理-33]:实验室技术与商业化产品的距离,实验室技术在商业化过程中要越过多少道“坎”?

目录 一、实验室技术 1.1 实验室研究性技术 1.2 技术发展的S曲线 技术发展S曲线的主要阶段和特点 技术发展S曲线的意义和应用 二、实验室技术商业化的路径 2.1 实验室技术与商业化产品的距离 1、技术成熟度与稳定性 - 技术自身 2、市场需求与适应性 - 技术是满足需求 …

Visual Studio 2022

VS&#xff08;Visual Studio&#xff09;是一款由微软开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发应用程序、网站以及移动应用等。VS的历史可以追溯到1997年&#xff0c;当时发布了第一个版本的VS。以下是VS的一些重要历史里程碑&#xff1a; Visual …

ArcEngine C#二次开发图层处理:根据属性分割图层(Split)

需求&#xff1a;仅根据某一属性&#xff0c;分割图层&#xff0c;并以属性值命名图层名保存。 众所周知&#xff0c;ArcGIS ArcToolbox中通过Split可以实现图形分割一个图层&#xff0c;以属性值命名图层&#xff0c;如下图所示。 本功能仅依据属性值&#xff0c;将一个shp图…

MATLAB中的模型预测控制(MPC)实现详解

模型预测控制&#xff08;MPC&#xff09;是一种基于模型的优化控制策略&#xff0c;广泛应用于工业过程控制、无人驾驶、机器人等领域。MPC通过预测未来的系统行为&#xff0c;优化控制输入以达到预期的控制目标。本文将详细介绍如何在MATLAB中实现MPC&#xff0c;包括基本原理…

Socket【C#】Demo

字段&#xff1a; Socket RJ45;//以太网 属性&#xff1a; public Socket socket { get > RJ45; set > RJ45 value; } 构造&#xff1a; //实例化Socket RJ45 new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 连接&#xff1a; //封装…