<p>Cluster information:<br>
Kubernetes version: 1.8<br>
Cloud being used: (put bare-metal if not on a public cloud) AWS EKS<br>
Host OS: debian linux</p>

<p>When I deploy pods,I want to my pod to install and start sysstat automatically</p>

<p>this is my two yaml flies below but it doesn’t work CrashLoopBackoff when I put the command: ["/bin/sh", “-c”]、args: [“apt-get install sysstat”]」 below 「image:」</p>

<p>cat deploy/db/statefulset.yaml</p>

<pre><code>apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: 
    sbdemo-postgres-sfs
spec:
  serviceName: sbdemo-postgres-service
  replicas: 1
  selector:
    matchLabels:
      app: sbdemo-postgres-sfs
  template:
    metadata:
      labels:
        app: sbdemo-postgres-sfs
    spec:
      containers:
       - name: postgres
         image: dayan888/springdemo:postgres9.6
         ports:
          - containerPort: 5432
         **command: ["/bin/bash", "-c"]**
         **args: ["apt-get install sysstat"]**
         volumeMounts:
         - name: pvc-db-volume
           mountPath: /var/lib/postgresql
  volumeClaimTemplates:
  - metadata:
      name: pvc-db-volume
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1G
</code></pre>

<p>cat deploy/web/deployment.yaml</p>

<pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
  name: sbdemo-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sbdemo-nginx
  template:
    metadata:
      labels:
        app: sbdemo-nginx
    spec:
      containers:
      - name: nginx
        image: gobawoo21/springdemo:nginx
         **command: ["/bin/bash", "-c"]**
         **args: ["apt-get install sysstat"]**
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-conf
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
        - name: server-conf
          mountPath: /etc/nginx/conf.d/server.conf
          subPath: server.conf
      volumes:
      - name: nginx-conf
        configMap: 
          name: nginx-conf
          items:
            - key: nginx.conf
              path: nginx.conf
      - name: server-conf
        configMap: 
          name: server-conf
          items:
            - key: server.conf
              path: server.conf
</code></pre>

<p>Does anyone know about how to set the repository automatically when deploy pods?</p>

<p>Regards</p>

Bawoo
<p>The best practice is to install packages at image build stage. You can simply add this step to your Dockerfile.</p>

<pre><code>FROM postgres:9.6

RUN apt-get update &amp;&amp;\ 
    apt-get install sysstat -y &amp;&amp;\
    rm -rf /var/lib/apt/lists/*

COPY deploy/db/init_ddl.sh /docker-entrypoint-initdb.d/
RUN chmod +x /docker-entrypoint-initdb.d/init_ddl.sh
</code></pre>

<p>Kube Manifest </p>

<pre><code>   spec:
      containers:
       - name: postgres
         image: harik8/sof:62298191
         imagePullPolicy: Always
         ports:
          - containerPort: 5432
         env:
         - name: POSTGRES_PASSWORD
           value: password
         volumeMounts:
         - name: pvc-db-volume
           mountPath: /var/lib/postgresql
</code></pre>

<p>It should run (Please ignore <code>POSTGRES_PASSWORD</code> env variable)</p>

<pre><code>$ kubectl get po
NAME                    READY   STATUS      RESTARTS   AGE
sbdemo-postgres-sfs-0   1/1     Running     0          8m46s
</code></pre>

<p>Validation</p>

<pre><code>$ kubectl exec -it sbdemo-postgres-sfs-0 bash
root@sbdemo-postgres-sfs-0:/# iostat
Linux 4.19.107 (sbdemo-postgres-sfs-0)  06/10/2020      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          10.38    0.01    6.28    0.24    0.00   83.09

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda             115.53      1144.72      1320.48    1837135    2119208
scd0              0.02         0.65         0.00       1048          0
</code></pre>
