iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
1
DevOps

從開源雲到邊緣運算系列 第 9

[Day 9]KubeEdge 部屬 - Service篇

  • 分享至 

  • xImage
  •  

在一般的Kubernetes裡,服務要透過Service轉port,讓其他pod或是外部可以溝通,但是在KubeEdge裡稍微有點不一樣,就讓我們來看看有什麼不同吧!


Service 常用種類架構說明

  1. cluster IP
    • 虛擬一個網路 IP 提供給 Pod 存取
    • 外部網路無法使用對內連線攻擊
    • 例如:資料庫 與 網頁交互傳遞資料
  2. Node Port
    • 利用 埠號 轉換進行 對內服務存取
    • 轉換以 30000以上埠號 進行服務
    • 對集群之內的所有 Node 開埠
    • 瀏覽 任意 Node IP + Port 即可存取
    • 如:網頁對外服務 / API Server 等

Service 測試

  1. 建立 Nginx 服務 Podnginx-pod.yaml
kubectl apply -f nginx-pod.yaml

https://ithelp.ithome.com.tw/upload/images/20190925/20121071hZ6tzNHJhG.png

  1. cluster IP 測試與實作

    1. 建立 Pod 對應的 Service 設定nginx-service.yaml

      • 未填寫 spec.type 則預設使用 cluster IP 方案
      • port 為轉換後的 IP 所使用的連線 Port
      • targetPort 為 Pod 的服務 Port
        https://ithelp.ithome.com.tw/upload/images/20190925/20121071Dn4vYoENSy.png
    2. 派送 Service 服務

    kubectl apply -f nginx-service.yaml
    

    https://ithelp.ithome.com.tw/upload/images/20190925/20121071Bm5KSZcugN.png

    1. 查看目前 Service 的相關狀態
    kubectl get svc
    

    https://ithelp.ithome.com.tw/upload/images/20190925/20121071dWSZ7A0JdX.png

    1. 建立一個 Pod 與 Nginx Pod 進行 cluster IP 連線測試
    • 使用 Ubuntu Pod 進行測試ubuntu.yaml
    kubectl apply -f ubuntu.yaml
    

    https://ithelp.ithome.com.tw/upload/images/20190925/20121071gwKYGb5miE.png

    1. 在 Edge Node 開啟 Ubuntu Pod 進行連線模擬網路請求測試
      • 查看 container ID
      docker ps
      
      • 進入 container bash環境
      docker exec -ti {Container-ID} bash
      
      • 安裝 curl
      apt-get update && apt-get install curl -y
      
      • 透過curl進行網路請求
        cluster-ip = 10.103.230.66
        cluster-port = 3000
      curl {cluster-ip}:{cluster-port}
      
    2. cluster IP 測試項目狀態分析
      • 無法進行虛擬IP連線
      • 未提供 pod-ip 服務,cluster-ip 橋接連線服務將不成立
      • 已將 Container 現有需求 埠號 直接轉換給 Host 使用
    3. cluste IP Service 方案與 kubeedge 的架構落差
      • 主要 以 websocket 通道進行資料派送 與 回饋使用
      • 主推 在地化服務 直接使用 Edge Node 的 private IP + port 進行服務
  2. Node Port 測試與實作

    1. 建立 Pod 對應的 Service 設定nginx-nodeport-service.yaml

      • spec.type 設定為 NodePort 方案
      • spec.ports 設定 轉埠 功能名稱、通訊協定、連接埠
      • spec.ports 可擁有多個轉埠設定 (http:80 / https:443)
        https://ithelp.ithome.com.tw/upload/images/20190925/20121071kA7kOMIMOa.png
    2. 派送 Service 服務

    kubectl apply -f nginx-nodeport-service.yaml
    
    1. 查看目前 Service 的相關狀態
    kubectl get svc
    

    https://ithelp.ithome.com.tw/upload/images/20190925/20121071xNYko6yxDc.png

    1. 測試 Node Port 是否啟用成功
      Node-ip = 192.168.5.4
      Node-port = 32227
    curl {Node-ip}:{Node-port}
    
    • Node Port 轉埠服務 無法使用
    • 原有 服務 Port 持續執行服務中
    1. Node port 與 原生 kubeege 方案差異
      • 兩者皆使用主機開埠功能
      • Node port 需調用 3000 以上 埠號
      • 透過 解析對應埠號 尋找服務Pod 連線
      • kubeedge 使用 Container 原生埠號
      • 綁定並佔用 Host Port 進行使用
    2. Node port 與 原生 kubeege 方案優劣
      • Node Port 需中介 Service 尋找服務 Pod,但單一 Node 上可擁有多 Pod
      • kubeedge 以 Host Port 為主體,無須轉埠介接,,但單一 Node 僅能存在 1 個Pod

上一篇
[Day 8]KubeEdge 部屬 - 基礎篇
下一篇
[Day 10]KubeEdge 部屬 - ReplicaSet篇
系列文
從開源雲到邊緣運算30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言