Kubernetes 官方文档
  • 前言
  • 词汇表
  • 概念
    • 概述
      • 组件
      • 对象
        • 理解 Kubernetes 对象
        • 管理 Kubernetes 对象
        • 对象名称和 ID
        • 标签(Label)和选择算符(Selector)
        • 命名空间(Namespace)
        • 注解(Annotation)
        • 字段选择器
        • Finalizers
        • 属主与附属
    • 架构
      • 节点
    • 工作负载
      • 工作负载资源
        • Job
    • 服务、负载均衡和网络
      • 服务
        • 服务定义
        • 无头服务(Headless Service)
        • 发布服务
    • 配置
      • 配置最佳实践
    • 策略
      • 资源配额
    • 调度、抢占和驱逐
      • Kubernetes 调度器
    • 集群管理
      • 证书
      • 管理资源
        • 组织资源配置
        • kubectl 中的批量操作
        • 有效地使用标签
        • 金丝雀部署
        • 更新标签
      • 集群网络系统
  • 任务
    • 管理集群
      • 手动生成证书
    • 运行应用
      • Pod 水平自动扩缩容
        • HPA 是如何工作的?
      • HPA 演练
        • 创建 HPA
        • 附录
    • TLS
      • 管理集群中的 TLS 认证
  • 参考
    • API 访问控制
      • 使用 RBAC 鉴权
        • API 对象
        • 默认 Roles 和 Role Bindings
        • 初始化与预防权限提升
        • 命令行工具
        • ServiceAccount 权限
        • EndpointSlices 和 Endpoints 写权限
        • 从 ABAC 升级
    • 组件工具
      • kube-scheduler
    • 调度
      • 调度器配置
      • 调度策略
    • 网络参数
      • Service 所用的协议
      • 虚拟 IP 和服务代理
    • 命令行工具 (kubectl)
  • 博客
    • 移除 Dockershim 的常见问题
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 概念

服务、负载均衡和网络

Kubernetes 网络模型

集群中每个 Pod 都会获得自己的、独一无二的 IP 地址,这就意味着不需要显性地在 Pod 之间创建链接,几乎不需要处理容器端口到主机端口之间的映射。这将形成一个干净的、向后兼容的模型;在这个模型里,从端口分配、命名、服务发现、负载均衡、应用配置和迁移的角度来看,Pod 可以被视为虚拟机或物理机。

Kubernetes 强制要求所有网络设施都满足以下基本要求(从而排队了有意隔离网络的策略):

  • Pod 能够与所有其他节点上的 Pod 通信,且不需要网络地址转换(NAT)

  • 节点上的代码(比如:系统守护进程、kubelet)可以和节点上的所有 Pod 通信

说明:

对于支持在主机网络中运行 Pod 的平台(比如:Linux),当 Pod 挂载到节点上的宿主网络上时,它们仍可以不通过 NAT 和所有节点上的 Pod 通信。

这个模型不仅不复杂,而且还和 Kubernetes 的实现从虚拟机向容器平滑迁移的初衷相符,如果是要在虚拟机中运行,虚拟机有一个 IP,可以和项目中其他虚拟机通信。这里的模型是基本相同的。

Kubernetes 的 IP 地址存在于 Pod 范围内 —— 容器共享它们的网络命名空间 —— 包括它们的 IP 地址和 MAC 地址。这就意味着 Pod 内的容器都可以通过 localhost 访问对方端口。这也意味着 Pod 内的容器需要相互协调端口的使用,但是这和虚拟机中的进程你快手没有什么不同,这也被称为 “一个 Pod 一个 IP” 模型。

如何实现以上需求是所使用的特定容器运行时的细节。

也可以在 Node 本身请求端口,并用这类端口转发到 Pod(称之为主机端口),但这是一个很特殊的操作。转发方式如何实现也是容器运行时的细节。Pod 自己并不知道这些主机端口的存在。

Kubernetes 网络解决四方面的问题:

  • 一个 Pod 中的容器之间通过本地回路(loopback)通信。

  • 集群网络在不同 Pod 之间提供通信。

  • Service API 允许向外暴露 Pod 中运行的应用,以支持来自集群外部的访问。

    • Ingress 提供专门用于暴露 HTTP 应用、网站和 API 的额外功能。

  • 也可以使用 Service 来发布仅供集群内部使用的服务

使用 Service 连接到应用教程通过一个实际的示例来了解 Service 和 Kubernetes 如何联网。

集群网络解释了如何为集群设置网络,还概述了所涉及的技术。

上一页Job下一页服务

最后更新于2年前

这有帮助吗?