我正在运行 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 个 pod 中
Base app
,有 6 个 pod 出现错误,并且所有App with extra
pod 中没有一个出现故障。 - 所有故障的 pod 始终位于同一节点上。
- 我们已经重新创建/替换了节点。问题仍然存在,如果我们用有故障的 pod 替换节点,则下一个节点上所有 pod 都正常的可能性为 50/50%。问题似乎有点随机。
- 运行 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