kubernetes - 将 Kubernetes 卷限制为单个 Pod

标签 kubernetes scylla

我有一个 Scylla 数据库的 Kubernetes 部署,并附加了一个卷。它有一个副本,其 list 类似于以下内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: scylla
  labels:
    app: myapp
    role: scylla
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
      role: scylla
  template:
    metadata:
      labels:
        app: myapp
        role: scylla
    spec:
      containers:
        - name: scylla
          image: scylladb/scylla
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /var/lib/scylla/data
              name: scylladb
      volumes:
        - name: scylladb
          hostPath:
            path: /var/myapp/scylla/
            type: DirectoryOrCreate

当我执行更新时,它将终止旧 Pod 并在旧 Pod 停止之前启动新 Pod。这会导致新 pod 上的数据库失败,因为它无法访问存储在卷中的数据库文件(因为旧 pod 仍在使用它)。我怎样才能使一次只有一个 Pod 使用该卷? (停机时间短还可以)

最佳答案

您可以在部署中使用重新创建策略来执行此操作。这将在创建新 Pod 之前杀死所有现有 Pod。引用:Kubernetes doc 。因此,他们将会因此而出现一些停机时间。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: scylla
  labels:
    app: myapp
    role: scylla
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
      role: scylla
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: myapp
        role: scylla
    spec:
      containers:
        - name: scylla
          image: scylladb/scylla
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /var/lib/scylla/data
              name: scylladb
      volumes:
        - name: scylladb
          hostPath:
            path: /var/myapp/scylla/
            type: DirectoryOrCreate

关于kubernetes - 将 Kubernetes 卷限制为单个 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54877973/

相关文章:

kubernetes - k8s - 防止 pod 使用某些服务帐户

kubernetes - 如何将 Pod 导出流量限制为仅限外部

database - Cassandra 与 ScyllaDB 的内存使用情况

cassandra - "PER PARTITION LIMIT"在cassandra的cql查询中是什么意思?

docker - 回退为 elasticsearch kubernetes pod 重新启动失败容器的原因是什么?

docker - 是否可以在Google Kubernetes Engine(GKE)中更新代码而不重新构建Docker镜像?

kubernetes - 使用 GKE 中的日志记录自定义指标进行水平 Pod 自动缩放

cassandra - 在 ScyllaDB 中获取 N 行的最佳方法

docker - Scylla 不使用 docker volumes