我正在运行一个 GKE 集群,有时,其中一个节点与从php7-alpine
.
我们运行两种类型的容器,第一种类型是从 构建的php7-alpine
,第二种类型是从第一种类型构建的。( php7-alpine
-> Base App
-> App with extra
)。只有我们Base App
Pods
有这些问题。
到目前为止,我已经看到以下错误:
failed to reserve container name
FailedSync: error determining status: rpc error: code = Unknown desc = Error: No such container: XYZ
Error: context deadline exceeded context deadline exceeded: CreateContainerError
节点上有大量磁盘空间,kubectl describe pod
不包含任何相关/有用的信息。
更多细节:
- 在 50 个
Base app
中,有 6 个 pod 出错,并且在所有App with extra
pod 中,没有一个失败。 - 所有失败的 pod 总是在同一个节点上。
- 我们已经重新创建/替换了节点。问题仍然存在,如果我们用有故障的 pod 替换节点,我们有 50/50% 的概率让下一个节点上的所有 pod 都正常。问题显得有些随机。
- 运行 GKE v1.17.9-gke.1504
- 我们在可抢占节点上运行。
- 容器图像非常大(~3gb,正在努力减少)。
- 问题可能在一个月前开始。
我真的不知道要寻找什么,我已经广泛寻找类似的问题。任何帮助是极大的赞赏!
更新:
这是部署
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
appType: web
env: prod
name: my-app
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: my-app
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
app: my-app
version: v1.0
spec:
containers:
image: richarvey/nginx-php-fpm:latest # We build upon that image to add content and services
lifecycle:
preStop:
exec:
command:
- /entry-point/stop.sh
name: web
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
cpu: 50m
memory: 1500Mi
- image: redis:4.0-alpine
name: redis
resources:
requests:
cpu: 25m
memory: 25Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
该问题已被调查并修复。
https://github.com/containerd/containerd/issues/4604