1 概述

1.1 使用ingress之前

  • 通过端口号对暴露,通过ip+端口号进行访问

    • 使用service里面的nodeport实现

      1.2 NodePort的缺陷

  • 在每个节点上面都会启动端口,在访问时通过任何节点,通过节点ip+暴露端口号实现访问

  • 意味着每个端口只能使用一次,一个端口对应一个应用
  • 实际访问中都是用域名,根据不同域名跳转到不同端口服务中

1.3 Ingress和Pod关系

  • pod和ingress通过service关联
  • ingress作为统一入口,由service关联一组pod

1.4 ingress工作流程

2 使用ingress

2.1 部署ingress Controller

  1. // 1 创建应用
  2. kubectl create deployment web --image=nginx
  3. // 2 暴露应用
  4. kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
  5. // 3 部署ingress Controller
  6. // 方法1:拉取镜像需翻墙
  7. kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/cloud/deploy.yaml
  8. // 4 查看ingress状态
  9. kubectl get pods -n ingress-nginx

2.2 创建ingress规则

2.2.1 创建ingress.yaml

  1. apiVersion: networking.k8s.io/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: example-ingress
  5. spec:
  6. rules:
  7. - host: example.ingredemo.com
  8. http:
  9. paths:
  10. - path: /
  11. backend:
  12. serviceName: web
  13. serviceProt: 80

2.2.2 执行yaml文件

  1. // 创建应用
  2. kubectl apply -f ingress.yaml
  3. // 通过浏览器访问