2017-06-16 66 views
1

我想對Bluemix集裝箱服務部署的Postgres(Kubernetes)的Postgres上Kubernetes在IBM Bluemix容器

我所創建的映像和部署它通過以下YAML文件:

apiVersion: v1 
kind: Service 
metadata: 
    name: tripbru-postgres 
    labels: 
    app: tripbruREST 
spec: 
    ports: 
    - port: 5432 
     targetPort: 5432 
     nodePort: 31432 
    selector: 
    app: tripbruREST 
    tier: frontend 
    type: NodePort 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: tripbru-postgres 
    labels: 
    app: tripbruREST 
spec: 
    strategy: 
    type: Recreate 
    template: 
    metadata: 
     labels: 
     app: tripbruREST 
     tier: postgres 
    spec: 
     containers: 
     - image: registry.ng.bluemix.net/eliza/postgres:9.5 
     name: postgres 
     env: 
     - name: POSTGRES_PASSWORD 
      value: MYPASSWORD 
     ports: 
     - containerPort: 5432 
      name: postgres 
     volumeMounts: 
     - name: pg-data 
      mountPath: /var/lib/postgresql/data 
     - name: tz-config 
      mountPath: /etc/localtime 
     volumes: 
     - name: pg-data 
     emptyDir: {} 
     - name: tz-config 
     hostPath: 
      path: /usr/share/zoneinfo/Europe/Madrid 

這有效其部署:

icordoba$ kubectl get services 
NAME    CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
kubernetes   10.10.10.1  <none>  443/TCP   1d 
tripbru-postgres 10.10.10.232 <nodes>  5432:31432/TCP 1d 

但我無法連接到端口31432.我已經測試過的Postgres節點的IP地址使用正在運行:

kubectl exec -it tripbru-postgres-3667814974-pzmsk bash 

我得到碼頭實例並檢查Postgres運行正常。

我相信我錯過了一些東西。我需要任何其他yaml文件嗎?謝謝。

+0

燦你添加了如何連接(從哪裏,你測試的工具)? –

+0

只是從互聯網連接。我想使用Node的外部IP和端口31432來訪問Postgres Pod。我已經在Minikube本地嘗試過了,它可以工作(同樣的Yaml文件)。謝謝。 – icordoba

+0

從主機(您的一個節點)檢查它,因爲它看起來像您可能必須允許訪問bluemix防火牆配置中某處的端口 –

回答

1

我使用「Pod」解決了它,而不是部署。我還更改了hostPath並記錄了臨時的「emptyDir」卷格式(這是Bluemix提供的免費Kubernetes服務中的一項測試,因此我無法使用實際卷)。這是工作YAML:

apiVersion: v1 
kind: Pod 
metadata: 
    name: postgres 
    labels: 
    name: postgres 
spec: 
    containers: 
    - name: postgres 
     image: registry.ng.bluemix.net/eliza/postgres:9.5 
     env: 
     - name: POSTGRES_PASSWORD 
      value: MYPASSWORD 
     ports: 
     - containerPort: 5432 
     volumeMounts: 
     - name: pg-data 
      mountPath: /var/lib/postgresql/data 
     - name: tz-config 
      mountPath: /etc/localtime 
    volumes: 
    - name: pg-data 
    #emptyDir: {} 
    hostPath: 
     path: "/opt/tripbruPostgres" 
    - name: tz-config 
    hostPath: 
     path: /usr/share/zoneinfo/Europe/Madrid 

(注意:我仍然不知道什麼是錯的我的「部署」的方式,但使用波德工程,我不會在這個階段需要複製)