Kubernetes
心得分享&簡單介紹k8s
今天要來賣什麼?

Kubernetes

一直以來,工程師都有個疑問

在我的電腦上會動啊~
真奇怪
開發/維運
原因
- 作業系統、環境
- 依賴套件版本
- 缺檔、config
- blah blah...
青銅器時代
透過工具改善部署
- SSH session
- 利用工具協助系統升級
- 回滾還是麻煩
- 眾多服務還是很難管
- 服務擴展

鐵器時代
容器技術
- 程式與執行環境都在image裡
- 方便散佈與部屬

虛擬化技術演進
VM
- 軟體模擬硬體
- 映像檔大
- 難以擴散

虛擬化技術演進
Container
- 作業系統虛擬化
- 映像檔小
- 易擴散
- 啟動時間短

Container Image
- 利用Dockerfile建立映像檔,納入版本控制
- 執行環境一致性
- Image不可變性


指令、細節就自己看&實作:P
Kubernetes

Kubernetes的主要用途
- 微服務應用程式的 協調器
- 全自動化的管理與調度容器
- 全自動的配置容器要在叢集的哪個節點執行
- 以抽象化的方式管理容器執行
Kubernetes的主要元件

Master
- 叢集的大腦
- 調度Pods
Minion(Nodes)
- 管理容器執行
- 指派要執行的Pods實體化
Kubernetes的主要元件

Kubernetes的主要元件


Kubernetes的主要物件

Pod
- 最小的 Immutable deploy單位
- Auto Scaling
- 自動復原機制
Service
- 透過定義Service來讓外部
的使用者訪問Pod
- 抽象化概念
Kubernetes的主要物件
Service Network
- ClusterIP : pod-to-pod
- NodePort
- LoadBlancer

Kubernetes的主要物件
Volumn
- 設定檔案存取的方式
- 讓容器紀錄狀態以便重啟時回復
ConfigMap
- 應用程式常用的參數設定
Secret
- 應用程式需要安全保存的參數設定

Kubernetes的主要物件
水平擴展
Deployment
- 回滾機制 (Rollback)
- 官方推薦


Deamonset
- 讓Pod自動跑在所有Nodes
Kubernetes的主要物件
HPA (Horizontal Pod Autoscaler)
- 依據Pod負載去做Deployment伸縮擴展
- Pod要做資源控管

Desired State
期望狀態
- 透過建立k8s物件告知cluster如何運行
藉此建立一種期望狀態

反向思考: 假設服務都會掛
當一個Service有3個pods
- 叢集會盡力達到
- 狀態會經常改變
掌控 Pod 生命週期
Init Container
- 避免Service倒流量到不健康的Pod
- 自動檢測與修復

掌控 Pod 生命週期
Job/Cronjob
- 任務取向的服務
- 定時執行檢測

Kubectl偵錯技巧
kubectl get [object]
- get po
- get svc
kubectl describe [object]
- 從cluster角度看pod運作狀況
kubectl logs [object]
- 看pod的console log
Kubernetes部署流程
打包建立Image
> 在本地docker測試運行
> 推到 Docker Registry保存
> 寫Docker File > 建立服務 > 監控服務
> 寫Deployment部署腳本
> 建立Deployment物件
> 監控服務
Kubernetes實作建議
GCP、GKE
- $ $ $
minikube
- 裝虛擬機>裝minikube
- minikube start
自幹
- 這裡有批機器好便宜阿!

Kubernetes實作建議
Pod
- 建個pod先
Service
- 用Service管理幾個Pods
Deployment
- 官方建議不要裸佈Pod
Kubernetes實作建議
實際建立服務
- Web
嘗試建立較困難服務
- Redis
- EFK

嘗試會讓系統當機的服務
- 教訓>>>>教程
- Be careful
Kubernetes實作建議
寫yaml檔
寫yaml檔
寫yaml檔
因為很重要所以要說三次
Kubernetes實作建議
Kubernetes實作建議
多想想你要的服務結構
- 如何實作與撰寫yaml
Kubernetes學習資源
上課老師的部落格
https://tachingchen.com/tw/blog/
上課的共用筆記
https://hackmd.io/9pYIJhQoTJeaAw0qSUuxJA
Online k8s
https://labs.play-with-k8s.com/
END
k8s
By 坊吉
k8s
- 83