Kubernetes CKA課程筆記 33

External Service — Node Port

ZONGRU Li
Oct 24, 2021

前面課程都是在Cluster內部間的Pod(Service)間互相溝通

考量到未來一定會有需要暴露Service給K8s Cluster之外的環境

要達成上圖暴露Cluster內部服務的,總共有三種方式:

  1. NodePort
  2. LoadBalancer
  3. Ingress

本篇下面筆記就講述NodePort

在前面課程我們最早有透過Configuration File建立以下的Service:

現在先將其移除,改為使用Node Port重新編寫"nginx-service.yaml"建立:

  • 也就是service的Configuration File預設使用的是”ClusterIP”,亦即
  • ClusterIP = internal service
  • NodePort = external service
  • 原本既有內部Pod服務串接使用的PORT都不變,僅僅多出了NodePORT
  • 至於NodePort是啥,詳下圖
  • NodePort可提供給Cluster外部串接的PORT
  • 上述30000 PORT也不是隨便定義,是要worker機當初防火牆開設的範圍
  • 為了怕忘了我開了那些NodePort,就先從3000開始用
  • 接著當然是利用這個文件來建立Service,執行:

kubectl apply -f {剛剛上面改好的nginx-service.yaml}

結果有錯...超扯!!!
差一個字母...
成功!!

此時理論上服務就對外(Cluster之外)暴露了,並且可以從兩台worker進去

我挑選其中一台,在介面上取得公開IP位置:

我怕被打掛,所以不顯示(兩台worker應該都可以才對)

同樣試試另一台worker是否也可以進去:

也一樣可以進去!!!
  • 其請求順序可以理解為如下:

用指令檢查service元件則可以看到:

有顯示多一個PORT是Node Port!

但是最終使用NodePort方式建立出來的對外暴露服務,並不適合給User使用

因為還要請User記IP,記Port實在不夠友善

並且也不夠安全

所以NodePort適合用於測試用途,下一篇將講解其他對外暴露服務的方式

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet