kubernetes-ingress
首页->学习资料->微服务治理->k8s 关键词: 发布时间:2023-01-05 22:52:50 浏览次数:363

Ingress

它是service的统一网关入口,它其实就是通过nginx实现的

通过ingress可以实现按url将请求分配到不同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 deply.yaml

# 检查安装的结果

kubectl get pod,svc -n ingress-nginx


# 最后别忘记把service暴露的端口要放行


【应用举例】

以下通过deployment部署两个service:

hello-server(对应pod为hello-server)

nginx-demo(对应pod为nginx)

----------------------------------------

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


以下再部署一个ingress,实现通过hello.atguigu.com访问hello-server服务,demo.atguigu.com访问nginx-demo服务

-----------------------

apiVersion: networking.k8s.io/v1

kind: Ingress  

metadata:

  name: ingress-host-bar

spec:

  ingressClassName: nginx

  rules:

  - host: "hello.atguigu.com"

    http:

      paths:

      - pathType: Prefix

        path: "/"

        backend:

          service:

            name: hello-server

            port:

              number: 8000

  - host: "demo.atguigu.com"

    http:

      paths:

      - pathType: Prefix

        path: "/nginx"  # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404

        backend:

          service:

            name: nginx-demo  ## java,比如使用路径重写,去掉前缀nginx

            port:

              number: 8000



-------------------------路径重写------------------------

apiVersion: networking.k8s.io/v1

kind: Ingress  

metadata:

  annotations:

    nginx.ingress.kubernetes.io/rewrite-target: /$2

  name: ingress-host-bar

spec:

  ingressClassName: nginx

  rules:

  - host: "hello.atguigu.com"

    http:

      paths:

      - pathType: Prefix

        path: "/"

        backend:

          service:

            name: hello-server

            port:

              number: 8000

  - host: "demo.atguigu.com"

    http:

      paths:

      - pathType: Prefix

        path: "/nginx(/|$)(.*)"  # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404

        backend:

          service:

            name: nginx-demo  ## java,比如使用路径重写,去掉前缀nginx

            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.atguigu.com"

    http:

      paths:

      - pathType: Exact

        path: "/"

        backend:

          service:

            name: nginx-demo

            port:

              number: 8000


赞:(0)
踩:(0)
相关文章
虚拟机环境搭建及各种坑及前期准备
kubernetes集群环境搭建-公共操作
主节点及node节点配置
名称空间namespace
kubernetes-pod
kubernetes-deployment
kubernetes-service
kubernetes-存储抽象pv&pvc
kubernetes-ConfigMap
kubernetes-Secret
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:948034
粤ICP备18028092号-1  微信:hurong241