如果您的 PDB 指定的值高于HPA 的minAvailable
值minReplicas
,那么 pod 的数量是否会达到较低的值minReplicas
?
配置示例:
PDB
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: frontend-pdb
spec:
minAvailable: 3 # HERE
selector:
matchLabels:
app: frontend
Run Code Online (Sandbox Code Playgroud)
羟丙酸
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: frontend-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: frontend-deployment
minReplicas: 2 # AND HERE
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 65
Run Code Online (Sandbox Code Playgroud)
我想象将 PDB 设置为 % 而不是绝对值可以解决这种潜在的冲突,但我很好奇两者如何相互作用。
我们在 Pod 中运行单个 NodeJS 实例,请求 1 个 CPU,并且没有限制。经过负载测试,我们观察到以下情况:
NAME CPU(cores) MEMORY(bytes)
backend-deployment-5d6d4c978-5qvsh 3346m 103Mi
backend-deployment-5d6d4c978-94d2z 3206m 99Mi
Run Code Online (Sandbox Code Playgroud)
如果NodeJS只运行一个线程,它怎么会消耗超过1000m的CPU,当直接在Node上运行时它只使用一个核心?kubernetes 是否以某种方式让它跨核心借用时间?
我已经让 3 个客户端连接到一个订阅和一个发布者。在图像 2 中,订阅位于终端上,一个订阅未看到,因为它托管在 DigitalOcean Droplet 上。似乎每 5 条消息,它就会切换哪个订阅者实际收到消息,这不应该发生。我也改变了速度,它总是大约 5 条消息。
以下是所有客户端用于订阅的代码:
sub.on("message", (msg) => {
console.log(`Message:1 ${msg.data.toString("utf-8")}`)
msg.ack()
})
Run Code Online (Sandbox Code Playgroud)
这是发布的代码:
console.log("send")
topic.publish(Buffer.from("hey"), {
channelId: "641273551806267403"
})
Run Code Online (Sandbox Code Playgroud)