首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes与Minikube的回退

Kubernetes与Minikube的回退
EN

Stack Overflow用户
提问于 2020-11-13 05:24:14
回答 2查看 1.4K关注 0票数 3

因此,我正在通过指南了解库伯内特斯的情况,我正在尝试部署一个带有1个副本的MongoDB Pod。这是部署配置文件。

代码语言:javascript
复制
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,但我一直为这两个Pods获取CrashLoopBackOff,据我所知,这是由于容器在循环中失败和重新启动造成的。我试着用kubectl get events来查看这些事件,我看到一个带有Back-off restarting failed container消息的警告一直在发生。我还试着四处挖了一下,发现了一个解决方案,上面写着

代码语言:javascript
复制
command: ['sleep']
args: ['infinity']

这解决了CrashLoopBackOff问题,但是当我试图获取Pod的日志时,终端上不会显示任何内容。我需要一些帮助和可能的解释,因为commandargs似乎是如何解决它的,也是我如何阻止这次崩溃发生在我的Pods和当前的一个,非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-13 11:28:56

我的建议是在Kubernetes上部署MongoDB作为StatefulSet

在有状态应用程序中,主节点的N个副本管理一个集群下的多个工作节点.因此,如果任何主节点发生故障,则其他序数实例将处于活动状态以执行工作流。主节点实例必须标识为唯一的序数编号,称为StatefulSet。详情见:mongodb-stsmongodb on-kubernetes。还可以使用无头服务来管理Pod的域。在对无头服务的一般理解中,不需要LoadBalancerhttps://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/直接与Pods交互,而是使用Service,因此集群IP被设置为none

就你而言:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: mongodb
spec:
  clusterIP: None
  selector:
    app: mongodb
  ports:
    - port: 27017

错误:

代码语言:javascript
复制
Also uncaught exception: Error: couldn't add user: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR _getErrorWithCode@src/mongo/shell/utils.js:25:13

指示该秘密可能丢失。看看:mongodb-初始化

在你的例子中,秘密应该看起来很相似:

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: mongodb-secret
type: Opaque
data:
  mongo-root-username: YWRtaW4=
  mongo-root-password: MWYyZDFlMmU2N2Rm

记住也要为你的豆荚配置一个卷-遵循我上面链接的教程。

票数 0
EN

Stack Overflow用户

发布于 2020-11-13 06:09:08

使用StatefulSet部署mongodb,而不是部署。

示例:

apiVersion: v1种类:服务元数据:名称:mongodb-服务标签:名称:v1规范:端口:

  • 端口: 27017 targetPort: 27017 clusterIP:无选择器:角色: mongo

apiVersion: apiVersion: StatefulSet元数据:名称:mongodb-服务副本:3模板:元数据:角色:StatefulSet复制环境: MainRepSet规范: MainRepSet : podAntiAffinity: MainRepSet:MainRepSet: podAffinityTerm: matchExpressions:- key:复制运算符: In value:-MainRepSet topologyKey: kubernetes.io/hostname terminationGracePeriodSeconds: 10卷:-name-卷机密: secretName: shared-data defaultMode: 256个容器:名称:mon上帝容器#图像:pkdone/ mongo.4图像: mongo命令:- "numactl“内部--auth-mongodb-keyfile“

  • 元数据:名称:mongodb-持久化-存储-声明注释:volme.beta.kubernetes.io/存储-class:“标准”规范: accessModes:"ReadWriteOnce“资源:请求:存储: 1Gi
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64815920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档