首页 > 解决方案 > Kubernetes Node 14 pod 重新启动并以退出代码 0 终止

问题描述

我有一个带有以下 Dockerfile 的 Angular Universal 应用程序:

FROM node:14-alpine
WORKDIR /app

COPY package.json /app
COPY dist/webapp /app/dist/webapp

ENV NODE_ENV "production"
ENV PORT 80

EXPOSE 80
CMD ["npm", "run", "serve:ssr"]

我可以很好地将它部署到 Kubernetes 集群,但它每 10 分钟左右就会重新启动一次:

NAME                      READY   STATUS    RESTARTS   AGE
api-xxxxxxxxx-xxxxx       1/1     Running   0          48m
webapp-xxxxxxxxxx-xxxxx   1/1     Running   232        5d19h

Pod 日志很干净,当我描述 Pod 时,我只看到:

    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Tue, 22 Sep 2020 15:58:27 -0300
      Finished:     Tue, 22 Sep 2020 16:20:31 -0300

Events:
  Type    Reason   Age                      From                           Message
  ----    ------   ----                     ----                           -------
  Normal  Created  3m31s (x233 over 5d19h)  kubelet, pool-xxxxxxxxx-xxxxx  Created container webapp
  Normal  Started  3m31s (x233 over 5d19h)  kubelet, pool-xxxxxxxxx-xxxxx  Started container webapp
  Normal  Pulled   3m31s (x232 over 5d18h)  kubelet, pool-xxxxxxxxx-xxxxx  Container image "registry.gitlab.com/..." already present on machine

这是我的部署.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: $CI_PROJECT_NAME
  namespace: $KUBE_NAMESPACE
  labels:
    app: webapp
    tier: frontend
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 0
       maxUnavailable: 1
  selector:
    matchLabels:
      app: webapp
      tier: frontend
  template:
    metadata:
      labels:
        app: webapp
        tier: frontend
    spec:
      imagePullSecrets:
        - name: gitlab-registry
      containers:
        - name: $CI_PROJECT_NAME
          image: $IMAGE_TAG
          ports:
            - containerPort: 80

我怎么知道它不断重启的原因?谢谢!

标签: node.jsdockerkubernetesangular-universal

解决方案


推荐阅读