美文网首页
2020-08-03 Ingress(暴露应用对外访问的最佳方

2020-08-03 Ingress(暴露应用对外访问的最佳方

作者: 阿丧小威 | 来源:发表于2020-08-05 00:11 被阅读0次

    1. Pod与Ingress的关系

    • 通过service相关联
    • 通过Ingress Controller实现Pod的负载均衡
    • 支持TCP/UDP 4层和HTTP 7层
    图片.png

    2. IngressController

    图片.png

    1.部署Ingress Controller
    2.创建Ingress规则

    Ingress Controller有很多实现,我们这里采用官方维护的Nginx控制器。
    Github:https://github.com/kubernetes/ingress-nginx
    部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
    注意事项:

    • 镜像地址修改成国内的:lizhenliang/nginx-ingress-controller:0.30.0
    • 建议直接宿主机网络暴露:hostNetwork: true ---使用宿主机的网络,确保80和443暴露到node上
      -除了官网的,使用预先定义好的yaml

    其他主流控制器:
    Traefik:HTTP反向代理、负载均衡工具
    Istio:服务治理,控制入口流量

    3. Ingress HTTP网站测试

    准备yaml文件simple-fanout-example.yaml

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: example-ingress
    spec:
      rules:
      - host: example.ctnrs.com    ---配置域名(域名记得解析到服务器)
        http:
          paths:
          - path: /
            backend:
              serviceName: web    ---service的名称
              servicePort: 80    ---clauster IP端口(应用的端口,例如nginx默认是80)
    

    执行kubectl apply -f simple-fanout-example.yaml创建。
    kubectl get ingress查看创建的ingress对象。
    然后我们使用http://foo.bar.com 就可以访问服务了。

    4. Ingress HTTPS网站测试

    首先我们要准备好使用的ssl证书;自签或购买的都是可以的。我们使用自签方式进行演示。
    自签证书在前面高可用集群教程https://www.jianshu.com/writer#/notebooks/33131248/notes/72493644/preview里面第5步的域名替换成我们想要颁发的即可。

    kubectl get secert 查看我们创建的数字信息。
    为ingress-https.yaml设置证书

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: tls-example-ingress
    spec:
      tls:
      - hosts:
        - sslexample.ctnrs.com
        secretName: sslexample-ctnrs-com    ---证书名
      rules:
      - host: sslexample.ctnrs.com
        http:
          paths:
          - path: /
            backend:
              serviceName: my-service
              servicePort: 80
    

    执行kubectl apply -f ingress-https.yaml创建。
    通过htts://sslexample.ctnrs.com即可访问。

    5. Ingress主要功能

    • 支持4层、7层负载均衡
    • 支持独定义service访问策略
    • 只支持基于域名的网站访问
    • 支持tls

    6. 故障排查

    Ingress工作原理 图片.png
    • kubectl logs type/name #查看容器日志
    • kuberctl describe type/name #查看容器详细描述
    • kubectl exec -it POD [-c CONTAINER] -- COMMAND [args...] #进入容器内部查看

    相关文章

      网友评论

          本文标题:2020-08-03 Ingress(暴露应用对外访问的最佳方

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