我正在尝试HPA:https://kubernetes.io/docs/tasks/run-application/hosteral-pod-autoscale/
apiVersion: v1
kind: PersistentVolume
metadata:
name: api-orientdb-pv
labels:
app: api-orientdb
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
gcePersistentDisk:
pdName: api-orientdb-{{ .Values.cluster.name | default "testing" }}
fsType: ext4
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: api-orientdb-pv-claim
labels:
app: api
spec:
html" target="_blank">accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
selector:
matchLabels:
app: api-orientdb
storageClassName: ""
HPA:
Name: api-orientdb-deployment
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Thu, 08 Jun 2017 10:37:06 +0700
Reference: Deployment/api-orientdb-deployment
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): 17% (8m) / 10%
Min replicas: 1
Max replicas: 2
Events: <none>
并创建了新的吊舱:
NAME READY STATUS RESTARTS AGE
api-orientdb-deployment-2506639415-n8nbt 1/1 Running 0 7h
api-orientdb-deployment-2506639415-x8nvm 1/1 Running 0 6h
正如您所看到的,我使用的是GCEPersistentDisk
,它不支持ReadWriteMany
访问模式。
Name: api-orientdb-deployment-2506639415-x8nvm
Containers:
Mounts:
/orientdb/databases from api-orientdb-persistent-storage (rw)
Volumes:
api-orientdb-persistent-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: api-orientdb-pv-claim
ReadOnly: false
我发现了一些东西:没有什么可以确保新扩展的pod将与第一个pod运行在同一个节点上。因此,如果卷插件不支持ReadWriteMany
,并且缩放的pod在另一个节点上运行,则它将无法挂载:
在节点“gke-testing-default-pool-7711f782-4p6f”上附加卷“api-orientdb-pv”时失败:googleapi:错误400:磁盘资源“projects/xx/zones/us-central1-a/disks/api-orientdb-testing”已被“projects/xx/zones/us-central1-a/instances/gke-testing-default-pool-7711f782-h7xv”使用
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
重要!一个卷一次只能使用一种访问模式挂载,即使它支持多种访问模式。例如,GCEPersistentDisk可以被单个节点挂载为ReadWriteOnce或被许多节点挂载为ReadOnlyMany,但不能同时挂载。
如果是这样,确保HPA工作的唯一方法是卷插件必须支持readwriteMany
访问模式?
2017年6月9日星期五14:28:30 ICT
你的问题我不清楚
让我解释一下:在自动伸缩的情况下,假设通过使用标签选择器,我可以确保新伸缩的pod最终位于同一个节点上,但是由于volume是以rw
的形式挂载的,那么当我们有两个pod以rw
的形式挂载一个卷时,它会破坏GCE PD吗?
首先,一般来说,如果您有一个具有副本的部署:1,您将不会同时有2个Pod运行(大多数情况下!!)
在HPA的情况下,它没有。更多细节请看我上面的更新。
如果出于任何原因,您确实有两个豆荚访问同一个挂载readWrite,那么将会发生什么完全取决于应用程序,而不是kubernetes特定的
最让我困惑的是:
ReadWriteOnce-卷可以由单个节点以读写方式装入
好的,节点,不是豆荚。但是在自动伸缩的情况下,如果在同一个节点上运行两个豆荚,并且两个豆荚都以rw
的形式挂载卷,那么GCE PD是否支持它?如果是,它是如何工作的?
它正按预期工作。Once inReadWriteOnce
指的是可以使用PVC的节点数,而不是POD数(HPA或无HPA)。
如果您希望只有一个Pod能够写入,那么创建两个部署。一个具有副本:1
,另一个附加了自动缩放器(其中有readonly:true
)。请注意,GCE PD只能由一个节点挂载,如果其中任何一个POD正在读写访问它。
我的要求是在自定义指标上扩展POD,如队列中的挂起消息,PODS必须增加以处理作业。在kubernetes,Scale up在普罗米修斯适配器和普罗米修斯操作员中工作得很好。 我在pods中有长时间运行的进程,但HPA检查自定义度量并试图缩小规模,因为这个进程杀死了操作的中间并丢失了消息。我如何控制HPA只杀死没有进程运行的自由豆荚。 序列查询:‘{namespace=“default”,serv
我正在尝试在我的kubernetes集群中设置自动缩放。在部署heapster及其服务之后。我正面临以下错误。 Heapster成功地从pod中提取度量,可在 自动缩放(HPA)中的建议无法获取CPU消耗:无法将对象解封为[]V1ALPHA1类型的Go值。PodMetrics未解决此问题
我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存
我正在尝试测试部署在AWS中的Kubernetes集群的水平吊舱自动缩放功能(使用EKS)。 我已将资源设置为“CPU”,将目标类型设置为“利用率”,并在 YAML 文件中将“平均利用率”设置为 15。 因此,从技术上讲,当CPU利用率达到15%的设置百分比时,Kubernetes集群应该自动水平扩展(自动添加pods)。这是YAML文件的重要部分: 我向Kubernetes集群注入了大量HTTP
我的Java微服务正在AWS EC2实例上托管的k8s集群中运行。 我有大约30个微服务(nodejs和Java8的良好组合)在K8s集群中运行。我面临一个挑战,我的java应用程序pods意外重启,导致应用程序5xx数量增加。 为了调试它,我在pod和应用程序中启动了一个newrelic代理,并找到了以下图表: 在我可以看到的地方,我的Xmx值为6GB,我的用途最大为5.2GB。 这清楚地表明J