---
# System prepended metadata

title: GKE & K8S 筆記

---

# 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 開始
測試案例轉自動測試，自動佈署

調整團隊
明確工作流程
建立正確開發習慣

-> 完整的權限及責任，每個團隊獨立的帳號，開發團隊直接維運，獨立運作的空間。

建立樣板框架
持續納入現有的服務
讓新服務一開始就做對