Kubernetes 入口支持
总结 云原生 Contrail® 网络™ 支持与 Kubernetes 集成的容器网络接口 (CNI)。本主题概述了云原生 Contrail 网络中的 Kubernetes 入口服务实施。本主题还包含经过验证的 Kubernetes 入口控制器及其安装说明列表。
入口控制器概述
必须具有用于入口的 Kubernetes 入口控制器才能正常运行。入口控制器从 Kubernetes 群集外部接收流量,以及向群集内容器传输的路由和负载平衡。入口控制器还会管理群集内服务与外部服务之间的出口流量。控制器会根据服务需求自动将流量路由到容器。
入口控制器部署入口资源。入口资源包括指定哪些入站流量连接到达哪些服务 (pod) 的规则。入口资源与入口控制器相结合,将第 7 层流量路由到集群中的容器。
以下是 NGINX 入口资源的示例:
apiVersion: apps/v1 kind: Deployment metadata: name: apple-app-echo namespace: ingress-nginx-test spec: selector: matchLabels: app: apple-echo replicas: 1 template: metadata: labels: app: apple-echo spec: containers: - name: apple-echo image: svl-artifactory.juniper.net/atom-docker/cn2/http-echo:latest args: - "-text=apple-echo"
入口资源包含spec
和 type: NodePort
type: LoadBalancer
。这些服务类型决定控制器的流量路由和转发行为。例如,如果在字段中type
输入NodePort
,控制平面会将一个端口从范围(默认 30000–32767)分配给您的服务。
请考虑以下示例:
apiVersion: v1 kind: Service metadata: name: envoy namespace: projectcontour annotations: spec: #externalTrafficPolicy: Local ports: - port: 80 name: http protocol: TCP nodePort: 30080 targetPort: 8080 - port: 443 name: https protocol: TCP targetPort: 8443 nodePort: 30443 selector: app: envoy type: NodePort
以上示例中的一些亮点包括:
-
selector
:用于确定此服务目标的一组 Pod 的标签选择器。在此示例中,此服务会选择带有标签app: envoy
的任何 Pod。 -
port
:服务端口 (80)。 -
targetPort
:应用程序在容器中使用的实际端口 (8080)。 -
nodePort
:服务所接触到的群集中每个节点主机上的端口 (30080)。
不同的入口控制器需要不同的配置。查看入口控制器的文档,了解 注释、规范和配置信息。
NGINX 入口控制器
NGINX 是一种开源 HTTP 服务器,也可用作反向代理、负载平衡器以及 IMAP 或 POP3 代理服务器。NGINX 入口控制器是一种 Kubernetes 控制器,可使用 ConfigMap 资源部署 NGINX 配置。除了仅端点更改之外,您必须在发生任何更改后重新加载 NGINX 到配置文件。此重新加载机制由 lua-nginx 模块供电。NGINX 需要 Kubernetes v1.22 或更高版本。我们使用云原生 Contrail 网络作为 SDN(软件定义网络)解决方案(从 Contrail 网络版本 21.4 开始)支持环境中的 NGINX 入口控制器。
有关安装说明,请参阅 NGINX 入口控制器 安装指南 。本指南包含使用多种不同方法(Docker、 minikube、 Helm)安装 NGINX 的说明。
HAProxy 入口控制器
HAProxy 入口控制器提供 TCP 和 HTTP 路由以及高可用性 (HA) 负载平衡。HAProxy 提供 Runtime API、 数据平面 API 和 无中断重负载等功能。这些功能在动态、高流量环境中表现出色,用户可在其中不断部署、配置和终止 pod、服务和微服务。HAProxy 入口控制器 v0.13 需要 Kubernetes v1.19 或更高版本。
有关安装说明,请参阅 HAProxy 入门 指南。
您必须使用 Helm 来安装和配置 HAProxy 入口控制器。有关详细信息,请参阅 Installing Helm 。
轮廓入口控制器
Contour 入口控制器将特使代理部署为反向代理和负载平衡器。特使是第 7 层总线网络,用于代理服务和通信。特使部署为自成一体的代理,而不是图书馆。因此,任何应用程序都可以访问特使的负载平衡功能。此实施适用于 Kubernetes 群集等分布式系统。Contour 的其他优势包括:
-
易于安装和集成特使
-
多团队 Kubernetes 群集中稳定的入口支持。
-
动态更新和入口配置,不会中断或中断连接。
Contour 需要 Kubernetes 1.16 或更高版本。您必须在集群中启用基于角色的访问控制 (RBAC),以便 Contour 正常运行。
从 Contrail 网络版本 21.4 开始,我们使用云原生 Contrail 网络作为 SDN 解决方案在环境中支持 Contour 入口控制器。
有关如何安装 Contour 入口控制器的说明,请参阅 入 门指南。本指南包含有关如何使用 类型 或 Docker 安装和配置 Contour 的说明。安装种类后安装 Contour 或 Docker 以运行您的入口控制器。