k8s中的Ingress

Ingress

Service的统一网关入口
在这里插入图片描述

安装

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

# 修改镜像
vi deploy.yaml
# 将image的值修改为如下值
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0
# 安装
kubectl apply -f deploy.yaml
# 检查安装结果
kubectl get pod,svc -n ingress-nginx
# 最后要记得把svc暴露的端口放行

使用

  • 测试环境
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:
      - name: hello-server
        image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/hello-server
        ports:
        - containerPort: 9000
---
apiVersion: apps/v1
kind: Deployment
metadata: 
  labels:
    app: nginx-demo
  name: nginx-demo
spec:
  replicas: 2
  selector:
    matchLabels: 
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec: 
      containers:
      - image: nginx
        name: nginx
---
apiVersion: v1
kind: Service
metadata: 
  labels:
    app: nginx-demo
  name: nginx-demo
spec:
  selector:
    app: nginx-demo
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 80
---
apiVersion: v1
kind: Service
metadata: 
  labels:
    app: hello-server
  name: hello-server
spec:
  selector:
    app: hello-server
  ports:
  - port: 8000
    protocol: TCP
    targetPort: 9000
kubectl apply -f test.yaml
kubectl get svc

在这里插入图片描述

域名访问

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: 
  name: Ingress-host-bar
spec:
  ingressClassName: nginx
  rules: 
  - host: "hello.qrxqrx.com"
    http: 
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: hello-server
            port: 
              number: 8000
  - host: "demo.qrxqrx.com"
    http: 
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: nginx-demo
            port: 
              number: 8000
kubectl apply -f ingress-rule.yaml
kubectl get ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: 
  name: Ingress-host-bar
spec:
  ingressClassName: nginx
  rules: 
  - host: "hello.qrxqrx.com"
    http: 
      paths:
      - pathType: Prefix
        path: "/hello"
        backend:
          service:
            name: hello-server
            port: 
              number: 8000

流量限制

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.qrxqrx.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、付费专栏及课程。

余额充值