达到内存限制后崩溃时,pod不会自动重新启动

时间:2018-12-17 16:50:37

标签: kubernetes google-kubernetes-engine

我正在GKE上运行我的长生不老药应用程序

这是我的部署配置:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp
  namespace: production
spec:
  replicas: 1
  revisionHistoryLimit: 1
  strategy:
      type: RollingUpdate
  template:
    metadata:
      labels:
        app: myapp
        tier: backend
    spec:
      securityContext:
        runAsUser: 0
        runAsNonRoot: false
      containers:
      - name: myapp
        image: myimage
        resources:
          limits:
            cpu: 3000m
            memory: 2000Mi
          requests:
            cpu: 2500m
            memory: 1000Mi
        ports:
        - containerPort: 80
        args:
          - foreground

如您在图像中所见,窗格已达到其内存限制并崩溃了 pod

这些是我最近的日志:

erl_child_setup closed

Crash dump is being written to: erl_crash.dump...done

Shutting down..

Node is not running!

然后我的应用被冻结,尝试请求该应用时得到502,

为了重新启动,我重新启动了pod(kubectl delete pod),然后再次运行,

我的问题是:为什么在达到内存限制时pod不能自动重启?

2 个答案:

答案 0 :(得分:3)

您需要添加探针,以检查您的应用程序是否正常。

由于您提到了502,所以我假设这是Phoenix应用程序,您可以添加运行状况检查端点:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3

当此请求停止接收200时,Kubernetes Controller将重新启动您的pod。

答案 1 :(得分:1)