色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是Ingress?Igress對外訪問的三種方案

阿銘linux ? 來源:阿銘linux ? 2023-04-28 14:22 ? 次閱讀

什么是Ingress

有了Service之后,我們可以訪問這個Service的IP(clusterIP)來請求對應的Pod,但是這只能是在集群內部訪問。 要想讓外部用戶訪問此資源,可以使用NodePort,即在node節點上暴漏一個端口出來,但是這個非常不靈活。為了解決此問題,K8s引入了一個新的API資源對象Ingress,它是一個七層的負載均衡器,類似于Nginx。

98bd8d22-e57a-11ed-ab56-dac502259ad0.png

三個核心概念:Ingress、Ingress Controller、IngressClass

Ingress用來定義具體的路由規則,要實現什么樣的訪問效果;

Ingress Controller是實現Ingress定義具體規則的工具或者叫做服務,在K8s里就是具體的Pod;

IngressClass是介于Ingress和Ingress Controller之間的一個協調者,它存在的意義在于,當有多個Ingress Controller時,可以讓Ingress和Ingress Controller彼此獨立,不直接關聯,而是通過IngressClass實現關聯。

Ingress實戰

1)編輯ingress YAML文件

vimying.yaml#內容如下
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mying  ##ingress名字


spec:
  ingressClassName: myingc  ##定義關聯的IngressClass


  rules:  ##定義具體的規則
  - host: aminglinux.com  ##訪問的目標域名
    http:
      paths:
      - path: /
        pathType: Exact
        backend:  ##定義后端的service對象
          service:
            name: ngx-svc
            port:
              number: 80
查看ingress
kubectl get ing
kubectl describe ing mying
2)編輯IngressClass YAML文件
vimyingc.yaml#內容如下
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name:myingc


spec:
  controller: nginx.org/ingress-controller  ##定義要使用哪個controller
查看ingressClass
kubectl get ingressclass

3)安裝ingress-controller

首先做一下前置工作

curl -O 'https://gitee.com/aminglinux/linux_study/raw/master/k8s/ingress.tar.gz'
tar zxf ingress.tar.gz
cd ingress
./setup.sh  ##說明,執行這個腳本會部署幾個ingress相關資源,包括namespace、configmap、secrect等
編輯controller YAML文件
vi  ingress-controller.yaml #內容如下
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ngx-ing
namespace:nginx-ingress


spec:
  replicas: 1
  selector:
    matchLabels:
app:ngx-ing


  template:
    metadata:
      labels:
        app: ngx-ing
     #annotations:
       #prometheus.io/scrape: "true"
       #prometheus.io/port: "9113"
       #prometheus.io/scheme: http
    spec:
      serviceAccountName: nginx-ingress
      containers:
      - image: nginx/nginx-ingress:2.2-alpine
        imagePullPolicy: IfNotPresent
        name: ngx-ing
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443
        - name: readiness-port
          containerPort: 8081
        - name: prometheus
          containerPort: 9113
        readinessProbe:
          httpGet:
            path: /nginx-ready
            port: readiness-port
          periodSeconds: 1
        securityContext:
          allowPrivilegeEscalation: true
          runAsUser: 101 #nginx
          capabilities:
            drop:
            - ALL
            add:
            - NET_BIND_SERVICE
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        args:
          - -ingress-class=myingc
          - -health-status
          - -ready-status
--nginx-status


          - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
          - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
應用YAML
kubectl apply -f ingress-controller.yaml
查看pod、deployment:
kubectl get po -n nginx-ingress
kubectl get deploy -n nginx-ingress
將ingress對應的pod端口映射到master上臨時測試:
kubectl port-forward -n nginx-ingress ngx-ing-547d6575c7-fhdtt 8888:80 &
注意,測試前可以修改ng-deploy對應的兩個pod里的/usr/share/nginx/html/index.html文件內容,用于區分兩個pod。 使用curl測試:
curl -x127.0.0.1:8888 aminglinux.com
或者:
curl -H 'Host:aminglinux.com' http://127.0.0.1:8888
Igress對外訪問的三種方案

上面對ingress做端口映射,然后通過其中一個節點的IP來訪問ingress只是一種臨時方案。那么正常如何做呢?有三種常用的方案:

1)Deployment+LoadBalancer

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

2)Deployment+NodePort

同樣用deployment模式部署ingress-controller,并創建對應的服務,但是type為NodePort。這樣,ingress就會暴露在集群節點ip的特定端口上。 由于nodeport暴露的端口是隨機端口,一般會在前面再搭建一套負載均衡器來轉發請求。該方式一般用于宿主機是相對固定的環境ip地址不變的場景。 NodePort方式暴露ingress雖然簡單方便,但是NodePort多了一層NAT,在請求量級很大時可能對性能會有一定影響。

3)DaemonSet+nodeSelector

用DaemonSet結合nodeselector來部署ingress-controller到特定的node上,然后使用HostNetwork直接把該pod與宿主機node的網絡打通(如,上面的臨時方案kubectl port-forward),直接使用宿主機的80/433端口就能訪問服務。 這時,ingress-controller所在的node機器就很類似傳統架構的邊緣節點,比如機房入口的nginx服務器。該方式整個請求鏈路最簡單,性能相對NodePort模式更好。 缺點是由于直接利用宿主機節點的網絡和端口,一個node只能部署一個ingress-controller pod。比較適合大并發的生產環境使用。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • nginx
    +關注

    關注

    0

    文章

    149

    瀏覽量

    12171
  • YAML
    +關注

    關注

    0

    文章

    21

    瀏覽量

    2322
  • 負載均衡器
    +關注

    關注

    0

    文章

    18

    瀏覽量

    2583

原文標題:一篇文章助你搞懂Ingress

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Kubernetes Ingress 高可靠部署最佳實踐

    在Kubernetes集群中,Ingress是授權入站連接到達集群服務的規則集合,為您提供七層負載均衡能力,您可以通過 Ingress 配置提供外部可訪問的 URL、負載均衡、SSL、基于名稱的虛擬主機等。作為集群流量
    發表于 04-17 14:35

    三種訪問過程映像的方法

    硬實時的需求。用戶可以通過python等高級語言編寫程序,并且可以通過存儲器中的過程映像便捷的寫入或者讀取所有當前過程值。本文將介紹從過程映像中訪問數據的三種方法:直接從文件中讀取、ioctl以及
    發表于 02-02 16:40

    常見的三種無線接入方式是什么?

    藍牙無線組網的優點是什么?常見的三種無線接入方式是什么?藍牙無線組網原理與上網方案分享
    發表于 05-26 06:33

    三種電源方案

    三種電源方案   電源+充電線路方案               &
    發表于 11-13 15:05 ?1097次閱讀

    三種3D眼鏡解決方案

    介紹了三種3D眼鏡解決方案,MSP430方案,TPS65835方案,射頻穿梭3D電視眼鏡。
    發表于 09-14 10:23 ?36次下載
    <b class='flag-5'>三種</b>3D眼鏡解決<b class='flag-5'>方案</b>

    阿里云Serverless Kubernetes通過Ingress提供7層服務訪問

    摘要:?在阿里云Serverless Kubernetes集群中,我們可以通過LoadBalancer Service對外提供四層服務訪問,同樣我們也可以通過Ingress對外提供七
    發表于 07-23 14:02 ?1775次閱讀
    阿里云Serverless Kubernetes通過<b class='flag-5'>Ingress</b>提供7層服務<b class='flag-5'>訪問</b>

    訪問集成Xilinx模數轉換器的三種方法介紹

    了解訪問集成Xilinx模數轉換器(XADC)的三種方法; 通過直接連接到PS,作為PS或Microblaze的AXI外設,或作為邏輯的IP核。
    的頭像 發表于 11-20 06:16 ?2660次閱讀

    三種pads解決方案的對比

    三種墊解決方案交付核心能力來加速你的設計周期,提高生產率,提高質量。了解每個解決方案當你開始你的比較過程。
    的頭像 發表于 10-30 07:06 ?3462次閱讀

    C語言訪問MCU寄存器的三種方式

    C語言訪問MCU寄存器的三種方式 MCU中的特殊功能寄存器SFR,實際上就是SRAM地址已經確定的SRAM單元,在C語言環境下對其訪問歸納起來有3方法。
    發表于 10-28 17:21 ?11次下載
    C語言<b class='flag-5'>訪問</b>MCU寄存器的<b class='flag-5'>三種</b>方式

    刺激能量收集發展的三種解決方案

    新技術星期二:刺激能量收集發展的三種解決方案
    的頭像 發表于 12-30 09:40 ?572次閱讀

    《中新社》關注“本源悟空”境外訪問量美國排第一

    走進本源量子計算機組裝與測試實驗室,中國第代自主超導量子計算機“本源悟空”正伴隨著機器運行的嗡鳴聲,運算來自世界各地的量子計算任務。據介紹,在“本源悟空”的境外訪問
    的頭像 發表于 07-06 08:22 ?298次閱讀
    《中新社》關注“本源悟空”境<b class='flag-5'>外訪問</b>量美國排第一

    從零到一:構建高效穩定的HTTP海外訪問策略

    在當今全球化的互聯網時代,無論是企業拓展海外市場,還是個人追求更廣闊的信息視野,高效穩定的HTTP海外訪問策略都顯得尤為重要。
    的頭像 發表于 09-24 08:03 ?230次閱讀

    探索HTTP海外訪問的奧秘:解鎖全球互聯網資源

    探索HTTP海外訪問的奧秘,實際上是在揭開如何高效、安全地解鎖全球互聯網資源的面紗。
    的頭像 發表于 09-24 08:11 ?284次閱讀

    優化HTTP海外訪問:技術挑戰與解決方案

    優化HTTP海外訪問需要從多個方面入手,包括使用CDN加速、部署代理服務器或VPN、優化網絡路由、采用高效的網絡協議、加強數據安全與隱私保護以及選擇可靠的云服務提供商等。
    的頭像 發表于 09-25 08:08 ?250次閱讀

    HTTP海外訪問優化:提升跨國網絡性能的秘訣

    HTTP海外訪問優化是提升跨國網絡性能的關鍵,涉及多個方面的技術和策略。
    的頭像 發表于 10-15 08:04 ?325次閱讀
    主站蜘蛛池模板: 玩50岁四川熟女大白屁股直播| 女性私密五月天| 最近免费中文字幕MV在线视频3 | 久久本道久久综合伊人| YELLOW免费观看完整视频 | 青柠电影高清在线观看| 色多多污网站在线观看| 亚洲91av| 制服的微热| 妖精视频一区二区免费| 亚洲AV久久无码精品蜜桃| 一本二卡三卡四卡乱码麻豆| 506070老熟肥妇bbwxx视频| 超嫩校花被灌醉在线观看| 99热久久久无码国产精品性麻豆| 一二三四高清中文版视频 | 67194成在线观看免费| 成人国产亚洲欧美成人综合网| 97人妻在线公开视频在线观看| 草莓视频免费看| 国模孕妇模特季玥之粉红| 国产精品久久久精品a级小说| 果冻传媒视频在线播放 免费观看 果冻传媒视频在线播放 | 影音先锋色小姐| 亚洲无AV在线中文字幕| 亚洲精品久久久午夜麻豆| 亚洲AV午夜精品麻豆AV| 偷窥 亚洲 色 国产 日韩| 曰本真人00XX动太图| 成人性生交大片免费看中文| 韩国三级久久精品| 狠狠色欧美亚洲狠狠色www| 奶水太多h室友| 性色爽爱性色爽爱网站| 99re 这里只有精品| 国产午夜永久福利视频在线观看 | 国产亚洲精品久久久久久白晶晶| 美女爽到嗷嗷嗷叫| 亚洲高清一区二区三区电影| av影音先锋影院男人站| 黄色天堂网|