跟昨天一樣繼續建立Database的deployment跟clusterip service
新增postgres-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 2
selector:
matchLabels:
component: pgdb
template:
metadata:
labels:
component: pgdb
spec:
containers:
- name: postgres
image: postgres
ports:
- containerPort: 5432
新增postgres-clusterip-service.yaml
apiVersion: v1
kind: Service
metadata:
name: postgres-clusterip-service
spec:
type: ClusterIP
ports:
- port: 5432
targetPort: 5432
selector:
component: pgdb
套用設定檔
因為replicas是2,所以會有兩個Pod,然而問題是兩個pod各自的container裡面存放各自的database file,理論上應該存取同一份database file
另外如果Pod crash,Deployment會自動重新建立一個,然而資料就全部不見了。
我們需要一個空間是獨立於Pod之外或是在somewhere,在Kubernetes裡面有Volumn Object。
Kubernetes Volume跟Docker Volume定義上來看不一樣
Docker Volume是Container與Docker Machine之間共享的空間
Kubernetes Volume分成三種
每一種生命週期跟Pod的狀態(status)有關
Volume是當Pod底下某個container掛了,其他的container還可以存取Volume底下的資料,但如果是Pod掛掉了,Volume也跟著重建了,所以這種不適合當作Database的Volume。
其他兩個明天繼續。