# GKE & K8S 筆記
使用大字型簡報
serverless = 不用管 vm !? -> Docker ?
pay only for usage
stateless 是搭配使用的,因為 server 只在有用戶存取時存在
把大的服務拆成 service based
Event driven
一個用來互動,一個用來寄 email -> 非同步的 trigger
### react to events
Http
Fire base
### serverless
NO server to manage
scale up fast
scale down to zero
Pay for exact usage
no patches
## 適合
serverless
http
trigger -> cloud function(vision API[http])
cloud function 用 python, go, js
類似 DB 的 trigger
## cloud function
不能做 long service,會強制 time out
server post -> firebase -> post to slack -> reply to github
send notify to followers
如果要做一個 pool 的功能,就在 cloud function 到 db 之間再加一層 pool layer
### data processing
streaming data, iot telemetry
### 優勢
develope only function not app
## app engine
traffic splitting
sersioning
程式碼用 http 近來!?
### standard 2n generation
這是用 docker 跑得,相對快很多,但語言有限
### flexible
這是用 vm 的,其實很慢
## 主打 scaling
for statusless 可以瞬間大量 scale out
### cloudrun
for GKE,提供 dockefile,
build image -> 資源 由 google 提供
## k8s 管理 container
處理 container 之間如何連線,算是叢集或是環境管理。
### master node
API Server(gRPC, RESTful)
cotroller manager -> 管理狀態切換
schedulrer
etcd
get current state
move to desired state
做 ha
Scheduler -> 管理 docker 放在那
docker to vm 的界面
etcd -> key value storage
### k8s node
kubelet -> communicate to master(API server)
container runtime -> Docker
kube-proxy -> update iptable
pod 是執行 docker 的最小單位
## GAE 是上傳程式碼
綁在 google 客製化 docker,效能更好
## google run
連接到 google registry -> 提供 dockerfile
build 出 google 版 docker build ,直接在 google run 執行。
## CI/CD best pratice
CI 是 auto build, merge, unit test -> release
CD 是 deployment
價值在交付給客戶後才產生,希望 deploy 時間從 week -> day
4M build/day 0.5B test/day
### 團隊轉型
描繪價值,精準點火,持續改善
目前狀態 -> 期望狀態
> 強調:維持現狀的成本 > 改變現狀的成本
人們不會在乎改變對組織帶來的價值 -> 人們在乎改變對自己帶來什麼價值。
精準點火
範圍小,結果明確,快速產生價值 -> 用價值累積價值
從小 API 開始
測試案例轉自動測試,自動佈署
調整團隊
明確工作流程
建立正確開發習慣
-> 完整的權限及責任,每個團隊獨立的帳號,開發團隊直接維運,獨立運作的空間。
建立樣板框架
持續納入現有的服務
讓新服務一開始就做對