k8s-Ingress

Ingress 核心概念

Ingress:Service的统一网关入口 (是一个代理,可以根据配置转发请求到指定的服务上)

Ingress Controller安装
wget  https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/baremetal/deploy.yaml


wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/baremetal/deploy.yaml


# 查看 image
mv deploy.yaml ingress.yaml
cat ingress.yaml | grep image:


# 替换镜像

sed  -i 's#registry.k8s.io/ingress-nginx/controller:v1.8.1@sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd#registry.cn-hangzhou.aliyuncs.com/image-storage/controller:v1.6.4#' ingress.yaml


sed  -i 's#registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b#registry.cn-hangzhou.aliyuncs.com/image-storage/kube-webhook-certgen:v20220916-gd32f8c343#' ingress.yaml


# 安装
kubectl apply -f ingress.yaml

kubectl get svc -A
kubectl get pods -A


ingress-nginx          ingress-nginx-controller             NodePort    10.103.177.22    <none>        80:30792/TCP,443:30523/TCP   3m42s

http://192.168.0.11:30792
https://192.168.0.11:30523

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

创建 Ingress对象

创建Deployment Service测试
vim test.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-server
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello-server
  template:
    metadata:
      labels:
        app: hello-server
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/hello-server
        name: hello-server
        ports:
        - containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
  labels:
    app: nginx-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - image: nginx
        name: nginx

---
apiVersion: apps/v1
kind: Service
metadata:
  labels:
    app: nginx-demo
  name: nginx-demo
spec:
  selector:
    app: nginx-demo
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 80
---
apiVersion: apps/v1
kind: Service
metadata:
  labels:
    app: hello-server
  name: hello-server
spec:
  selector:
    app: hello-server
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 9000


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

通过访问 Service IP : Service Port 进而访问 Pod应用

创建 ingress


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-host-test
spec:
  ingressClassName: nginx
  rules:
  - host: "hello.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: hello-server
            port:
              number: 8000
  - host: "nginx.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: nginx-demo
            port:
              number: 8000

通过配置域名访问

192.168.0.200 nginx.yy.com
192.168.0.200 hello.yy.com
192.168.0.11    nginx.yy.com
192.168.0.11    hello.yy.com

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

支持域名IP访问


apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-host-test
spec:
  ingressClassName: nginx
  rules:
  - host: "hello.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: hello-server
            port:
              number: 8000
  - host: "nginx.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: nginx-demo
            port:
              number: 8000
  - http:
      paths:
      - pathType: Prefix
        path: /nginx
        backend:
          service:
            name: nginx-demo
            port:
              number: 8000
      - pathType: Prefix
        path: /hello
        backend:
          service:
            name: hello-server
            port:
              number: 8000

在这里插入图片描述

在这里插入图片描述

Ingress对Service负载均衡,Service对Pod负载均衡

在这里插入图片描述

Ingress路径重写
# 路径重写
annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-host-test
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
  - host: "hello.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: hello-server
            port:
              number: 8000
  - host: "nginx.yy.com"
    http:
      paths:
      - pathType: Prefix
        path: "/nginx(/|$)(.*)"
        backend:
          service:
            name: nginx-demo
            port:
              number: 8000

Ingress 流量限制
 annotations: 
   nginx.ingress.kubernetes.io/limit-rps: "1"
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-limit-rate
  annotations:
    nginx.ingress.kubernetes.io/limit-rps: "1"
spec:
  ingressClassName: nginx
  rules:
  - host: "haha.yy.com"
    http:
      paths:
      - pathType: Exact
        path: "/"
        backend:
          service:
            name: nginx-demo
            port:
              number: 8000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值