[英]Apache server runs with docker run but kubernetes pod fails with CrashLoopBackOff
我的應用程序使用 apache2 web 服務器。 由於 kube.netes 集群的限制,我在 pod 中沒有 root 權限。 因此,我將 apache2 的默認端口從 80 更改為 8080,以便能夠以非 root 用戶身份運行。
我的問題是,一旦我構建了 docker 圖像並在本地運行它,它就運行良好,但是當我在集群中使用 kube.netes 進行部署時,它一直失敗並顯示:
Action '-D FOREGROUND' failed.
導致 CrashLoopBackOff。
因此,基本上 apache2 服務器無法在非 root 用戶的 pod 中運行,但在 docker 運行時在本地運行良好。
任何幫助表示贊賞。
我附上我的部署和服務文件以供參考:
apiVersion: apps/v1
kind: Deployment
metadata:
name: &DeploymentName app
spec:
replicas: 1
selector:
matchLabels: &appName
app: *DeploymentName
template:
metadata:
name: main
labels:
<<: *appName
spec:
securityContext:
fsGroup: 2000
runAsUser: 1000
runAsGroup: 3000
volumes:
- name: var-lock
emptyDir: {}
containers:
- name: *DeploymentName
image: image:id
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /etc/apache2/conf-available
name: var-lock
- mountPath: /var/lock/apache2
name: var-lock
- mountPath: /var/log/apache2
name: var-lock
- mountPath: /mnt/log/apache2
name: var-lock
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 180
periodSeconds: 60
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 300
periodSeconds: 180
imagePullPolicy: Always
tty: true
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
envFrom:
- configMapRef:
name: *DeploymentName
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 1
memory: 2Gi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: &hpaName app
spec:
maxReplicas: 1
minReplicas: 1
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: *hpaName
targetCPUUtilizationPercentage: 60
---
apiVersion: v1
kind: Service
metadata:
labels:
app: app
name: app
spec:
selector:
app: app
ports:
- protocol: TCP
name: http-web-port
port: 80
targetPort: 8080
- protocol: TCP
name: https-web-port
port: 443
targetPort: 443
CrashLoopBackOff
是 Kube.netes 中的一個常見錯誤,表示 pod 在死循環中不斷崩潰。
CrashLoopBackOff
錯誤可能由多種問題引起,包括:
Insufficient resources - 資源不足導致容器無法加載 Locked file——文件已被另一個容器鎖定
Locked database - 數據庫正在被其他 pod 使用和鎖定 Failed reference - 對容器中不存在的腳本或二進制文件的引用
設置錯誤- Kube.netes 中的初始化容器設置問題 配置加載錯誤 - 服務器無法加載配置文件。
錯誤配置——常見的文件系統錯誤配置連接問題——DNS 或kube -DNS 無法連接到第三方服務
部署失敗的服務——嘗試部署已經失敗的服務/應用程序(例如,由於無法訪問其他服務)
要修復 kube.netes CrashLoopbackoff 錯誤,請參閱此鏈接並查看stackpost以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.