【问题标题】:Postgres on Kubernetes on IBM Bluemix containersIBM Bluemix 容器上的 Kubernetes 上的 Postgres
【发布时间】:2017-11-19 11:50:57
【问题描述】:

我正在尝试在 Bluemix 容器服务 (Kubernetes) 上部署 Postgres

我已经创建了镜像,并通过以下 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 上的节点 IP 地址。我已经测试过 Postgres 正在使用:

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

我进入 docker 实例并检查 Postgres 运行正常。

我确定我遗漏了一些东西。我需要任何其他 yaml 文件吗?谢谢。

【问题讨论】:

  • 您能否添加您尝试连接的方式(从哪里,您使用什么工具进行测试)?
  • 只是从 Internet 连接。我想使用节点的外部 IP 和端口 31432 访问该 Postgres Pod。我已经在本地尝试使用 Minikube 并且它可以工作(相同的 Yaml 文件)。谢谢。
  • 从主机(您的一个节点)检查它,因为看起来您可能必须允许访问 bluemix 防火墙配置中某处的端口

标签: postgresql kubernetes containers ibm-cloud ibm-cloud-kubernetes


【解决方案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

(请注意,我仍然不知道我的“部署”方法出了什么问题,但是使用 Pod 可以工作,因为我在这个阶段不需要复制)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多