![](/img/trans.png)
[英]app nodejs in kubernetes cluster dont stay runing - CrashLoopBackOff
[英]Kubernetes Crashloopbackoff With Minikube
因此,我正在通過指南了解 Kube.netes,我正在嘗試部署一個帶有 1 個副本的 MongoDB Pod。 這是部署配置文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-deployment
labels:
app: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-root-username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key: mongo-root-password
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-service
spec:
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
我還嘗試使用幾乎相同的配置文件部署一個 Mongo-Express Pod,但我不斷為兩個 Pod 獲取CrashLoopBackOff
,據我所知,這是由於容器失敗並在一個循環中重新啟動引起的。 我嘗試使用kubectl get events
,我看到一條警告消息Back-off restarting failed container
不斷出現。 我也嘗試做一些挖掘並發現了一個解決方案,說要添加
command: ['sleep']
args: ['infinity']
這解決了 CrashLoopBackOff 問題,但是當我嘗試獲取 Pod 的日志時,終端上沒有顯示任何內容。 我需要一些幫助和可能的解釋,因為command
和args
似乎是如何修復它的,還有我如何阻止這種崩潰發生在我的 Pod 和當前的 Pod 上,非常感謝。
我的建議是在 Kube.netes 上將 MongoDB 部署為StatefulSet 。
在有狀態應用程序中,主節點的 N 個副本管理集群下的多個工作節點。 因此,如果任何主節點出現故障,其他序號實例將處於活動狀態以執行工作流。 主節點實例必須標識為稱為 StatefulSet 的唯一序號。 查看更多: mongodb-sts , mongodb-on-kube.netes 。 還可以使用Headless 服務來管理 Pod 的域。 對Headless Service的一般理解,不需要LoadBalancer或kube-proxy直接與Pod交互,而是使用Service IP,所以Cluster IP設置為none 。
在你的情況下:
apiVersion: v1
kind: Service
metadata:
name: mongodb
spec:
clusterIP: None
selector:
app: mongodb
ports:
- port: 27017
錯誤:
Also uncaught exception: Error: couldn't add user: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR _getErrorWithCode@src/mongo/shell/utils.js:25:13
表示秘密可能丟失。 看看: mongodb-initializating 。
在您的情況下,秘密應該看起來相似:
apiVersion: v1
kind: Secret
metadata:
name: mongodb-secret
type: Opaque
data:
mongo-root-username: YWRtaW4=
mongo-root-password: MWYyZDFlMmU2N2Rm
請記住還要為您的 pod 配置一個卷 - 按照我在上面鏈接的教程進行操作。
使用 StatefulSet 部署 mongodb 而不是部署。
例子:
apiVersion: v1 kind: 服務元數據: name: mongodb-service labels: name: mongo spec: ports:
apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: mongod spec: serviceName: mongodb-service replicas: 3 template: metadata: labels: role: mongo environment: test replicaset: MainRepSet spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - 重量:100 podAffinityTerm: labelSelector: matchExpressions: - key: replicaset operator: In values: - MainRepSet topologyKey: kube.netes.io/hostname terminationGracePeriodSeconds: 10 volumes: - name: secrets-volume secret: secretName: shared-bootstrap-data defaultMode: 256 個容器:-名稱:mongod容器#image:pkdone/mongo-ent:3.4圖像:mongo命令:-“numactl”-“--interleave=all”-“mongod”-“--wiredTigerCacheSizeGB”-“0.1”-“ --bind_ip" - "0.0.0.0" - "--replSet" - "MainRepSet" - "--auth" - "--clusterAuthMode" - "keyFile" - "--keyFile" - "/etc/secrets-volume /internal-auth-mongodb-keyfile" - "--setParameter" - "authenticationMechanisms=SCRAM-SHA-1" 資源:請求:cpu:0.2 memory:200Mi端口:-容器端口:27017 volumeMounts:-名稱:secrets-volume readOnly:true mountPath:/etc/secrets-volume-名稱:mongodb-persistent-storage-claim mountPath:/data/db volumeClaimTemplates:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.