zoukankan      html  css  js  c++  java
  • Kubernetes(二十一)Intergress

     
    • Ingress是什么?
      •  之前我们了解到NodePort、LoadBalancer两种方法可以让pod暴露给外部访问,并且通过NodePort我们需要提前规划端口,避免应用越来越来越多的时候变得端口难以分配管理;并且每一个service都会创建一个负载均衡服务,导致成本比较高。那么有没有一种可以提供全局负载均衡器呢?那么kubernetes采用ingress来实现。
      • ingress公开了从集群外部访问到集群内部serivced的http和https路由。路由流量由ingress资源上定义规则控制。
            internet
                |
           [ Ingress ]
           --|-----|--
           [ Services ]
         
      • Ingress不会公布任意端口或协议,将http和https以外的服务公开到internet时,通常使用service.Type=NodePort或者service.Type=LoadBalancer  
      • ingress通过URL、域名将请求转发到不同的service,支持tcp/UDP 4层、7层负责均衡。ingress是访问规则的集合,具体是由ingress Controller(ingress Controller是在node上运行) 实现Pod的负责均衡。    
    • 环境准备
    • Ingress HTTP
      • 准备simple-fanout-example.yaml
      • apiVersion: networking.k8s.io/v1beta1
        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 #service的名称
                  servicePort: 4200 #clauster IP端口(应用的端口,例如nginx默认是8080)
              - path: /bar
                backend:
                  serviceName: service2
                  servicePort: 8080

      • kubectl apply -f simple-fanout-example.yaml #执行创建
      • kubectl get ingress #查看创建的ingress对象
      • 然后我们使用http://foo.bar.com/foo:4200 就可以访问服务了
    • Ingress HTTPS
      • 首先我们要准备好使用的ssl证书;自签或购买的都是可以的。我们使用自签方式进行演示
      • 自签证书教程 https://www.cnblogs.com/TSir/p/12213175.html 里面的域名替换成我们想要颁发的即可
      • 创建 tls.yaml
        apiVersion: v1
        kind: Secret
        metadata:
          name: testsecret-tls
          namespace: default
        data:
          tls.crt: foo.bar.com.pem
        tls.key: foo.bar.com-key .pem
        type: kubernetes.io/tls
      • kubectl get secert #查看我们创建的数字信息
      • 为simple-fanout-example.yaml设置证书
        apiVersion: networking.k8s.io/v1beta1
        kind: Ingress
        metadata:
          name: tls-example-ingress
        spec:
          tls:
          - hosts:
            - foo.bar.com
        secretName: testsecret-tls rules: - host: sslexample.foo.com http: paths: - path: / backend: serviceName: service1 servicePort: 80
      • 通过htts://foo.bar.com即可访问
    • Ingress 主要功能
      • 支持4层、7层负载均衡
      • 支持独定义service访问策略
      • 只支持基于域名的网站访问
      • 支持tls     
  • 相关阅读:
    知识付费时代:屌丝程序员如何用技术实现
    过完年了,要不要辞职?
    程序猿不得不知道的业内“黑话”
    Go 2 Draft Designs
    11 Go 1.11 Release Notes
    10 Go 1.10 Release Notes
    09 Go 1.9 Release Notes
    win10系统电脑无法识别u盘的解决办法
    IDEA导入Git项目后右键项目找不到Git选项的解决方法
    Redis在windows下安装与配置
  • 原文地址:https://www.cnblogs.com/TSir/p/12269691.html
Copyright © 2011-2022 走看看