网络模型 - 每天5分钟玩转 Docker 容器技术(169)

Posted CloudMan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络模型 - 每天5分钟玩转 Docker 容器技术(169)相关的知识,希望对你有一定的参考价值。

第169篇

网络模型

本节我们讨论 Kubernetes 网络这个重要主题。

Kubernetes 作为编排引擎管理着分布在不同节点上的容器和 Pod。Pod、Service、外部组件之间需要一种可靠的方式找到彼此并进行通信,Kubernetes 网络则负责提供这个保障。本章包括如下内容:

  1. Kubernetes 网络模型

  2. 各种网络方案

  3. Network Policy

Kubernetes 网络模型

这种网络模型对应用开发者和管理员相当友好,应用可以非常方便地从传统网络迁移到 Kubernetes。每个 Pod 可被看作是一个个独立的系统,而 Pod 中的容器则可被看做同一系统中的不同进程。

下面讨论在这个网络模型下集群中的各种实体如何通信。知识点前面都已经涉及,这里可当做复习和总结。

Pod 内容器之间的通信

当 Pod 被调度到某个节点,Pod 中的所有容器都在这个节点上运行,这些容器共享相同的本地文件系统、IPC 和网络命名空间。

比如 Pod A 有两个容器 container-A1 和 container-A2,container-A1 在端口 1234 上监听,当 container-A2 连接到 localhost:1234,实际上就是在访问 container-A1。这不会与同一个节点上的 Pod B 冲突,即使 Pod B 中的容器 container-B1 也在监听 1234 端口。

Pod 之间的通信

Pod 与 Service 的通信

外部访问

无论是 Pod 的 IP 还是 Service 的 Cluster IP,它们只能在 Kubernetes 集群中可见,对集群之外的世界,这些 IP 都是私有的。

Kubernetes 提供了两种方式让外界能够与 Pod 通信:

  1. NodePort
    Service 通过 Cluster 节点的静态端口对外提供服务。外部可以通过 
    <NodeIP>:<NodePort> 访问 Service。

  2. LoadBalancer
    Service 利用 cloud provider 提供的 load balancer 对外提供服务,cloud provider 负责将 load balancer 的流量导向 Service。目前支持的 cloud provider 有 GCP、AWS、Azur 等。

以上就是 Kubernetes 网络模型的相关讨论。
下一节我们来看看 Kubernetes 支持的网络方案。

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html(点击“阅读原文”直达)

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

以上是关于网络模型 - 每天5分钟玩转 Docker 容器技术(169)的主要内容,如果未能解决你的问题,请参考以下文章

k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)

k8s 各种网络方案 - 每天5分钟玩转 Docker 容器技术(170)

14《每天5分钟玩转Docker容器技术》学习--一张图了解docker网络

如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)

如何自定义容器网络?- 每天5分钟玩转 Docker 容器技术(33)

学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)