title: Running scripts using lifecycle hook does not work properly in kubernetes
body: <p>I am new to kubernetes env. And I am learning kubernetes using minikube. I have a situation where I have to configure fdw (foreign table concept)  in PostgreSQL.</p>
  <p>I am trying to implement this fdw concept in kubernetes. For that I have two pods meta pod where we create the foreign table and server, Data pod where the actual table exist. To create a meta pod you should have an Docker image consist of following script.</p>
  <p><strong>Script.sh</strong></p>
  <pre><code>#!/bin/bash
  psql -d metap -U papu -c &quot;CREATE EXTENSION if not exists postgres_fdw;&quot;
  psql -d metap -U papu -c &quot;CREATE SERVER if not exists dataserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'datap.default.svc.cluster.local', dbname 'datap', port '5432');&quot;
  psql -d metap -U papu -c &quot;CREATE USER MAPPING if not exists FOR ais SERVER dataserver OPTIONS (user 'papu', password 'papu');&quot;
  psql -d metap -U papu -c &quot;CREATE FOREIGN TABLE if not exists dream (id integer, val text) SERVER dataserver OPTIONS (schema_name 'public', table_name 'dream');&quot;
  </code></pre>
  <p>The yaml file for the two pods is given below.</p>
  <p><strong>p-config.yaml</strong></p>
  <pre><code>apiVersion: v1
  kind: ConfigMap
  metadata:
    name: p-config
    labels:
      app: post
  data:
    POSTGRES_DB: datap
    POSTGRES_USER: papu
    POSTGRES_PASSWORD: papu
  </code></pre>
  <p><strong>datap.yaml</strong></p>
  <pre><code>apiVersion: v1
  kind: Service
  metadata:
    name: datap
    labels:
      app: datap
  spec:
    ports:
    - port: 5432
      name: datap
    clusterIP: None
    selector:
      app: datap
  ---
  apiVersion: apps/v1
  kind: StatefulSet
  metadata:
    name: datap
  spec:
    serviceName: &quot;datap&quot;
    replicas: 1
    selector:
      matchLabels:
        app: datap
    template:
      metadata:
        labels:
          app: datap
      spec:
        containers:
        - name: datap
          image: postgres:latest
          envFrom:
            - configMapRef:
                name: p-config
          ports:
          - containerPort: 5432
            name: datap
          volumeMounts:
          - name: datap 
            mountPath: /var/lib/postgresql/data
            subPath: datap
    volumeClaimTemplates:
      - metadata:
          name: datap 
        spec:
          accessModes: [ &quot;ReadWriteOnce&quot; ]
          resources:
            requests:
              storage: 2Gi
  </code></pre>
  <p>My use case is that I already have data pod up and running, now I have to create the foreign table through running script in meta pod dynamically.</p>
  <p>For that I am using life cycle hook. when I run this configuration, <em><strong>the foreign table is created and fdw connection is established</strong></em>. <strong>But the logs say life-cycle hook is not Executed</strong>. Is this a bug? Or any problem in my configuration?</p>
  <pre><code>$ kubectl describe pod metap-0
  
  Name:           metap-0
  Namespace:      default
  Priority:       0
  Node:           minikube/10.0.2.15
  Start Time:     Fri, 20 Sep 2019 15:50:41 +0530
  Labels:         app=metap
                  controller-revision-hash=metap-648ddb5465
                  statefulset.kubernetes.io/pod-name=metap-0
  Annotations:    &lt;none&gt;
  Status:         Running
  IP:             172.17.0.10
  Controlled By:  StatefulSet/metap
  Containers:
    metap:
      Container ID:  
      Image:          &lt;script containing image &gt;:latest
      Port:           5432/TCP
      Host Port:      0/TCP
      State:          Running
        Started:      Fri, 20 Sep 2019 15:51:29 +0530
      Last State:     Terminated
        Reason:       Completed
        Exit Code:    0
        Started:      Fri, 20 Sep 2019 15:51:14 +0530
        Finished:     Fri, 20 Sep 2019 15:51:15 +0530
      Ready:          True
      Restart Count:  2
      Environment:    &lt;none&gt;
      Mounts:
        /var/lib/postgresql/data from metap (rw,path=&quot;metap&quot;)
        /var/run/secrets/kubernetes.io/serviceaccount from default-token
  Conditions:
    Type              Status
    Initialized       True 
    Ready             True 
    ContainersReady   True 
    PodScheduled      True 
  Volumes:
    mpostgredb:
      Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
      ClaimName:  metap-metap-0
      ReadOnly:   false
    default-token-r2ncm:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  default-token-r2ncm
      Optional:    false
  QoS Class:       BestEffort
  Node-Selectors:  &lt;none&gt;
  Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                   node.kubernetes.io/unreachable:NoExecute for 300s
  Events:
    Type     Reason               Age                From               Message
    ----     ------               ----               ----               -------
    Warning  FailedScheduling     71s (x2 over 71s)  default-scheduler  pod has unbound immediate PersistentVolumeClaims
    Normal   Scheduled            69s                default-scheduler  Successfully assigned default/metap-0 to minikube
    Warning  FailedPostStartHook  67s                kubelet, minikube  Exec lifecycle hook ([/bin/sh -c script.sh]) for Container &quot;metap&quot; in Pod &quot;metap-0_default(6a367766-cd7e-4bab-826a-908e33622bcf)&quot; failed - error: command '/bin/sh -c script.sh' exited with 2: psql: could not connect to server: No such file or directory
             Is the server running locally and accepting
             connections on Unix domain socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;?
  psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;?
  psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;?
  psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;?
  , message: &quot;psql: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \&quot;/var/run/postgresql/.s.PGSQL.5432\&quot;?\npsql: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \&quot;/var/run/postgresql/.s.PGSQL.5432\&quot;?\npsql: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \&quot;/var/run/postgresql/.s.PGSQL.5432\&quot;?\npsql: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \&quot;/var/run/postgresql/.s.PGSQL.5432\&quot;?\n&quot;
    Warning  FailedPostStartHook  35s  kubelet, minikube  Exec lifecycle hook ([/bin/sh -c script.sh]) for Container &quot;metap&quot; in Pod &quot;metap-0_default(6a367766-cd7e-4bab-826a-908e33622bcf)&quot; failed - error: command '/bin/sh -c script.sh' exited with 1: psql: FATAL:  the database system is starting up
  psql: FATAL:  the database system is starting up
  ERROR:  server &quot;dataserver&quot; does not exist
  ERROR:  server &quot;dataserver&quot; does not exist
  , message: &quot;psql: FATAL:  the database system is starting up\npsql: FATAL:  the database system is starting up\nERROR:  server \&quot;dataserver\&quot; does not exist\nERROR:  server \&quot;dataserver\&quot; does not exist\n&quot;
    Normal   Killing  35s (x2 over 67s)  kubelet, minikube  FailedPostStartHook
    Warning  BackOff  33s (x2 over 34s)  kubelet, minikube  Back-off restarting failed container
    Normal   Created  21s (x3 over 68s)  kubelet, minikube  Created container metap
    Normal   Started  21s (x3 over 68s)  kubelet, minikube  Started container metap
    Normal   Pulling  21s (x3 over 68s)  kubelet, minikube  Pulling image &quot; &lt;script containing image &gt;:latest&quot;
    Normal   Pulled   21s (x3 over 68s)  kubelet, minikube  Successfully pulled image &quot; &lt;script containing image &gt;:latest&quot;
  
  
  
  $ kubectl logs metap-0 
  2019-09-20 10:21:29.500 UTC [1] LOG:  listening on IPv4 address &quot;0.0.0.0&quot;, port 5432
  2019-09-20 10:21:29.500 UTC [1] LOG:  listening on IPv6 address &quot;::&quot;, port 5432
  2019-09-20 10:21:29.502 UTC [1] LOG:  listening on Unix socket &quot;/var/run/postgresql/.s.PGSQL.5432&quot;
  2019-09-20 10:21:29.514 UTC [22] LOG:  database system was shut down at 2019-09-20 10:21:15 UTC
  2019-09-20 10:21:29.518 UTC [1] LOG:  database system is ready to accept connections
  </code></pre>
  <p><em><strong>kubectl version</strong></em></p>
  <pre><code>Client Version: version.Info{Major:&quot;1&quot;, Minor:&quot;15&quot;, GitVersion:&quot;v1.15.3&quot;, GitCommit:&quot;2d3c76f9091b6bec110a5e63777c332469e0cba2&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2019-08-19T11:13:54Z&quot;, GoVersion:&quot;go1.12.9&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}
  Server Version: version.Info{Major:&quot;1&quot;, Minor:&quot;15&quot;, GitVersion:&quot;v1.15.2&quot;, GitCommit:&quot;f6278300bebbb750328ac16ee6dd3aa7d3549568&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2019-08-05T09:15:22Z&quot;, GoVersion:&quot;go1.12.5&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux/amd64&quot;}
  
  
  </code></pre>
  <p>*** Minikube version ***</p>
  <pre><code>minikube version: v1.3.1
  commit: ca60a424ce69a4d79f502650199ca2b52f29e631
  </code></pre>