Kubernetes實戰 - 從零開始搭建微服務 - 1.5 提高可用性-發布多節點的Node/Express網絡應用程序


1.5 提高可用性-發布多節點的Node/Express網絡應用程序

Kubernetes實戰 - 從零開始搭建微服務

前言

在上一篇文章中,已經學習了如何簡單地開發一個單層網絡應用。【Kubernetes實戰 - 從零開始搭建微服務 1 - 使用kind構建一個單層架構Node/Express網絡應用程序】 ,本文將在上一篇基礎上,添加額外節點,目的在於提高可用性(high availability)。

關於可用性 high availability

在軟件產品環境下,如何提高服務穩定性,進而避免用戶流失,一直是架構師工作的核心。高可用性有一些基本的設計原則,

  1. 找到單一故障點/單點故障,就是在整個架構中,找到其中可用性最低的服務/點,增加冗余,以避免單點故障
  2. 可靠交叉(reliable crossover),沒找到很好的中文翻譯,即,當多服務交叉在一起,互相依賴度極高,它們可能成為單點故障
  3. 及時發現故障

計算可用性 high availability


A(可用性),MTBF(平均故障間隔),MDT(平均修復時間)

舉個例子,AWS S3 存儲服務HA保證值就在99.99%,耐用性durability是11個9 - 99.999999999%。

kind 創建一個多節點集群

k8s設計本身就是在於降低容器devops維護復雜度,提高可用性。
在上一篇文章的介紹里,整個App運行在單集群、單節點的情況下,雖然我們使用了Kubernetes,但是並沒有發揮其優勢,node service 仍然是一個無冗余的單點服務。其實使用kind可以很容易地增加節點,以提高可用性。

3-nodes-config.yaml

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker

  • source code
  • kind create cluster --config 3-nodes-config.yaml

  • kubectl get nodes

發布到k8s

參考【Kubernetes實戰 - 從零開始搭建微服務 1 - 使用kind構建一個單層架構Node/Express網絡應用程序】

  • kind get clusters 獲取所有cluster
  • deploy, (配置文件見上文,或者這里repo)
    - kubectl apply -f deployment.yaml
    - kubectl apply -f service.yaml

scale up 擴展

  • kubectl get deployments

  • kubectl get pods

截止目前,雖然集群是多節點,但是pods和deployment都只有一個,接下來就是最重要的一步,擴展/Scale Up

  • kubectl scale deployments/a-node-deployment --replicas=2

scale down 縮小

能大就能小,要不然就是貔貅了,😀

  • kubectl scale deployments/a-node-deployment --replicas=1

結語

以上是一個k8s 手動擴展/縮小的過程,在實際產品中,這一般是一個自動過程,可以依托於雲/k8s服務提供商或者k8s配置文件,以平衡花費和可用性。

參考及推薦

一些入門架構文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM