如何测试容器是否为 运行 postgres
How to test if container is running postgres
我刚刚在 AWS EKS 上部署了一个带有 Postgres 的 docker。
下面是描述详情。
如何访问或测试 postgres 是否正常工作。我尝试从工作节点在 VPC 中使用 post 访问这两个 IP。
psql -h #IP -U #defaultuser -p 55432
下面是部署。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 55432
# envFrom:
# - configMapRef:
# name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: efs
令人惊讶的是,我能够连接到 psql,但是是在 5432 上。:( 不确定我做错了什么。我将 containerPort 作为 55432
简而言之,您需要运行以下命令在 55432 端口上公开您的数据库。
kubectl expose deployment postgres --port=55432 --target-port=5432 --name internal-postgresql-svc
从现在开始,您可以使用服务名称作为主机名或通过其 ClusterIP 地址从集群内部通过端口 55432 连接到它:
kubectl get internal-postgresql-svc
你在部署清单文件中做了什么,你只是附加了关于容器使用的网络连接的额外信息,在误导之间,因为你的容器只暴露 5432 端口(你可以自己验证 here).
You should use a Kubernetes Service - 允许访问您的 PODs 并在后台进行必要的端口映射的抽象。
如果您想在 Kubernetes 集群之外公开您的 postgresql 数据库,请同时检查 different 端口类型。
测试进度是否 运行在 POD 的容器内正常:
kubectl run postgresql-postgresql-client --rm --tty -i --restart='Never' --namespace default --image bitnami/postgresql --env="PGPASSWORD=<HERE_YOUR_PASSWORD>" --command -- psql --host <HERE_HOSTNAME=SVC_OR_IP> -U <HERE_USERNAME>
我刚刚在 AWS EKS 上部署了一个带有 Postgres 的 docker。
下面是描述
如何访问或测试 postgres 是否正常工作。我尝试从工作节点在 VPC 中使用 post 访问这两个 IP。
psql -h #IP -U #defaultuser -p 55432
下面是部署。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 55432
# envFrom:
# - configMapRef:
# name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: efs
令人惊讶的是,我能够连接到 psql,但是是在 5432 上。:( 不确定我做错了什么。我将 containerPort 作为 55432
简而言之,您需要运行以下命令在 55432 端口上公开您的数据库。
kubectl expose deployment postgres --port=55432 --target-port=5432 --name internal-postgresql-svc
从现在开始,您可以使用服务名称作为主机名或通过其 ClusterIP 地址从集群内部通过端口 55432 连接到它:
kubectl get internal-postgresql-svc
你在部署清单文件中做了什么,你只是附加了关于容器使用的网络连接的额外信息,在误导之间,因为你的容器只暴露 5432 端口(你可以自己验证 here).
You should use a Kubernetes Service - 允许访问您的 PODs 并在后台进行必要的端口映射的抽象。
如果您想在 Kubernetes 集群之外公开您的 postgresql 数据库,请同时检查 different 端口类型。
测试进度是否 运行在 POD 的容器内正常:
kubectl run postgresql-postgresql-client --rm --tty -i --restart='Never' --namespace default --image bitnami/postgresql --env="PGPASSWORD=<HERE_YOUR_PASSWORD>" --command -- psql --host <HERE_HOSTNAME=SVC_OR_IP> -U <HERE_USERNAME>