2017-06-16 68 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 

(注意:我仍然不知道什么是错的我的“部署”的方式,但使用波德工程,我不会在这个阶段需要复制)