目录

一、认识 Kubernetes 网络

二、外部网络如何访问 k8s 内部服务

1. NodePort

2. Load Balancer

3. Ingress


一、认识 Kubernetes 网络

Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。

Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上,用来保证 k8s 集群中的 pod 之间能够做正常的 IP 寻址和通讯。作为集群最基本的调度单位,一个 Pod 内部可以有一个或多个容器,容器之间直接通过 localhost 互相访问;这些容器可共享 Pod 的网络栈,容器想要访问外部资源则通过此网络栈。如下为该两层的示意图:

那么在 Pod 之间又是如何进行 IP 寻址和通讯的呢?

在 Kubernetes 集群当中,可以把每一个 Pod 看成是一个自带虚拟网卡的小型虚拟机。在节点网络的基础上,k8s 会创建一个专门为 Pod 寻址和访问服务的虚拟网络(即 Pod 网络),首先 k8s 会在每个节点之间创建虚拟网桥,并管理网桥的 IP 地址空间和分配,其次 k8s 会修改路由器的路由规则,使得不同节点上的 Pod 可以相互通信。

但是还有一个问题,那就是 Pod 在 k8s 中是不固定的,可能会挂起或者重启,且挂起重启都是不可预期的,那么这就会导致服务的 IP 也随着不停的变化,给用户的寻址造成一定的困难。在上文中我们也提到了解决此问题用到了服务 service。service 网络的实现也就是 Kubernetes 的第三层网络。

service 是由 k8s 单独创建和管理的,有独立的 IP 地址空间,它的 IP 称为 Cluster-IP。

二、外部网络如何访问 k8s 内部服务

要知道,Pod 网络和 service 网络都是 k8s 的内部网络,外部用户是无法访问的,而外部网络和 节点网络是可以互通的。那么如果能够实现节点网络和 service 网络的互通,就可以间接实现外部与 service 网络的互通了。

1. NodePort

NodePort 是一种将 Kubernetes 服务暴露在节点网络上的一种机制。其实就是 k8s 中一种特殊的 service,k8s 会在集群中的每一个节点上暴露一个相同的端口,通过端口以及 kube-proxy 转发服务让节点网络可以访问到 k8s 内部的 service。

2. Load Balancer

Node Port 将 k8s 中的服务暴露在节点网络中后,想要外部网络访问到节点网络进而访问到 k8s 中的服务还需要引入负载均衡设备,也就是 load balancer。

load balancer 具有公网 IP,可以将外部流量转换路由到节点网络中,还能够实现对节点网络的负载均衡,以实现用户通过公网 IP 访问到 k8s 内部的服务。

load balancer 也是一种特殊的 service,本地 Kubernets 部署是不支持 load balances 的;公有云如阿里云等则是支持的,可以按需销毁和创建 load balancer。

3. Ingress

如果需要暴露在节点网络中的服务有很多,仅仅使用 load balancer 的话成本是很高的。Ingress 可以等价于反向代理或者网关,它的主要作用就是反向路由,它可以将多个 k8s 内部的服务同时暴露出去但仅需一个 load balancer。Ingress 还有一些其他功能如动态路由更新、安全认证、日志监控等。

【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务相关推荐

  1. 云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版

    前言: 前面写了一些关于calico的文章,但感觉好像是浅尝辄止,分散在了几篇文章内,并且很多地方还是没有说的太清楚云原生|kubernetes|kubernetes的网络插件calico和flann ...

  2. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  3. 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard

    目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...

  4. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)

    目录 一.k8s 安全管理:认证.授权.准入控制概述 1.1 认证 认证基本介绍 授权基本介绍 准入控制基本介绍 为什么需要准入控制器呢? k8s 客户端访问 apiserver 的几种认证方式 ku ...

  5. 云原生容器化-1 Linux虚拟网络介绍

    背景: 本文开始引入一个新的专题--云原生容器化,用于收集云和容器化相关的文章: 以Docker和Kubernates的组成.实现原理.常见操作为主体内容,还会涉及一些云的概念:初步计划会整理出以下文 ...

  6. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(下)

    目录 一.常见角色(role)授权的案例 1.1 允许读取核心 API 组的 Pod 资源 1.2 允许读写 apps API 组中的 deployment 资源 1.3 允许读取 Pod 以及读写 ...

  7. 云原生存储详解:容器存储与 K8s 存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  8. docker修改镜像的存储位置_云原生存储详解:容器存储与 K8s 存储卷(内含赠书福利)...

    作者 | 阚俊宝  阿里巴巴技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新 ...

  9. 云原生存储详解:容器存储与K8s存储卷

    作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念.特点.需求.原理.使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战.本文为该系列文章的第二篇,会对容 ...

  10. 终于读完了阿里云p9专家分享云原生Kubernetes全栈架构师实战文档

    都说程序员工资高.待遇好, 2022 金九银十到了,你的小目标是 30K.40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算 ...

最新文章

  1. MySQL优化篇:SQL优化流程
  2. 相当全面的Numpy使用总结.pptx
  3. php 打印测试技巧
  4. Android-Activity启动流程
  5. 树的高度 递归法和非递归法
  6. spring MVC中页面添加锚点
  7. 匈牙利算法-指派问题、二分图问题等
  8. 分布式系统中,权限设计实践
  9. 草稿 listview控件切换大小图标
  10. git管理工具_使用包管理工具
  11. 云小课 | ModelArts Pro 自然语言处理套件:高效构建行业高精度文本处理模型
  12. 前端直播与SRS视频流服务的使用
  13. 【IE】IE对line-height 失效的的解决方案
  14. springboot 静态资源访问
  15. 阶段3 1.Mybatis_10.JNDI扩展知识_3 补充-测试JNDI数据源的使用以及使用细节
  16. Java学习之InputStream中read()与read(byte[] b)
  17. Microsoft store 微软商店 下载错误 代码: 0x80240004
  18. CefSharp入门-winform
  19. 频率相噪中相关公式、名词注释详解
  20. 音乐API(仅测试使用)

热门文章

  1. 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发
  2. kafka安装及配置
  3. App地推:这些方法让你事半功倍
  4. 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)
  5. ChatGPT宝藏插件丨装上之后,上网、语音聊天、一键分享对话……简直让你爽到起飞!
  6. 有关微服务Zuul网关面试题分享【持续更新中】
  7. coding ssh端口指定_CODING添加部署账户SSH公钥
  8. Tableau中的LOOKUP函数
  9. 基于Three.js和MindAR实现的网页端人脸识别功能和仿抖音猫脸特效换脸的各种面罩实现(含源码)
  10. authinfo.php,微信刷脸支付getWxpayFaceAuthInfo.php一直返回“无效的RawData数据”?