跟昨天一樣繼續建立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。
其他兩個明天繼續。