「KUBERNETES-ADDONS」- 部署 Ingress Controller 组件

  CREATED BY JENKINSBOT

问题描述

该部分笔记将记录:在 Kubernetes Cluster 中,如何部署 Ingress Controller 组件,以及常见问题处理。

解决方案

注意事项:该部分笔记以 Ingress Controller 管理为主,并不包含 Ingress 使用方法。

Ingress, Ingress Controllers, Nginx Ingress Controller

在 Kubernetes 中,所有的”资源定义“(YAML)只是仅是”声明“,而真正应用这些”声明“的是 Controller 组件,它才是真正工作的组件。

假如我们定义如下 Ingress 资源,来接受 example.com 的 HTTP 请求,将其转发到 nginx-default 服务(Service):

# ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-default
spec:
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          serviceName: nginx-default
          servicePort: 80

很明显我们这里仅是定义配置,那么在集群里中必须有组件来应用这些配置(否则没有任何意义)。这就是在集群中运行的 Ingress Controller 组件的任务,Ingress Controller 读取 Ingress 定义,并保证这些配置得到执行。

Nginx Ingress Controller 则是 Ingress Controller 的一种,还有 Traefik Ingress Controller、HAProxy Ingress Controller 等等。这些 Ingress Controller 读取 Ingress 配置,并转化为各自的配置文件,并运行各自的程序。比如 Nginx Ingress Controller 读取 Ingress 配置,转化为 nignx.conf 配置,并运行 nginx 程序,来处理请求。

部署 Ingress Controller 组件

1)+NGINX Ingress Controller
2)+Traefik Kubernetes Ingress

参考文献

Ingress | Kubernetes
Ingress Controllers | Kubernetes