首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pgpool无法作为pod在kubernetes上启动

Pgpool无法作为pod在kubernetes上启动
EN

Stack Overflow用户
提问于 2020-07-05 01:42:52
回答 1查看 553关注 0票数 0

我在一个容器上托管了pgpool,并为kubernetes部署提供了容器配置。

装载路径-

代码语言:javascript
复制
- name: cgroup
    mountPath: /sys/fs/cgroup:ro
- name: var-run
    mountPath: /run

cgroups的装载路径的卷如下所示-

代码语言:javascript
复制
- name: cgroup
    hostPath:
      path: /sys/fs/cgroup
      type: Directory
- name: var-run
  emptyDir:
      medium: Memory

同样在kubernetes部署中,我已经通过了-

代码语言:javascript
复制
 securityContext:
    privileged: true

但当我打开pod并在其中执行以检查pgpool状态时,我得到了以下问题-

代码语言:javascript
复制
[root@app-pg-6448dfb58d-vzk67 /]# journalctl -xeu pgpool
-- Logs begin at Sat 2020-07-04 16:28:41 UTC, end at Sat 2020-07-04 16:29:13 UTC. --
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: Started Pgpool-II.
-- Subject: Unit pgpool.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit pgpool.service has finished starting up.
-- 
-- The start-up result is done.
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: [1-1] 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "stateme
nt_level_load_balance"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "statement_lev
el_load_balance"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "auto_failback
"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "auto_failback
_interval"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "enable_consen
sus_with_half_votes"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "enable_shared
_relcache"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "relcache_quer
y_target"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: FATAL:  could not open pid file as /var/run/pgpool-II-11/p
gpool.pid. reason: No such file or directory
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: pgpool.service: main process exited, code=exited, status=3/NOTIMPLEMENTED
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: Unit pgpool.service entered failed state.
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: pgpool.service failed.

pod容器内的Systemctl status pgpool -

代码语言:javascript
复制
➜  app-app kubectl exec -it app-pg-6448dfb58d-vzk67  -- bash
[root@app-pg-6448dfb58d-vzk67 /]# systemctl status pgpool
● pgpool.service - Pgpool-II
   Loaded: loaded (/usr/lib/systemd/system/pgpool.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2020-07-04 16:28:41 UTC; 1h 39min ago
  Process: 34 ExecStart=/usr/bin/pgpool -f /etc/pgpool-II/pgpool.conf $OPTS (code=exited, status=3)
 Main PID: 34 (code=exited, status=3)

Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "stat...lance"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "auto...lback"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "auto...erval"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "enab...votes"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "enab...cache"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: INFO:  unrecognized configuration parameter "relc...arget"
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 pgpool[34]: 2020-07-04 16:28:41: pid 34: FATAL:  could not open pid file as /var/run/pgpoo...ectory
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: pgpool.service: main process exited, code=exited, status=3/NOTIMPLEMENTED
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: Unit pgpool.service entered failed state.
Jul 04 16:28:41 app-pg-6448dfb58d-vzk67 systemd[1]: pgpool.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

如果需要,这是整个部署示例-

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-pg
  labels:
    helm.sh/chart: app-pgpool-1.0.0
    app.kubernetes.io/name: app-pgpool
    app.kubernetes.io/instance: app-service
    app.kubernetes.io/version: "1.0.3"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: app-pgpool
      app.kubernetes.io/instance: app-service
  template:
    metadata:
      labels:
        app.kubernetes.io/name: app-pgpool
        app.kubernetes.io/instance: app-service
    spec:
      volumes:
        - name: "pgpool-config"
          persistentVolumeClaim:
            claimName: "pgpool-pvc"
        - name: cgroup
          hostPath:
            path: /sys/fs/cgroup
            type: Directory
        - name: var-run
          emptyDir:
            # Tmpfs needed for systemd.
            medium: Memory
      # volumes:
      #   - name: pgpool-config
      #     configMap:
      #       name: pgpool-config
      # - name: pgpool-config
      #   azureFile:
      #     secretName: azure-fileshare-secret
      #     shareName: pgpool
      #     readOnly: false
      imagePullSecrets:
        - name: app-secret
      serviceAccountName: app-pg
      securityContext:
        {}
      containers:
        - name: app-pgpool
          securityContext:
            {}
          image: "appacr.azurecr.io/pgpool:1.0.3"
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: true
          stdin: true
          tty: true
          ports:
            - name: http
              containerPort: 9999
              protocol: TCP
          # livenessProbe:
          #   httpGet:
          #     path: /
          #     port: http
          # readinessProbe:
          #   httpGet:
          #     path: /
          #     port: http
          resources:
            {}
          volumeMounts:
            - name: "pgpool-config"
              mountPath: /etc/pgpool-II
            - name: cgroup
              mountPath: /sys/fs/cgroup:ro
            - name: var-run
              mountPath: /run

更新-

在dockerfile上运行相同的设置运行得很好,没有任何问题-

代码语言:javascript
复制
version: '2'
services:

  pgpool:
    container_name: pgpool
    image: appacr.azurecr.io/pgpool:1.0.3
    logging:
      options:
        max-size: 100m
    ports:
      - "9999:9999"
    networks:
      vpcbr:
        ipv4_address: 10.5.0.2
    restart: unless-stopped
    volumes:
     - /sys/fs/cgroup:/sys/fs/cgroup:ro
     - $HOME/Documents/app/docker-compose/pgpool.conf:/etc/pgpool-II/pgpool.conf
     - $HOME/Documents/app/docker-compose/pool_passwd:/etc/pgpool-II/pool_passwd
    privileged: true
    stdin_open: true
    tty: true

我不知道我做错了什么,我无论如何都不能启动这个pgpool,也不能指出问题所在。我们在这里缺少什么权限,或者cgroups是否是罪魁祸首?还是不想?

如果能有一些指导,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-07-05 06:41:50

虽然这可能不是你问题的直接答案,但我在尝试从原始清单运行任何postgresql产品时看到了一些非常隐秘的错误,我的建议是尝试利用来自Bitnami的图表,他们已经投入了大量精力来确保所有的安全/权限错误都得到了适当的处理。

https://github.com/bitnami/charts/tree/master/bitnami/postgresql-ha

希望这能有所帮助。

此外,如果不想使用Helm,可以运行help template命令

https://helm.sh/docs/helm/helm_template/

这将根据所提供的values.yaml从图表的模板文件中生成清单

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62732450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档