zoukankan      html  css  js  c++  java
  • ingress

    Ingress

    Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。

    基本Ingress

    在Kubernetesv 1.1版中添加的Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。

    Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议。

    创建Ingress

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: simple-fanout-example
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - host: foo.bar.com
        http:
          paths:
          - path: /foo
            backend:
              serviceName: service1
              servicePort: 4200
          - path: /bar
            backend:
              serviceName: service2
              servicePort: 8080Copy to clipboardErrorCopied
    

    上述host定义该Ingress的域名,将其解析至任意Node上即可访问。

    • 如果访问的是foo.bar.com/foo,则被转发到service1的4200端口。
    • 如果访问的是foo.bar.com/bar,则被转发到service2的8080端口。

    Ingress Rules

    • host:可选,一般都会配置对应的域名。
    • path:每个路径都有一个对应的serviceName和servicePort,在流量到达服务之前,主机和路径都会与传入请求的内容匹配。
    • backend:描述Service和Port的组合。对Ingress匹配主机和路径的HTTP与HTTPS请求将被发送到对应的后端。

    普通Ingress

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: ingress-deployment
      namespace: default
      labels:
        app: deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: pod
      template:
        metadata:
          labels:
            app: pod
        spec:
          containers:
            - name: ingress-pod
              image: nginx
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 80
                  name: http
    
                - containerPort: 443
                  name: https
    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: ingress-service
      namespace: default
      labels:
        app: svc
    spec:
      type: ClusterIP
      selector:
        app: pod
      ports:
        - port: 80
          targetPort: 80
          name: http
        - port: 443
          targetPort: 443
          name: https
    ---
    kind: Ingress
    apiVersion: extensions/v1
    metadata:
      name: ingress-ingress
      namespace: default
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
        - host: www.test.com
          http:
            paths:
              - path: /
                backend:
                  serviceName: ingress-service
                  servicePort: 80Copy to clipboardErrorCopied
    

    基于TLS的Ingress

    1. 创建证书,生产环境的证书为公司购买的证书

      [root@instance-gvpb80ao yaml]# openssl genrsa -out tls.key 2048
      Generating RSA private key, 2048 bit long modulus
      .........+++
      ......+++
      e is 65537 (0x10001)
      [root@instance-gvpb80ao yaml]# openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=ShangHai/L=ShangHai/O=Ingress/CN=www.test.com
      [root@instance-gvpb80ao yaml]# kubectl -n default create secret tls ingress-tls --cert=tls.crt --key=tls.key
      secret/ingress-tls created
      [root@instance-gvpb80ao yaml]# kubectl get secrets
      NAME                  TYPE                                  DATA   AGE
      ingress-tls           kubernetes.io/tls                     2      9sCopy to clipboardErrorCopied
      
    2. 定义Ingress

    kind: Ingress
    apiVersion: extensions/v1
    metadata:
      name: ingress-ingress
      namespace: default
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      tls:
        - secretName: tls
      rules:
        - host: www.test.com
          http:
            paths:
              - path: /
                backend:
                  serviceName: ingress-service
                  servicePort: 80Copy to clipboardErrorCopied
    

  • 相关阅读:
    hdu 2227
    小A的数学题
    E
    F
    C
    Ping-Pong (Easy Version)的解析
    余数之和BZOJ1257
    大数求余
    数论学习 算法模板(质数,约数)
    Acwing 197. 阶乘分解
  • 原文地址:https://www.cnblogs.com/tcy1/p/13832464.html
Copyright © 2011-2022 走看看