美文网首页
Kubernetes YAML 详解之网络服务二( Ingres

Kubernetes YAML 详解之网络服务二( Ingres

作者: 河码匠 | 来源:发表于2023-02-21 09:15 被阅读0次

一、Ingress YAML

对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP
可以提供负载均衡、SSL 终结和基于名称的虚拟托管。
Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由
Ingress 可为 Service 提供外部可访问的 URL、负载均衡流量、终止 SSL/TLS,以及基于名称的虚拟托管。
Ingress controller 通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置>边缘路由器或其他前端来帮助处理流量。
以上官方解释

说白了就是 ingress 在管理 HTTP、HTTPS 这些需要流量转发的规则。
Ingress controller 是在和 kubernetes API 进行沟通实时获取后端 servicepod 等资源状态。
最终 ingressIngress controller 绑定,动态的将规则或配置写入到服务中。

kubectl explain Ingress
kubectl explain Ingress.meatdata
  • Ingress 的 Ingress.spec 字段

kubectl explain Ingress.spec
字段 值类型 说明
defaultBackend Object
ingressClassName string 绑定到指定的 ingressClassingressClass.metadata.name 的值
rules []Object 定义规则:

host:定义请求的域名

http: 指向后端的 http 选择器列表; \color{red}{看}\color{blue}{kubectl explain Ingress.spec.rules.http.path}
tls []Object 加密规则(HTTPS 是在 HTTP 协议基础上实施 TLS 加密)

host:定义请求的域名

secretNamesecret 资源名
  • kubectl explain Ingress.spec.rules.http.path
字段 值类型 说明
backend Object 定义后端 \color{red}{看}\color{blue}{kubectl explain Ingress.spec.rules.http.path.backend}
path string 要被代理的路径
* pathType string path 的匹配方式

Prefix:基于以 / 分隔的 URL 路径前缀匹配。匹配区分大小写,并且对路径中的元素逐个完成。 路径元素指的是由 / 分隔符分隔的路径中的标签列表。

Exact:精确匹配 URL 路径,且区分大小写
  • kubectl explain Ingress.spec.rules.http.path.backend 定义后端
字段 值类型 说明
resource Object 指向同一命名空间中的另一个 Kubernetes 资源,将其作为 Ingress 对象
service Object 指定要使用的四层代理

* name: Service 的名字
port: 设置端口号。这里是 Service 的端口号
    number:端口号
    name: 名字

示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  namespace: default
spec:
  ingressClassName: nginx       # 指定 ingressClass 的名字
  rules:
  - host: xx.xxx.com            # 将要被访问的域名
    http:
      paths:                    # 定义路径类型
      - backend:                # 定义后端
          service:              # 定义 service 服务
            name: xxxxxx        # Service 服务的名字
            prot:               # 设置端口号。这里是 Service 的端口号
              number: 8080      # 端口号
        path: /                 # 指定代理的路径
        pathTpye: Prefix        # path 匹配方式
  

创建成功后,会把 Service 这个后端的信息,写入到 ingress-controller 里面

二、IngressClasses YAML

Ingress 可以由不同的控制器实现,通常使用不同的配置。
每个 Ingress 应当指定一个类,也就是一个对 IngressClass 资源的引用。
IngressClass 资源包含额外的配置,其中包括应当实现该类的控制器(Ingress Controller)名称。

  • IngressClass.spec
字段 值类型 说明
controller string Ingress Controller 的名字
parameters 指向控制器中包含额外配置的自定义资源的链接

Object
apiGroup: 被引用资源的组
* kind: 被引用资源的类型
* name: 被引用资源的名称
namespace: 被引用资源的命名空间
scope: 否引用集群或者命名空间范围的资源

示例:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
  namespace: ingress-nginx
spec:
  controller: k8s.io/ingress-nginx  # 定义 ingress controller 名字

三、创建 Ingress Nginx Controller

官方文档

相关文章

网友评论

      本文标题:Kubernetes YAML 详解之网络服务二( Ingres

      本文链接:https://www.haomeiwen.com/subject/pcevkdtx.html