Как проверить, работает ли контейнер postgres - PullRequest
0 голосов
/ 05 марта 2019

Я только что развернул докер с Postgres на нем на AWS EKS.

Ниже приведено описание enter image description here подробнее.

Как получить доступ или проверить, работает ли postgres.Я попытался получить доступ к обоим IP с постом в VPC с рабочего узла.

 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

1 Ответ

0 голосов
/ 06 марта 2019

Короче говоря, вам нужно выполнить следующую команду, чтобы выставить базу данных на порт 55432.

kubectl expose deployment postgres --port=55432 --target-port=5432 --name internal-postgresql-svc

Теперь вы можете подключиться к ней через порт 55432 изнутри вашего кластера с помощью службыимя в качестве имени хоста или через его адрес ClusterIP:

kubectl get internal-postgresql-svc

Что вы сделали в своем файле манифеста развертывания, вы только что приложили дополнительную информацию о сетевых подключениях, которые контейнер использует, в заблуждение, потому что ваш контейнер предоставляет 5432только порт (вы можете проверить это самостоятельно здесь ).

Вы должны использовать Kubernetes Service - абстракцию, которая разрешает доступ к вашим POD и выполняет необходимое сопоставление портов за сценой.

Пожалуйста, проверьте также разные типы портов, если вы хотите предоставить свою базу данных postgresql за пределами кластера Kubernetes.


Чтобы проверить, работает ли прогресс в контейнере 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> 
...