Kubernetes 入口支持
总结 云原生 Contrail® 网络™ 支持容器网络接口 (CNI) 与 Kubernetes 集成。本主题概述了云原生 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: LoadBalancer
等type: NodePort
字段。这些服务类型决定了控制器的流量路由和转发行为。例如,如果在字段中输入 a NodePort
type
,则控制平面会将端口范围(默认为 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-module 提供支持。NGINX 需要 Kubernetes v1.22 或更高版本。从 Contrail 网络 21.4 版开始,我们使用云原生 Contrail 网络作为软件定义网络 (SND) 解决方案,在环境中支持 NGINX 入口控制器。
有关安装说明,请参阅 NGINX 入口控制器安装 指南 。本指南包含使用几种不同方法(Docker、 minikube、 Helm)安装 NGINX 的说明。
HAProxy 入口控制器
HAProxy 入口控制器提供 TCP 和 HTTP 路由以及高可用性 (HA) 负载平衡。HAProxy 提供 运行时 API、 数据平面 API 和 无中断重新加载等功能。在动态、高流量环境中,用户不断部署、配置和终止 Pod、服务和微服务,这些功能十分出色。HAProxy 入口控制器 v0.13 需要 Kubernetes v1.19 或更高版本。
有关安装说明,请参阅 HAProxy 入门 指南。
您必须使用 Helm 安装和配置 HAProxy 入口控制器。有关更多信息 ,请参阅安装 Helm 。
轮廓入口控制器
轮廓入口控制器将 Envoy 代理部署为反向代理和负载平衡器。Envoy 是用于代理服务和通信的第 7 层总线网络。Envoy 部署为独立代理,而非库。因此,任何应用程序都可以访问 Envoy 的负载平衡功能。此实施适用于 Kubernetes 群集等分布式系统。Contour 的其他优势包括:
-
轻松安装和集成 Envoy。
-
多团队 Kubernetes 群集中的稳定入口支持。
-
动态更新和入口配置,不会中断或连接中断。
Contour 需要 Kubernetes 1.16 或更高版本。您必须在群集中启用基于角色的访问控制 (RBAC),才能使“轮廓”正常运行。
从 Contrail 网络 21.4 版开始,我们支持使用云原生 Contrail 网络作为 SDN 解决方案的环境中的轮廓入口控制器。
有关如何安装轮廓入口控制器的说明,请参阅 入门 指南。本指南包含有关如何使用 一种 或 Docker 安装和配置 Contour 的说明。安装类型或 Docker 后安装轮廓以运行入口控制器。