一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

阿銘linux ? 來源:阿銘linux ? 2023-04-28 14:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是Ingress

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

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

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

Ingress用來定義具體的路由規(guī)則,要實(shí)現(xiàn)什么樣的訪問效果;

Ingress Controller是實(shí)現(xiàn)Ingress定義具體規(guī)則的工具或者叫做服務(wù),在K8s里就是具體的Pod;

IngressClass是介于Ingress和Ingress Controller之間的一個協(xié)調(diào)者,它存在的意義在于,當(dāng)有多個Ingress Controller時(shí),可以讓Ingress和Ingress Controller彼此獨(dú)立,不直接關(guān)聯(lián),而是通過IngressClass實(shí)現(xiàn)關(guān)聯(lián)。

Ingress實(shí)戰(zhàn)

1)編輯ingress YAML文件

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


spec:
  ingressClassName: myingc  ##定義關(guān)聯(lián)的IngressClass


  rules:  ##定義具體的規(guī)則
  - host: aminglinux.com  ##訪問的目標(biāo)域名
    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#內(nèi)容如下
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  ##說明,執(zhí)行這個腳本會部署幾個ingress相關(guān)資源,包括namespace、configmap、secrect等
編輯controller YAML文件
vi  ingress-controller.yaml #內(nèi)容如下
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
應(yīng)用YAML
kubectl apply -f ingress-controller.yaml
查看pod、deployment:
kubectl get po -n nginx-ingress
kubectl get deploy -n nginx-ingress
將ingress對應(yīng)的pod端口映射到master上臨時(shí)測試:
kubectl port-forward -n nginx-ingress ngx-ing-547d6575c7-fhdtt 8888:80 &
注意,測試前可以修改ng-deploy對應(yīng)的兩個pod里的/usr/share/nginx/html/index.html文件內(nèi)容,用于區(qū)分兩個pod。 使用curl測試:
curl -x127.0.0.1:8888 aminglinux.com
或者:
curl -H 'Host:aminglinux.com' http://127.0.0.1:8888
Igress對外訪問的三種方案

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

1)Deployment+LoadBalancer

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

2)Deployment+NodePort

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

3)DaemonSet+nodeSelector

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





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    12537
  • YAML
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2458
  • 負(fù)載均衡器
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    2666

原文標(biāo)題:一篇文章助你搞懂Ingress

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Kubernetes Ingress 高可靠部署最佳實(shí)踐

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

    三種訪問過程映像的方法

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

    三種電源方案

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

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

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

    訪問集成Xilinx模數(shù)轉(zhuǎn)換器的三種方法介紹

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

    三種pads解決方案的對比

    三種墊解決方案交付核心能力來加速你的設(shè)計(jì)周期,提高生產(chǎn)率,提高質(zhì)量。了解每個解決方案當(dāng)你開始你的比較過程。
    的頭像 發(fā)表于 10-30 07:06 ?3779次閱讀

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

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

    刺激能量收集發(fā)展的三種解決方案

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

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

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

    從零到一:構(gòu)建高效穩(wěn)定的HTTP海外訪問策略

    在當(dāng)今全球化的互聯(lián)網(wǎng)時(shí)代,無論是企業(yè)拓展海外市場,還是個人追求更廣闊的信息視野,高效穩(wěn)定的HTTP海外訪問策略都顯得尤為重要。
    的頭像 發(fā)表于 09-24 08:03 ?447次閱讀

    探索HTTP海外訪問的奧秘:解鎖全球互聯(lián)網(wǎng)資源

    探索HTTP海外訪問的奧秘,實(shí)際上是在揭開如何高效、安全地解鎖全球互聯(lián)網(wǎng)資源的面紗。
    的頭像 發(fā)表于 09-24 08:11 ?597次閱讀

    優(yōu)化HTTP海外訪問:技術(shù)挑戰(zhàn)與解決方案

    優(yōu)化HTTP海外訪問需要從多個方面入手,包括使用CDN加速、部署代理服務(wù)器或VPN、優(yōu)化網(wǎng)絡(luò)路由、采用高效的網(wǎng)絡(luò)協(xié)議、加強(qiáng)數(shù)據(jù)安全與隱私保護(hù)以及選擇可靠的云服務(wù)提供商等。
    的頭像 發(fā)表于 09-25 08:08 ?516次閱讀

    HTTP海外訪問優(yōu)化:提升跨國網(wǎng)絡(luò)性能的秘訣

    HTTP海外訪問優(yōu)化是提升跨國網(wǎng)絡(luò)性能的關(guān)鍵,涉及多個方面的技術(shù)和策略。
    的頭像 發(fā)表于 10-15 08:04 ?674次閱讀

    redis三種集群方案詳解

    在Redis中提供的集群方案總共有三種(一般一個redis節(jié)點(diǎn)不超過10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?640次閱讀
    redis<b class='flag-5'>三種</b>集群<b class='flag-5'>方案</b>詳解

    介紹三種常見的MySQL高可用方案

    在生產(chǎn)環(huán)境中,為了確保數(shù)據(jù)庫系統(tǒng)的連續(xù)可用性、降低故障恢復(fù)時(shí)間以及實(shí)現(xiàn)業(yè)務(wù)的無縫切換,高可用(High Availability, HA)方案至關(guān)重要。本文將詳細(xì)介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?265次閱讀