我刚刚在AWS EKS上部署了带有Postgres的泊坞窗。
下面是对的描述。
我如何访问或测试postgres是否正常工作。我尝试从工作节点在VPC中通过发布访问两个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
在部署 list 文件中所做的操作,只是在容器之间附加了有关容器使用的网络连接的其他信息,这令人产生误解,因为容器仅公开5432端口(您可以通过自己的here进行验证)。您应该使用Kubernetes的Service-抽象来启用对POD的访问,并在后台进行必要的端口映射。
如果要在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>