iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0
IoT

從開源kubernetes雲端運算到kubeedge雲邊協同系列 第 21

Day 21 KubeEdge 斷線測試

  • 分享至 

  • xImage
  •  

在物聯網情境中雲端與邊緣端之間的網路環境不一定能保持穩定連線。因此今天
我們要測試的主題是當雲端與邊緣端之間的網路發生斷線的情況下,佈署在邊緣端的服務會有甚麼反應。

開始之前一樣放上我的節點狀態,方便辨認那些節點是透過KubeEdge規則加進來的那些是透過Kubernetes加入叢集的:

首先我們將NGINX透過NodeSelector佈署到邊緣節點上

# nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: default
  labels:
    app: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-deploy
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
      nodeSelector:
        name: edge
kubectl apply -f nginx-deploy.yaml

kubectl get pods -o wide


可以看到服務正常佈署在edge節點上,接著將master節點的網路線拔掉:

可以看到目前邊緣端與雲端處於斷線狀態,此時我們手動把其中一個NGINX容器移除:

過一小段時間後再看一次:

可以看到即便在雲端與邊緣端斷線的情況下,邊緣端仍然能自行管理服務(因為是透過deployments配置的),維持deployment定義的副本數量。

重新把網路線接上後,我想到另一種測試方式。如果我把edgecore服務關掉呢?
先確定一下原本的服務是正常的:

service edgecore stop

curl 172.17.0.4:80


可以發現服務仍然正常運行,但如果我們手動把BGIBX容器暫停:

可以發現雖然pause容器還在,但由於edgecore服務暫停的緣故,無法自動修復Pod。

假如是在Kubernetes節點上呢?這次我們將服務佈署到Kubertnetes節點上

# k8s-nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-nginx-deploy
  namespace: default
  labels:
    app: k8s-nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: k8s-nginx-deploy
  template:
    metadata:
      labels:
        app: k8s-nginx-deploy
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
      nodeSelector:
        name: k8s-node02
kubectl apply -f k8s-nginx-deploy.yaml

kubectl get pods -o wide


確定服務成功佈署後,我們再把master節點上的網路線拔掉一次:

確定Kubernetes的worker節點跟master節點間處於斷線狀態,這時候我們再把運行NGINX服務的docker容器移除掉:

可以發現過一段時間服務仍然會重新運行:

小結一下,KubeEdge在邊緣節點上的服務即便是與雲端斷線的情況下仍然能夠正常服務;但如果是edgecore壞掉的情況下,服務再損壞便無法正常修復。


上一篇
Day 20 KubeEdge Pod親和性(II)
下一篇
Day 22 關於KubeEdge小專題發想
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言