kubernetes - 如何测试容器是否正在运行 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 端口(您可以在此处自行验证)。
您应该使用 Kubernetes Service - 抽象,它可以访问您的 POD,并在后台进行必要的端口映射。如果您想在 Kubernetes 集群之外公开您的 postgresql 数据库,
请检查不同的端口类型。
要测试 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>
推荐阅读
- go - Golang CLI 眼镜蛇计数标志
- python - 基于 Pytorch 的 Resnet18 在 CIFAR100 上实现了低准确率
- typescript - “createAsyncAction” 带有不期望参数的请求返回 TypeScript 错误
- ios - 在 SwiftUI 中使用 CoreData 处理列表
- python - 使用 office365 API 将文件上传到 Sharepoint 中的子文件夹
- c# - 如何将项目列表添加到多列 DataGridView?
- reactjs - Typescript`可以用约束'{}'的不同子类型和react-final-form实例化
- html - 如何在 python selenium webdriver 中选择树节点跨度标记值?
- python - Pandas - 用增加的后缀标记列表中的重复元素
- android - 安卓进程