我们根据项目要求成功创建了pod,服务和复制控制器。现在我们计划使用Kubernetes在AWS中设置持久性存储。我创建了YAML文件以在AWS中创建EBS卷,它按预期正常工作。我可以声明音量并成功安装到我的pod(这仅适用于单个副本)。
我能够成功创建file.Volume也创建但我的Pods将进入暂挂状态,音量仍然显示aws中的可用状态。我无法在那里看到任何错误日志。
存储文件:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: mongo-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
主档案:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: web2
spec:
selector:
matchLabels:
app: mongodb
serviceName: "mongodb"
replicas: 2
template:
metadata:
labels:
app: mongodb
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
containers:
- image: mongo
name: mongodb
ports:
- name: web2
containerPort: 27017
hostPort: 27017
volumeMounts:
- mountPath: "/opt/couchbase/var"
name: mypd1
volumeClaimTemplates:
- metadata:
name: mypd1
annotations:
volume.alpha.kubernetes.io/storage-class: mongo-ssd
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
现在我打算设置一个pod Autoscaling。我已经看到pod autoscaling用于部署和ReplicationContoller。我是否知道我们是否可以为Stateful set实现pod自动缩放?
答案 0 :(得分:2)
Horizontal Pod Autoscaler只能扩展部署,副本集或复制控制器。您无法扩展有状态集。 (见Kubernetes Docu for more details)
主要原因是,在状态集(例如MongoDB)中运行的大多数有状态应用程序通常不像向Deployments运行的无状态应用程序那样容易扩展/缩小。对于有状态应用程序来说,向上和向下扩展通常是非常复杂的过程,您不希望仅基于自动定标器。它通常在应用程序中需要一些额外的支持逻辑。特别是随着缩小规模,它也可能意味着您的数据风险。自动缩放对于负载的短期更改更有用。扩展有状态集需要更长远的思考。由于复杂性,您不希望您的数据库每分钟都在扩展和缩小。