最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx ingress的具體使用

 更新時間:2024年05月11日 09:25:58   作者:*老工具人了*  
本文主要介紹了nginx ingress的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、ingress概述

1、概述

Kubernetes是一個擁有強大故障恢復功能的集群,當pod掛掉時,集群會重新創(chuàng)建一個pod出來,但是pod的IP也會隨之發(fā)生變化,為了應對這種情況,引入了service,通過service的標簽匹配,來進行后端的pod服務發(fā)現(xiàn),并提供傳輸層的負載均衡。然后我們再通過service的nodeport模式將端口映射到宿主機,這樣我們就完成了集群內(nèi)的服務對外暴漏。

但是如果我們想配置基于http的負載均衡,怎么辦呢?可能會想到,再部署一個nginx的pod,以daemonset的形式運行在集群內(nèi),綁定宿主機的80端口,后端直接配置對應的serivce就可以了,

但是當后端有新的服務的時候,就需要更新nginx pod的配置文件,會比較麻煩。這個時候,ingress就出現(xiàn)了。ingress就是原來你需要修改nginx配置文件,現(xiàn)在把它做成了一個ingress對象,可以通過yaml的形式進行創(chuàng)建,ingress controller的功能就是與apiesrver交互,發(fā)現(xiàn)ingress配置文件的變化,生成nginx可以理解的配置,在寫到nginx 的配置文件中

在這里插入圖片描述

2、功能

  • 將Kubernetes內(nèi)部的服務暴漏出去
  • 提供基于http層的流量負載均衡(基于主機頭或者URL)
  • 提供TLS/SSL加密

ingress是通過service的服務發(fā)現(xiàn)功能來發(fā)現(xiàn)后端的pod,然后流量直接發(fā)給pod,而不經(jīng)由service,所以要比nodeport的方式網(wǎng)絡損耗更小。

3、核心概念

  • host:未指定 host,因此該規(guī)則適用于通過指定 IP 地址的所有入站 HTTP 通信。 如果提供了 host(例如 foo.bar.com),則 rules 適用于該 host
  • rules:用于定義當前Ingress資源的轉(zhuǎn)發(fā)規(guī)則列表;由rules定義規(guī)則,或沒有匹配到規(guī)則時,所有的流量會轉(zhuǎn)發(fā)到由backend定義的默認后端。
  • backend:默認的后端用于服務那些沒有匹配到任何規(guī)則的請求;定義Ingress資源時,必須要定義backend或rules兩者之一,該字段用于讓負載均衡器指定一個全局默認的后端。
  • tls:TLS配置,目前僅支持通過默認端口443提供服務,如果要配置指定的列表成員指向不同的主機,則需要通過SNI TLS擴展機制來支持該功能。

4、nginx-ingress工作原理

  • ingress-controller通過和API server交互,動態(tài)的獲取ingress的規(guī)則變化
  • 當ingress發(fā)生變化時,按照固定格式生成nginxi可以識別的前后端配置文件
  • 再將這段配置文件,寫入到 ingress-controller中的nginx服務中,在reload一下,使配置文件生效

二、nginx-ingress使用

1、安裝

官網(wǎng)地址:https://kubernetes.github.io/ingress-nginx/deploy/

#以yaml形式進行部署
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/baremetal/deploy.yaml

#helm進行部署
helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

2、ingress暴露服務的方式

方式一:Deployment+LoadBalancer模式的Service

如果要把ingress部署在公有云,那用這種方式比較合適。用Deployment部署ingress-controller,創(chuàng)建一個 type為 LoadBalancer 的 service 關聯(lián)這組 pod。大部分公有云,都會為 LoadBalancer 的 service 自動創(chuàng)建一個負載均衡器,通常還綁定了公網(wǎng)地址。 只要把域名解析指向該地址,就實現(xiàn)了集群服務的對外暴露

方式二:DaemonSet+HostNetwork+nodeSelect

用DaemonSet結(jié)合nodeSelect把pod部署到固定節(jié)點上,再通過HostNetWork直接講pod與宿主機的的網(wǎng)絡打通,直接使用宿主機的80/443端口進行訪問,這種方式整個請求鏈路更簡單,性能相比較NodePort的方式更好,缺點是一個主機只能部署一個pod。

方式三:Deployment+NodePort模式的Service

用Deployment部署ingress-controller,創(chuàng)建一個 type為NodePort的service,這樣就會暴露在集群節(jié)點的特定端口上面,由于NodePort暴露的端口不是80/443端口,一般前端還會加一個負載均衡,或者把域名解析到node節(jié)點的公網(wǎng)ip上。由于多了一層nat轉(zhuǎn)發(fā)性能會不如方式二

3、基于主機名作負載均衡

注意:通配符匹配要求http host頭部字段與通配符規(guī)則中的后綴部分相同。(例如:*.foo.com 匹配 bar.foo.com, 但不匹配 bar.bar.foo.com)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-wildcard-host
  annotations:
    kubernetes.io/ingress.class: "nginx" ##指定Ingress Controller的類型
    nginx.ingress.kubernetes.io/use-regex: "true" ##指定后面rules定義的path可以使用正則表達式
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" ##連接超時時間,默認為5s
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600" ##后端服務器回轉(zhuǎn)數(shù)據(jù)超時時間,默認為60s
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600" ##后端服務器響應超時時間,默認為60s
    nginx.ingress.kubernetes.io/proxy-body-size: "10m" ##客戶端上傳文件,最大大小,默認為20m
    #nginx.ingress.kubernetes.io/rewrite-target: / ##URL重寫
    nginx.ingress.kubernetes.io/app-root: /index.html
spec:
  rules:
  - host: "foo.bar.com"
    http:
      paths:
      - pathType: Prefix
        path: "/bar"
        backend:
          service:
            name: service1
            port:
              number: 80
  - host: "*.foo.com"
    http:
      paths:
      - pathType: Prefix
        path: "/foo"
        backend:
          service:
            name: service2
            port:
              number: 80

4、基于URL做負載均衡

注意:如果路徑的最后一個元素是請求路徑中的最后一個元素的子字符串,則不會匹配,(例如:/foo/bar 匹配 /foo/bar/baz, 但不匹配 /foo/barbaz

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-web
  annotations:
    kubernetes.io/ingress.class: "nginx" ##指定Ingress Controller的類型
    nginx.ingress.kubernetes.io/use-regex: "true" ##指定后面rules定義的path可以使用正則表達式
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "600" ##連接超時時間,默認為5s
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600" ##后端服務器回轉(zhuǎn)數(shù)據(jù)超時時間,默認為60s
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600" ##后端服務器響應超時時間,默認為60s
    nginx.ingress.kubernetes.io/proxy-body-size: "10m" ##客戶端上傳文件,最大大小,默認為20m
    #nginx.ingress.kubernetes.io/rewrite-target: / ##URL重寫
    nginx.ingress.kubernetes.io/app-root: /index.html
spec:
  rules:
  - host: www.jiege.com
    http:
      paths:
      - path: /app1
        backend:
          serviceName: magedu-tomcat-app1-service
          servicePort: 80
      - path: /app2
        backend:
          serviceName: magedu-tomcat-app2-service
          servicePort: 80

5、配置TLS加密

可以將證書先配置為secrt類型來做保護,ingress只支持單個TLS端口443

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-web
spec:
  rules:
  - host: www.jiege.com
    http:
      paths:
      - path: /app1
        backend:
          serviceName: magedu-tomcat-app1-service
          servicePort: 80
      - path: /app2
        backend:
          serviceName: magedu-tomcat-app2-service
          servicePort: 80

注意:默認規(guī)則上無法使用TLS,因為需要向所有可能的子域名發(fā)放證書,因此,TLS字段中,hosts的值需要與rules字段中hosts完全匹配。

示例:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-web
  namespace: magedu
  annotations:
    kubernetes.io/ingress.class: "nginx" ##指定Ingress Controller的類型
    nginx.ingress.kubernetes.io/ssl-redirect: 'true' ##開啟重定向
spec:
  tls:
  - hosts:
    - www.jiege.com
    secretName: tls-secret 
  - hosts:
    - mobile.jiege.com
    secretName: mobile-tls-secret 
  rules:
  - host: www.jiege.com
    http:
      paths:
      - path: /
        backend:
          serviceName: magedu-tomcat-app1-service
          servicePort: 80
  - host: mobile.jiege.com
    http:
      paths:
      - path: /
        backend:
          serviceName: magedu-tomcat-app2-service
          servicePort: 80

6、Annotations注解

注解用來配置當前ingress資源實例中的Nginx虛擬主機相關的配置,也就是通過Annotations來開啟一些nginx功能

示例

注解類型功能描述
nginx.ingress.kubernetes.io/enable-access-logtrue 或 false對當前虛擬主機設置是否啟用訪問日志,默認為真
nginx.ingress.kubernetes.io/client-body-buffer-sizestring同 Nginx 配置指令 client_body_buffer_size
nginx.ingress.kubernetes.io/use-regextrue 或 false是否對當前虛擬主機的 Nginx 指令 location 使用正則方式進行路徑匹配,默認值為 false
nginx.ingress.kubernetes.io/custom-http-errors[]int根據(jù)響應碼狀態(tài)定義為錯誤狀態(tài)并跳轉(zhuǎn)到設置的默認后端
nginx.ingress.kubernetes.io/default-backendstring自定義默認后端的資源對象 Service 名稱,當客戶端的請求沒有匹配的 Nginx 規(guī)則或響應錯誤時,將被轉(zhuǎn)發(fā)到默認后端
nginx.ingress.kubernetes.io/permanent-redirectstring設置永久重定向的目標地址
nginx.ingress.kubernetes.io/permanent-redirect-codenumber自定義永久重定向的響應碼,默認為 301
nginx.ingress.kubernetes.io/rewrite-targetURI同 Nginx 配置指令 rewrite
nginx.ingress.kubernetes.io/limit-ratenumber訪問流量速度限制,同 Nginx 配置指令 limit_rate
nginx.ingress.kubernetes.io/limit-connectionsnumber節(jié)并發(fā)連接數(shù)限制,同 Nginx 配置指令 limit_conn
nginx.ingress.kubernetes.io/enable-global-authtrue 或 false如果 ConfigMap 的 global-auth-url 被設置,Nginx 會將所有的請求重定向到提供身份驗證的 URL,默認為 true
nginx.ingress.kubernetes.io/service-upstreamtrue 或 false默認 Nginx 以 Service 中 Pod 的 IP 和端口為 Upstream 中的成員列表,該參數(shù)為 true 時,將以 Service 的 ClusterIP 和端口為被代理入口,該功能避免了因 Pod 漂移帶來的 Upstream 的配置變化
nginx.ingress.kubernetes.io/backend-protocolНТТР 或 HTTPS 或 GRPC 或 GRPCS 或 AJP 或 FCGI設置代理后端服務器的代理協(xié)議類型,默認為 HTTP
nginx.ingress.kubernetes.io/load-balanceround_robin 或 ewma設置負載均衡算法,基于 balancer_by_lua 模塊實現(xiàn),支持輪詢和 Peak EWMA 兩種負載算法

到此這篇關于nginx ingress的具體使用的文章就介紹到這了,更多相關nginx ingress內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Nginx設置日志打印post請求參數(shù)的方法

    Nginx設置日志打印post請求參數(shù)的方法

    這篇文章主要介紹了Nginx設置日志打印post請求參數(shù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Nginx 自動化腳本安裝完整方案

    Nginx 自動化腳本安裝完整方案

    本文介紹了一個Nginx自動化安裝腳本方案,支持多種Linux發(fā)行版(CentOS/RHEL/Ubuntu/Debian/Amazon Linux)和三種安裝方式(官方源/發(fā)行版源/編譯安裝),本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Nginx之location匹配和Rewrite重寫跳轉(zhuǎn)方式

    Nginx之location匹配和Rewrite重寫跳轉(zhuǎn)方式

    這篇文章主要介紹了Nginx之location匹配和Rewrite重寫跳轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Nginx 安裝與配置規(guī)則入門詳解

    Nginx 安裝與配置規(guī)則入門詳解

    這篇文章主要介紹了Nginx 安裝與配置規(guī)則入門詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 使用Nginx為OpenClaw反向代理的實現(xiàn)

    使用Nginx為OpenClaw反向代理的實現(xiàn)

    本文詳細介紹了如何通過Nginx反向代理配置OpenClaw網(wǎng)關的無域名HTTPS訪問方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-04-04
  • nginx之queue的具體使用

    nginx之queue的具體使用

    本文主要介紹了nginx之queue的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Nginx下Wordpress的永久鏈接實現(xiàn)(301,404等)

    Nginx下Wordpress的永久鏈接實現(xiàn)(301,404等)

    經(jīng)過多番測試,終于在nginx下實現(xiàn)了rewrite的功能,WrodPress的永久鏈接終于生效了
    2012-09-09
  • Nginx+uwsgi+ssl配置https的詳細步驟

    Nginx+uwsgi+ssl配置https的詳細步驟

    nginx是一個輕量級的web服務器,在處理靜態(tài)資源和高并發(fā)有優(yōu)勢,uwsgi是一個基于python的高效率的協(xié)議,處理后端和動態(tài)網(wǎng)頁有優(yōu)勢,我這里使用的是Ubuntu18.04版本,服務器在阿里云,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • nginx https 443端口配置的方法

    nginx https 443端口配置的方法

    本文主要介紹了nginx https 443端口配置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 圖文詳解Nginx多種匹配方式

    圖文詳解Nginx多種匹配方式

    nginx作為一款高性能的服務器,用途很多,下面這篇文章主要給大家介紹了Nginx多種匹配方式的相關資料,文中通過圖文介紹的介紹的非常詳細,需要的朋友可以參考下
    2022-05-05

最新評論

钟山县| 靖远县| 丹巴县| 平阴县| 双城市| 册亨县| 玉龙| 西乌| 宣化县| 兰溪市| 包头市| 含山县| 五河县| 陆河县| 驻马店市| 宣城市| 五台县| 神池县| 白河县| 科尔| 清远市| 太和县| 阿图什市| 沾益县| 罗定市| 泉州市| 左贡县| 衡阳县| 四平市| 历史| 沁阳市| 手机| 招远市| 曲松县| 平泉县| 镇坪县| 全州县| 巴东县| 北安市| 仁寿县| 敦化市|