我正在建立一個 6 個副本的 redis 資料庫集群,其中 3 個節點是主節點,3 個節點是輔助節點(回退)。一切都設定在 3 個節點/機器上。
有沒有辦法讓我指定每個主節點和輔助節點應該去哪里?我相信這個案子的一套好的規則是
- 每個主 pod 都應該在它自己的節點上
- 每個輔助 pod 應該在它自己的節點上,而不是與它的主 pod 同伴在同一個節點上(即,如果節點出現故障,我們不希望輔助 pod 也與主 pod 一起下降)
希望有任何指向檔案/示例的指標
uj5u.com熱心網友回復:
關于第一點,將 redis master 分布在不同的節點上,你可以這樣做:
kind: StatefulSet
metadata:
name: lemon-kube-primary
spec:
replicas: 3
matchLabels:
redis-set: lemon-kube-primary
template:
metadata:
labels:
redis-set: lemon-kube-primary
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: redis-set
operator: In
values:
- lemon-kube-primary
topologyKey: kubernetes.io/hostname
# pods with label redis-set=lemon-kube-primary must be scheduled on
# nodes with distinct kubernetes.io/hostname label
而第二點并不明顯。我們沒有要查找的標簽,為您提供 statefulset 中的 pod 索引。
但是,我們可以以某種方式依賴 pod 名稱標簽……假設我們不為這些輔助節點使用 StatefulSet。相反,我們可以創建 Nx ReplicaSet,在每個副本中設定適當的關聯規則:
kind: ReplicaSet
metadata:
name: lemon-kube-secondary-0
spec:
replicas: 1
matchLabels:
redis-set: lemon-kube-secondary
redis-id: "0"
template:
metadata:
labels:
redis-set: lemon-kube-secondary
redis-id: "0"
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: redis-set
operator: In
values:
- lemon-kube-secondary
topologyKey: kubernetes.io/hostname
- labelSelector:
matchExpressions:
- key: statefulset.kubernetes.io/pod-name
operator: In
values:
- lemon-kube-primary-0
topologyKey: kubernetes.io/hostname
[...]
kind: ReplicaSet
metadata:
name: lemon-kube-secondary-N
spec:
replicas: 1
matchLabels:
redis-set: lemon-kube-secondary
redis-id: "N"
template:
metadata:
labels:
redis-set: lemon-kube-secondary
redis-id: "N"
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: redis-set
operator: In
values:
- lemon-kube-secondary
topologyKey: kubernetes.io/hostname
- labelSelector:
matchExpressions:
- key: statefulset.kubernetes.io/pod-name
operator: In
values:
- lemon-kube-primary-N
topologyKey: kubernetes.io/hostname
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/532343.html
