iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
Kubernetes

從零開始的 Kubernetes 基礎觀念與實作系列 第 14 篇

從零開始的 Kubernetes 基礎觀念與實作 DAY14

  • 分享至 

  • xImage
  •  

Ingress

前一篇介紹的 Service 可以提供 Pod 固定的連線入口,但如果有多個網站或 API 服務需要從叢集外部存取,為每個 Service 都建立 NodePort 或 LoadBalancer 會較難管理。

Ingress 可以依照網址網域或 URL 路徑,將 HTTP/HTTPS 請求轉送到不同的 Service。例如將 / 的請求轉送到前端 Service,將 /api 的請求轉送到後端 API Service。

Ingress 不會直接連線到 Pod,而是先找到指定的 Service,再由 Service 將流量轉送到符合 Label 的 Pod。

Ingress -> Service -> Pod

不過只建立 Ingress 資源還不能處理流量,還需要安裝 Ingress Controller。Ingress Controller 會讀取 Ingress 規則,並實際接收與轉送外部請求。

Minikube 可以直接啟用 NGINX Ingress Controller。

minikube addons enable ingress

等待一段時間後,可以確認 NGINX Ingress Controller 是否已啟動:

kubectl get pods -n ingress-nginx

接著建立一個 Ingress,將所有從根目錄 / 進入的請求,轉送到前一篇建立的 nginx-service。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80

套用 YAML 檔:

kubectl apply -f ingress.yaml

確認 Ingress 是否建立成功:

kubectl get ingress

如果使用 Windows 搭配 Docker driver 執行 Minikube,還需要另外開啟一個終端機並輸入以下指令,讓本機能透過 127.0.0.1 存取 Ingress:

minikube tunnel

這個終端機需要保持開啟,關閉後就無法再透過 127.0.0.1 存取。

等待一段時間後再次輸入 kubectl get ingress,確認 ADDRESS 欄位出現 127.0.0.1,再使用瀏覽器開啟網站。

http://127.0.0.1

就能看到前一篇建立的 Nginx 網頁。

這次只有設定 / 路徑,因此所有請求都會被轉送到 nginx-service。之後如果有不同的前端、後端或 API Service,就可以在同一個 Ingress 中設定不同路徑,讓 Kubernetes 依照請求內容轉送到對應服務。


上一篇
# 從零開始的 Kubernetes 基礎觀念與實作 DAY13
下一篇
從零開始的 Kubernetes 基礎觀念與實作 DAY15
系列文
從零開始的 Kubernetes 基礎觀念與實作 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言