k8s实践指南之服务高可用

的副本数量,还需要让这些不同副本调度到不同的节点,打散开来避免单点故障,这个可以利用反亲和

性来实现,示例
:

1. affinity:
2.     podAntiAffinity:
3.         requiredDuringSchedulingIgnoredDuringExecution:
4.         - weight: 100
5.           labelSelector:
6.             matchExpressions:
7.             - key: k8s-app
8.             operator: In
9.             values:
10.            - kube-dns
11.         topologyKey: kubernetes.io/hostname

requiredDuringSchedulingIgnoredDuringExecution
调度时必须满足该反亲和性条件,如果

没有节点满足条件就不调度到任何节点
(Pending)
。如果不用这种硬性条件可以使用

preferredDuringSchedulingIgnoredDuringExecution
来指示调度器尽量满足反亲和性条

件,如果没有满足条件的也可以调度到某个节点。

labelSelector.matchExpressions
写该服务对应
pod

labels

key

value

topologyKey
这里用
kubernetes.io/hostname
表示避免
pod
调度到同一节点,如果你

有更高的要求,比如避免调度到同一个可用区,实现异地多活,可以用
failure-

domain.beta.kubernetes.io/zone
。通常不会去避免调度到同一个地域,因为一般同一个集群

的节点都在一个地域,如果跨地域,即使用专线时延也会很大,所以
topologyKey
一般不至

于用
failure-domain.beta.kubernetes.io/region

使用PodDisruptionBudget 避免驱逐导致服务不可用

驱逐节点是一种有损操作,驱逐的原理:

封锁节点
(
设为不可调度,避免新的
Pod
调度上来
)

将该节点上的
Pod
删除。

  1. ReplicaSet
    控制器检测到
    Pod
    减少,会重新创建一个
    Pod
    ,调度到新的节点上。

这个过程是先删除,再创建,并非是滚动更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值