我正在使用azure aks使用azure磁盘置备程序创建具有卷的有状态集。 我试图找到一种方法来写入我的 statefulset YAML文件,以便在pod重启时它将获得一个新的 Volume ,而旧的卷将被删除
我知道我可以手动删除卷,但是有什么方法可以告诉Kubernetes通过statefulset yaml做到这一点?
这是我的Yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: janusgraph
labels:
app: janusgraph
spec:
...
...
template:
metadata:
labels:
app: janusgraph
spec:
containers:
- name: janusgraph
...
...
volumeMounts:
- name: data
mountPath: /var/lib/janusgraph
livenessProbe:
httpGet:
port: 8182
path: ?gremlin=g.V(123).count()
initialDelaySeconds: 120
periodSeconds: 10
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "default"
resources:
requests:
storage: 7Gi
答案 0 :(得分:1)
如果希望在pod重启时删除数据,则可以使用临时卷,例如EmptyDir。
出于任何原因删除/重新启动Pod时,emptyDir中的数据将被永久删除。
示例:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx # has to match .spec.template.metadata.labels
serviceName: "nginx"
replicas: 3 # by default is 1
template:
metadata:
labels:
app: nginx # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumes:
- name: www
emptyDir: {}
N.B。:
默认情况下,emptyDir
卷存储在支持该节点的任何介质上-可能是磁盘,SSD或网络存储,具体取决于您的环境。但是,您可以将emptyDir.medium
字段设置为“ Memory”,以告诉Kubernetes代您安装tmpfs
(RAM支持的文件系统)。