Click here to get error screen
我正在将Azure共享作为卷将MongoDb部署到Azure AKS(使用持久卷和持久卷声明)。如果我要增加多个副本,则发生CrashLoopBackOff。只有一个Pod正在创建,其他Pod却失败了。
我的用于创建MongoDb映像的Docker文件。
FROM ubuntu:16.04
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
RUN echo "deb http://repo.mongodb.org/apt/ubuntu $(cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2)/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list
RUN apt-get update && apt-get install -y mongodb-org
EXPOSE 27017
ENTRYPOINT ["/usr/bin/mongod"]
用于部署的YAML文件
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: mongo
labels:
name: mongo
spec:
replicas: 3
template:
metadata:
labels:
app: mongo
spec:
containers:
- name: mongo
image: <my image of mongodb>
ports:
- containerPort: 27017
protocol: TCP
name: mongo
volumeMounts:
- mountPath: /data/db
name: az-files-mongo-storage
volumes:
- name: az-files-mongo-storage
persistentVolumeClaim:
claimName: mong-pvc
---
apiVersion: v1
kind: Service
metadata:
name: mongo
spec:
ports:
- port: 27017
targetPort: 27017
selector:
app: mongo
答案 0 :(得分:4)
对于您的问题,您可以查看另一个issue遇到相同的错误。因此,当另一个已经为mongo完成的卷似乎无法初始化相同的卷时。从错误中,我建议您只使用卷来存储数据。您可以在创建映像时在Dockerfile中进行初始化。或者,您可以通过StatefulSets为每个吊舱使用创建卷,建议您使用它。
更新:
下面的yam文件将为您工作:
apiVersion: v1
kind: Service
metadata:
name: mongo
spec:
ports:
- port: 27017
targetPort: 27017
selector:
app: mongo
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
spec:
selector:
matchLabels:
app: mongo
serviceName: mongo
replicas: 3
template:
metadata:
labels:
app: mongo
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: charlesacr.azurecr.io/mongodb:v1
ports:
- containerPort: 27017
name: mongo
volumeMounts:
- name: az-files-mongo-storage
mountPath: /data/db
volumeClaimTemplates:
- metadata:
name: az-files-mongo-storage
spec:
accessModes:
- ReadWriteOnce
storageClassName: az-files-mongo-storage
resources:
requests:
storage: 5Gi
并且您需要在创建statefulSet之前创建StorageClass。下面的yam文件:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: az-files-mongo-storage
provisioner: kubernetes.io/azure-file
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=1000
- gid=1000
parameters:
skuName: Standard_LRS
然后豆荚工作正常,下面的屏幕截图:
答案 1 :(得分:0)
您可以配置name
。但是,卷或存储类型仍应支持此模式。 Find the table here
根据该表,AzureFile支持ReadWriteMany,但不支持AzureDisk。
答案 2 :(得分:0)
您应该对Mongodb使用StatefulSets。部署是针对无状态服务的。