所以我正在学习Kubernetes的指南,我试图部署一个MongoDB Pod,其中有1个副本。这是部署配置文件。
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和当前的一个,非常感谢。
3条答案
按热度按时间fafcakar1#
我的建议是在Kubernetes上将MongoDB部署为StatefulSet。
在有状态应用中,主节点的N个副本管理一个集群下的多个工作节点。因此,如果任何主节点发生故障,则其他序号示例将处于活动状态以执行工作流。主节点示例必须标识为唯一的序号,称为StatefulSet。查看更多:mongodb-sts,mongodb-on-kubernetes.也可以使用Headless服务来管理Pod的域。一般理解Headless Service,LoadBalancer或kube-proxy不需要直接和Pod交互,需要Service IP,所以集群IP设置为none。
在您的案例中:
错误:
表示该秘密可能丢失。看一看:mongodb-initializating。
在你的例子中,secret应该看起来类似:
记住还要为你的pod配置一个卷-按照我上面链接的教程操作。
iyfamqjs2#
试着弄清楚它发生了什么以及为什么发生,运行:
然后呢
在我的案例中,问题是“警告:MongoDB 5.0+需要一个支持AVX的CPU,而您当前的系统似乎没有这个功能!“所以我只添加了图片版本:
djmepvbi3#
使用StatefulSet部署mongodb而不是部署。
示例:
api版本:v1类型:服务元数据:名称:mongodb-服务标签:名称:mongo规格:端口:
apiVersion:apps/v1beta1 kind:StatefulSet元数据:产品名称:mongod规格:服务名称:mongodb-service副本:3模板:元数据:标签:角色:mongo环境:测试复制品集:MainRepSet规格:affinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight:100 podAffinityTerm:labelSelector:matchExpressions:- key:replicaset operator:In values:- MainRepSet topologyKey: www.example.com :10卷:- name:secrets-volume secret:secretName:shared-bootstrap-data defaultMode:256个容器:- name:mongod-container #image:pkdone/mongo-ent:3.4 image:mongo命令:- “numactl”-“--interleave=all”-“mongod”-“--wiredTigerCacheSizeGB”-“0.1”-“--bind_ip”-“ www.example.com ”-“--replSet”-“MainRepSet”-“--auth”-“--clusterAuthMode”-“keyFile”-“--keyFile”-“/etc/secrets-volume/internal-auth-mongodb-keyfile”-“--setParameter”-“authenticationMechanisms=SCRAM-SHA-1”资源:请求:cpu:0.2内存:200 Mi端口:- containerPort:27017卷装:- name:secrets-volume readOnly:true mountPath:/etc/secrets-volume - name:mongodb-persistent-storage-claim mountPath:/data/db volumeClaimTemplates: