<pre><code>$ kubectl version --short
Client Version: v1.20.2
Server Version: v1.19.6-eks-49a6c0
</code></pre>
<p>I have the following Deployment manifest</p>
<pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
  name: stats-service
  namespace: my-system
  labels:
    app: stats-service
spec:
  selector:
    matchLabels:
      app: stats-service
  template:
    metadata:
      labels:
        app: stats-service
    spec:
      containers:
      - name: stats-service
        image: 0123456789.dkr.ecr.us-east-1.amazonaws.com/stats-service:3.12.1
        resources:
          requests:
            memory: &quot;1024m&quot;
            cpu: &quot;512m&quot;
          limits:
            memory: &quot;2048m&quot;
            cpu: &quot;1024m&quot;
        ports:
        - name: http
          containerPort: 5000
          protocol: TCP
       startupProbe:
          httpGet:
            path: /manage/health
            port: 5000
          failureThreshold: 30
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /manage/health
            port: 5000
          failureThreshold: 3
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /manage/health
            port: 5000
          failureThreshold: 6
          periodSeconds: 10
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: test
        - name: JAVA_OPTS
          value: &quot;my_java_opts&quot;
</code></pre>
<p>When I apply it I get the following warning, and the Pod never gets created. What does it mean and how to resolve it? In my case, I'm running and EKS Fargate (only) cluster. Thanks!</p>
<pre><code>$ kubectl describe pod stats-service-797784dfd5-tvh84
...
  Warning  FailedCreatePodSandBox  12s   kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: OCI runtime create failed: container_linux.go:349: starting container process caused &quot;process_linux.go:319: getting the final child's pid from pipe caused \&quot;read init-p: connection reset by peer\&quot;&quot;: unknown
</code></pre>
<p>NOTES:</p>
<ul>
<li>Seems like the warning is related to the <code>spec.template.spec.containers.resources.limits</code> block. If I remove that, the Pod gets created.</li>
<li>A lot of the solutions I read online say to reset Docker, which obviously can't apply to me.</li>
</ul>

<p>You are using the wrong notations for your resources. As per <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-units-in-kubernetes" rel="nofollow noreferrer">Meaning of memory</a>:</p>
<blockquote>
<p>Limits and requests for memory are measured in bytes. You can express
memory as a plain integer or as a fixed-point number using one of
these suffixes: E, P, T, G, M, K. You can also use the power-of-two
equivalents: Ei, Pi, Ti, Gi, Mi, Ki.</p>
</blockquote>
<p>If you want,</p>
<ul>
<li>Requests:
<ul>
<li>1GB RAM</li>
<li>0.5 vCPU/Core</li>
</ul>
</li>
<li>Limits:
<ul>
<li>2GB RAM</li>
<li>1 vCPU/Core</li>
</ul>
</li>
</ul>
<p>This should work:</p>
<pre><code>        resources:
          requests:
            memory: &quot;1G&quot;
            cpu: &quot;0.5&quot;
          limits:
            memory: &quot;2G&quot;
            cpu: &quot;1&quot;
</code></pre>
<p>The following is equivalent, but using different notations:</p>
<pre><code>        resources:
          requests:
            memory: &quot;1024M&quot;
            cpu: &quot;500m&quot;
          limits:
            memory: &quot;2048M&quot;
            cpu: &quot;1000m&quot;
</code></pre>
<p><em>Notice that the above example uses <code>M</code> for memory, not <code>m</code>.</em></p>
