成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘搞懂Ingress /IngressController/IngressClass的區別

云計算 云原生
本文5分鐘大白話說明白Ingress、IngressController、IngressClass的概念和區別,然后結合實踐加深理解。

先來個一句話總結:Ingress由Ingress規則、IngressController、IngressClass這3部分組成。Ingress資源只是一系列路由轉發配置,必須使用IngressController才能讓路由規則生效,而IngressClass是IngressController的具體實現。使用原則:先部署IngressController → 再部署Ingress資源。

1、理論

1.1、Ingress的概念

沒有Ingress之前,可以通過Service的nodePort對外暴露服務,將容器端口與Service的nodePort端口做映射,這樣訪問集群中任意一臺Node的IP:nodePort就能訪問到集群內部。Service 的這種暴露服務的形式是工作在TCP/IP層。或者將Pod的端口與HostPort做映射。

但是這樣做弊端較多,比如暴露了太多的Node端口、無法做域名轉發等。

所以引入了Ingress的概念,Ingress是一個七層路由轉發器,類似于Nginx。使用Ingress進行路由轉發時,ingressController會基于ingress規則將客戶端請求直接轉發到Service對應的Pod上,這樣會跳過 kube-proxy 設置的路由轉發規則,可以提高網絡轉發效率。

1.2、Ingress的組成

Ingress資源是一種虛擬的資源和規則定義,需要配合ingressController才能生效。所以要讓Ingress資源工作,集群必須有一個正在運行的ingressController。

Ingress由Ingress規則、IngressController、IngressClass這3部分組成。Ingress規則只是一系列的配置,必須使用IngressController才能使其生效,而IngressClass是IngressController的具體實現。關系如下圖:

1.3、Ingress的功能和工作流程

ingressController的實現有多種,比如有Ingress-Nginx、Traefik、Kong Ingress等,所以需要在Yaml編排文件中指定ingressClass。

一旦Ingress資源成功部署創建,IngressController就會監控到其配置的路由策略,并更新到Nginx的配置文件中生效。

綜上,IngressController 的功能如下:

  • 接受外部的流量,并將請求負載均衡到內部運行的 pod上
  • 部署Ingress路由轉發規則
  • 監控Kubernetes中運行的Pod,并在添加或刪除Pod后自動更新負載均衡規則

Ingress的工作流程,如下圖:

2、實踐

2.1、安裝IngressClass

本文實踐使用的是ingress-nginx,其實方式你可以自行實踐。

官網地址:https://kubernetes.github.io/ingress-nginx/deploy/#quick-start

可以通過helm或kubectl安裝,本文使用的是kubectl方式安裝,yaml的文件內容較多,你可以自行下載查閱。執行以下命令安裝:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

2.2、編排Yaml

IngressController部署完畢后,就是開始編排Yaml了。

Yaml中定義了一個容器鏡像是Nginx的Pod,然后通過Service與Pod關聯,再通過Ingress規則訪問對應的Pod。

apiVersion: v1
kind: Pod
metadata:
  name: web-app
  namespace: demo
  labels:
    app: web-app
spec:
  containers:
    - name: web-app
      image: nginx
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: web-service
  namespace: demo
  labels:
    app: web-service
spec:
  selector:
    app: web-app
  # ClusterIP | LoadBalancer | NodePort,使用Ingress就沒必要設置成NortPort
  type: ClusterIP
  clusterIP: None
  ports:
    - name: web-service-port
      protocol: TCP
      port: 80
      targetPort: 80
---
# 創建Ingress策略
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: web-ingress
  namespace: demo
spec:
  # 指定ingressClass
  ingressClassName: nginx
  rules:
    - host: web-ingress.mangod.top
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  number: 80

2.3、部署測試

Yaml編排完畢后,使用kubectl apply命令部署,部署完畢后,在本地/etc/hosts里配置域名和某個K8S-Node節點的映射關系(當然,生產環境的訪問鏈路比這個長,后面有機會再介紹,文中為了快速測試,直接在本地配置DNS),類似這樣點的映射關系:

10.20.1.23 web-ingress.mangod.top

然后,瀏覽器訪問http://web-ingress.mangod.top/,界面如下,說明ingress使用成功。

此時我們使用如下命令,進入到ingressController對應的pod,繼續驗證,可以看到熟悉的nginx.conf,之前配置的ingress規則在配置里都可以看到,如下:

kubectl get pods -n ingress-nginx
kubectl exec ingress-nginx-controller-nginx-d864d97df-22ljk -it -n ingress-nginx /bin/bash

至此實踐過程結束。

3、總結

一句話總結:Ingress由Ingress規則、IngressController、IngressClass這3部分組成。Ingress資源只是一系列路由轉發配置,必須使用IngressController才能讓路由規則生效,而IngressClass是IngressController的具體實現。使用原則:先部署IngressController → 再部署Ingress資源。

責任編輯:華軒 來源: 不焦躁的程序員
相關推薦

2024-12-11 07:00:00

面向對象代碼

2025-03-13 06:22:59

2025-01-21 07:39:04

Linux堆內存Golang

2019-08-09 10:33:36

開發技能代碼

2025-01-20 08:50:00

2023-12-06 08:48:36

Kubernetes組件

2023-09-11 07:31:58

2023-09-15 08:00:20

Ingress網關Istio

2022-05-23 09:10:00

分布式工具算法

2023-12-05 15:24:46

2018-09-27 13:56:14

內網外網通信

2024-04-29 07:57:46

分布式流控算法

2024-12-04 16:12:31

2021-06-18 07:34:12

Kafka中間件微服務

2017-03-30 19:28:26

HBase分布式數據

2023-10-06 20:21:28

Python鏈表

2024-04-28 12:55:46

redis頻道機制

2020-06-16 08:47:53

磁盤

2021-05-28 07:38:20

內存溢出場景

2009-11-16 10:53:30

Oracle Hint
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区在线观看 | 在线观看视频福利 | 日本一区二区视频 | 欧美日韩精品 | xxx国产精品视频 | 日韩一区和二区 | 精品亚洲一区二区 | 国产一区二区自拍 | 日韩中文字幕在线观看 | 99精品在线观看 | 国产一区二区电影 | 久久尤物免费一区二区三区 | 久久久日韩精品一区二区三区 | 中文字幕在线一区 | 少妇诱惑av| 91小视频在线 | 日韩在线欧美 | 欧美日韩视频 | 欧美日韩专区 | www.天天操.com | 成人欧美一区二区三区1314 | 亚洲三区视频 | 精品国产乱码久久久久久丨区2区 | 日韩一级免费观看 | av在线免费观看网站 | 久久久久国产视频 | 中文字幕一区二区三区精彩视频 | 国产高清一区二区三区 | 国产日韩一区 | 国产极品粉嫩美女呻吟在线看人 | 欧美激情综合 | 久久精品国产一区二区三区不卡 | 日韩欧美三级在线 | 久久久久国产精品一区二区 | 亚州午夜精品 | 91亚洲精华国产 | 一级黄色片在线免费观看 | 亚洲精品乱码久久久久久9色 | 欧美日韩精品在线免费观看 | 欧美日韩国产一区二区三区 | 精品一区二区三区四区 |