文档首页 > > 用户指南> 网络管理> 网络概述

网络概述

分享
更新时间:2020/09/18 GMT+08:00

云容器引擎通过将Kubernetes网络和华为云VPC深度集成,提供了稳定高性能的容器网络,能够满足多种复杂场景下工作负载间的互相访问。

约束与限制

  • 每个命名空间下,创建的服务数量不能超过6000个。此处的服务对应kubernetesservice资源,即工作负载所添加的服务。
  • 容器开启hostPort或hostNetwork网络模式后,若需对外提供服务,则需要给容器所在节点开启对应端口的安全组(containerPort)。

Service基本概念

Kubernetes中每一个工作负载会有一个或多个实例(Pod),每个实例(Pod)的IP地址由网络插件动态随机分配(Pod重启后IP地址会改变)。为屏蔽这些后端实例的动态变化和对多实例的负载均衡,引入了Service这个资源对象。

Service是一种资源,提供了我们访问单个或多个容器应用的能力。每个服务在其生命周期内,都拥有一个固定的IP地址和端口。每个服务对应了后台的一个或多个Pod,通过这种方式,客户端就不需要关心Pod所在的位置,方便后端进行方便的Pod扩容、缩容等操作。

用户在Kubernetes中可以部署各种容器,其中一部分是通过HTTP、HTTPS协议对外提供七层网络服务,另一部分是通过TCP、UDP协议提供四层网络服务。而Kubernetes定义的Service资源就是用来管理集群中四层网络的服务访问。

根据创建Service的type类型不同,可分成如下模式:

  • ClusterIP:默认类型,为服务分配集群虚拟IP,此时集群内部的pod可以通过服务名称寻址到服务的集群虚拟IP地址,集群外无效。
  • NodePort:在每个节点上为服务分配静态端口号,此时如果在集群外部访问任何一个节点的IP地址加指定的端口号,kube-proxy会将流量转发到服务的集群虚拟IP,再由虚拟IP寻址到Pod。
  • LoadBalancer:通过云服务供应商提供的load balancer向外部暴露服务,由指定的load balancer负责对NodePort与ClusterIP服务的路由。

ClusterIP和NodePort类型的Service,在不同云服务商或是自建集群中的行为表现通常情况下相同。而LoadBalancer类型的Service,由于使用了云服务商的负载均衡进行服务暴露,云服务商会围绕其负载均衡的能力提供不同的额外功能。例如,控制负载均衡的网络类型,后端绑定的权重调节等,详情请参见本章相关文档。

服务访问方式

在CCE中,支持以下类型的互联互通:

  • 集群内访问(ClusterIP)

    工作负载暴露给同一集群内其他工作负载访问的方式,可以通过集群内部域名访问。集群内部域名格式为“<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local”,例如“nginx.default.svc.cluster.local”。详细请参见集群内访问(ClusterIP)

  • 节点访问(NodePort)

    节点访问 ( NodePort )是指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。节点访问 ( NodePort )会路由到ClusterIP服务,这个ClusterIP服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。详细请参见节点访问(NodePort)

  • 负载均衡 ( LoadBalancer )

    通过弹性负载均衡从公网访问工作负载,与弹性IP方式相比提供了高可靠的保障,一般用于系统中需要暴露到公网的服务。访问方式由公网弹性负载均衡ELB服务地址以及设置的访问端口组成,例如“10.117.117.117:80”。详细请参见负载均衡 ( LoadBalancer )

  • DNAT网关 ( DNAT )

    “NAT网关”可以为集群节点提供网络地址转换服务,使多个节点可以共享使用弹性IP。与弹性IP方式相比增强了可靠性,弹性IP无需与单个节点绑定,任何节点状态的异常不影响其访问。访问方式由公网弹性IP地址以及设置的访问端口组成,例如“10.117.117.117:80”。详细请参见DNAT网关 ( DNAT )

七层负载均衡(Ingress)

通常情况下,service 和 pod 的 IP 仅可在集群内部访问。集群外部的请求需要通过负载均衡转发到 service 在 Node 上暴露的 NodePort 上,然后再由 kube-proxy 通过边缘路由器 (edge router) 将其转发给相关的 Pod 或者丢弃,而 Ingress 就是为进入集群的请求提供路由规则的集合。

Ingress 可以给 service 提供集群外部访问的 URL、负载均衡、SSL 终止、HTTP 路由等。为了配置这些 Ingress 规则,集群管理员需要部署一个 Ingress controller,它监听 Ingress 和 service 的变化,并根据规则配置负载均衡并提供访问入口。

Ingress 的组成部分:

  • Nginx:实现负载均衡到pod的集合。
  • Ingress Controller:从集群api获取services对应pod的ip到nginx配置文件中。
  • Ingress:为nginx创建虚拟主机。

Ingress的创建与管理请参见Ingress概述

网络策略(NetworkPolicy)

网络策略(NetworkPolicy)是一种关于pod间及pod与其他网络端点间所允许的通信规则的规范。

NetworkPolicy 资源使用标签选择pod,并定义选定pod所允许的通信规则,详细请参见NetworkPolicy

网络底层基础设施

  • VPC

    虚拟私有云(Virtual Private Cloud,以下简称VPC),是基于华为云创建的自定义私有网络,不同的专有网络之间彻底逻辑隔离。可以为云服务器、云数据库和负载均衡等构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。

    您可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性。用户可以通过VPC方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户可以自定义安全组内与组间弹性云服务器的访问规则,加强弹性云服务器的安全保护。具体请参见什么是虚拟私有云

    图1 VPC组成
  • ELB

    弹性负载均衡(Elastic Load Balance,简称ELB)是将访问流量根据转发策略分发到后端多台服务器的流量分发控制服务。弹性负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。具体请参见什么是弹性负载均衡

    图2 弹性负载均衡

    弹性负载均衡支持经典型、共享型两种负载均衡:

    • 经典型负载均衡:适用于访问量较小,应用模型简单的web业务。
    • 共享型负载均衡:适用于访问量较大的web业务,提供基于域名和URL的路由均衡能力,实现更加灵活的业务转发。

    两者的详细区别请参见共享型与经典型负载均衡的功能区别

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问