Skip to content

Latest commit

 

History

History
39 lines (25 loc) · 3.16 KB

advanced-networking.md

File metadata and controls

39 lines (25 loc) · 3.16 KB

7.7 Kubernetes 中网络的高级主题

  下面我将介绍两个与Kubernetes网络相关的高级主题:网络策略和服务网格。

Network Policies

  Kubernetes中的网络策略允许您指定如何允许pod间彼此进行通信。Kubernetes 1.7及以上版本的网络策略被认为是稳定的,因此您可以在生产中使用它们。

  我们来看看具体的一个例子。例如,假设您想禁止所有通往superprivate namespace中所有pod的流量。您可以为该namespace创建默认的Egress策略,如下例所示:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
    name: bydefaultnoegress
    namespace: superprivate
spec:
    podSelector: {}
    policyTypes:
    - Egress

  请注意,不同的Kubernetes发行版在不同程度上支持网络策略:例如,在OpenShift中,它们作为一等公民受到支持,并且可以通过redhat-cop/openshitoolkit 找到一系列的示例。

  如果您想了解更多关于如何使用网络策略的信息,请查看Ahmet Alp Balkan的实用且详尽的博客“Securing Kubernetes Cluster Networking”.

Service Meshes

  展望未来,您可以使用服务网格,例如下面所要讨论的两款服务网格方案。服务网格的想法是,开发人员不必把网络通信和控制的负担放到自己身上,而是将这些工作外包给服务网格。因此,您可以从流量控制,可观察性,安全性等方面受益,而无需对源代码进行任何的更改。是不是特别棒?

Istio

  Istio是目前最流行的服务网格,可用于Kubernetes,但不完全如此。它使用Envoy作为默认数据平面,它自己主要侧重于控制平面方面。仅举几例功能,它支持监视(Prometheus),跟踪(Zipkin/Jaeger),断路器,路由,负载平衡,故障注入,重试,超时,镜像,访问控制和速率限制等。Istio需要将Envoy代理作为sidecar容器部署在您的pod中。你可以通过Christian Posta的文章了解更多关于Istio的信息:Deep Dive Envoy and Istio Workshop

Conduit

  Conduit由作为数据平面(由Rust编写)的sidecar容器和管理这些代理的控制平面(用Go编写)组成,类似于Istio。在CNCF项目[Linkerd]之后,这是Buoyant关于服务网格思想的第二次迭代; 他们是这个领域的先锋,且在2016年建立了服务网格概念。通过Abhishek Tiwari的博客文章“Getting started with Con‐ duit - lightweight service mesh for Kubernetes”了解更多信息。

  在我们结束本章和本书之前还有一点需要注意:服务网格还是很新的,所以你将其用于生产环境之前三思而行。