KEMBAR78
從實戰經驗看到的 K8S 導入痛點 | PPTX
多奇數位創意有限公司
技術總監 黃保翕(Will 保哥)
https://blog.miniasp.com
從實戰經驗看到的 K8s 導入痛點
痛點一:缺乏現代化 Infra 管理經驗
缺乏自動化管理能力
• 現有 Infra 經驗都是管理虛擬機器為主
• 極度缺乏對 Infra 的自動化管理能力
• 不知道如何將 Infra 設定轉換為代碼 ( IaC )
• 對於 DevOps 或 CI/CD 沒有完整的概念
3
缺乏容器化技術的使用經驗
• 沒有實際將應用系統容器化的經驗
• 沒有 Dev/Ops 的分工經驗 (一個人包辦所有開發與維運工作)
• 過渡依賴 GUI 操作界面,不熟悉 CLI 介面操作
4
痛點二:組織文化
究責文化
• 究責文化導致沒人敢創新
- 槍打出頭鳥
• 大量的紙上作業或人工簽核流程
- 自動化的殺手
- 為了有人能負責?
• 程式出錯找誰負責?
- 信心哪裡來?
6
康威定律 (Conway's Law)
• 導入 K8s 會受限於當下組織的溝通結構
- 敏捷
- 透明
- 信任
- 自主
- Inverse Conway Maneuver
• 不允許犯錯的工作環境
- 追求 100% 的成功
• 不相信自動化背後帶來的長期效益
- 無法克服自動化帶來的短期陣痛
7
敏捷文化
• 我真的超想導入 CI/CD 但負責 Infra 的同仁不想自動化
• 老闆都認為敏捷就是什麼都要快一點
8
痛點三:複雜的部署環境
混和 Windows 與 Linux 執行環境
• 許多中大型企業都有類似困擾
• 院級單位的政府機關經常有混和的 IT 架構
• 大型企業的網路管理有時候會極其複雜
10
部署架構混亂且缺乏彈性
• 為了節省 IP 而將大量服務塞到同一台主機上
• 大量的 Configuration Drift 導致無人可掌握部署環境
• 部署架構缺乏彈性,不容易做到自動橫向延展 (Scale out)
• 開發人員寫出「有狀態」的程式碼,缺乏「分散式」架構觀念
11
效能調校的經驗不足
• 遇到效能問題先調 DB 索引
- 將資料庫視為「全域變數」來使用
• 無法有效率的使用 CPU 資源
- 非同步程式設計
• 缺乏分散式架構的設計經驗
- 善加利用 Message Queue
- 設計出可以 Scale out 的程式架構
12
痛點四:錯誤認知與期待
錯誤的認知
• 我的服務絕對不能斷線!
- 硬體毀損
- 程式錯誤
- 停機時間
- Zero Downtime Updates
• 我不想再面對 Windows Update 了!
- 你可以不要再用 Windows 了嗎?
• 我的流量很大,聽說導入 Kubernetes 之後 Pod 會經常死掉
- 到底是誰說的?
14
錯誤的期待
• K8s 有 Desired State 是不是意味著我程式寫的再爛也不怕了?
• 我現在一台 VM 可以承受 200 人同時連線,上了 K8s 可以更好嗎?
15
痛點五:我公司沒人懂 K8s
不懂沒關係:不要瞎掰跟腦補
• 對 K8s 有正確的理解,比什麼都還重要!
• 我們是否該選用雲端的 K8s 託管服務?(EKS, AKS, GKE)
• 開發人員不管主機也需要學習 K8s 嗎?
• 維運人員不會寫 Code 可以學 K8s 嗎?
• 我們的服務現在都已經透過 Docker 運行,適合上 K8s 嗎?
將現有系統搬上 K8s 的效益
• 導入 Kubernetes 是一把「照妖鏡」
• 透過 Kubernetes 提供的各種抽象改善複雜度問題
- 想像 K8s 就是「一台」可以自動長大的「單一」伺服器
- 妥善設計應用程式的顆粒度,提升資源利用率
• 徹底將應用程式(App)與基礎架構(Infra)進行解耦 (Decoupling)
- 解構應用程式,盡量以無狀態的方式進行運作
• 徹底簡化 CI / CD 複雜度
- 只要有 YAML 與 kubectl 就可以掌握一切
18
總結
成功導入 Kubernetes 五步驟
1. 對相關人員進行教育訓練 (Dev/Ops)
2. 將應用程式或系統全面容器化 (開發環境/測試環境/生產環境)
3. 遷移與部署應用程式到 K8s 進行運作
4. 調整 CI / CD 流程並簡化部署程序
5. 對服務進行監控與分析
與我聯繫
21
聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
- http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
- http://www.facebook.com/will.fans
• Will 保哥的推特
- https://twitter.com/Will_Huang

從實戰經驗看到的 K8S 導入痛點

Editor's Notes

  • #4 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術
  • #5 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術
  • #8 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術
  • #11 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術 政府部門導入 DevOps 的挑戰與機會 https://blog.miniasp.com/post/2018/12/24/The-DevOps-Challenge-and-Opportunity-for-Government
  • #12 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術
  • #13 講述「行政院」導入的故事: 先導入 CI / CD 再導入 Docker 容器化技術 再導入 Kubernetes 叢集技術
  • #15 管理異常,而不是管理正常