IBM Bluemix 容器上的 Kubernetes 上的 Postgres
Postgres on Kubernetes on IBM Bluemix containers
我正在尝试在 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 文件吗?谢谢
我使用 "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
(请注意,我仍然不知道我的 "Deployment" 方法有什么问题,但是使用 Pod 是可行的,因为我在这个阶段不需要复制)
我正在尝试在 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 文件吗?谢谢
我使用 "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
(请注意,我仍然不知道我的 "Deployment" 方法有什么问题,但是使用 Pod 是可行的,因为我在这个阶段不需要复制)