k8s资源之PodDisruptionBudget

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:

istio多集群探秘,部署了50次多集群后我得出的结论

istio多集群链路追踪,附实操视频

istio防故障利器,你知道几个,istio新手不要读,太难!

istio业务权限控制,原来可以这么玩

istio实现非侵入压缩,微服务之间如何实现压缩

不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限

不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs

不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了

不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization

不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs

不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs

不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr

不懂envoyfilter也敢说精通istio系列-08-连接池和断路器

不懂envoyfilter也敢说精通istio系列-09-http-route filter

不懂envoyfilter也敢说精通istio系列-network filter-redis proxy

不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager

不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册

 

————————————————

PodDisruptionBudget:

pod 中断 预算

终止pod前 通过labelSelector机制获取正常运行的pod数目的限制,目的是对主动驱逐的保护措施。

特性:

PDB指定一个pod集合在一段时间内存活的最小实例数量或者百分比

作用于一组被同一个控制器管理的pod。例如:RS或者statefulset

使用PodDisruptionBudget控制器本身无法真正保障指定数量或者百分比的pod存活,PodDisruptionBudget控制器只能保证POD主动逃离的情况下业务不中断或者业务SLA

降级场景局限于:主动驱逐

一个 PDB 对应一个控制器创建的 Pod,例如,DeploymentReplicaSetStatefulSet

maxUnavailable 0%(或0)或者 minAvailable 100%(或与控制器的 .spec.replicas 相等)将阻止节点排空任务

舍入:

如果指定这些值为一个百分数,其计算结果可能不会正好是一个整数。例如,假设有 7 PodminAvailable 设置为 50%,你将很难判断,到底是 3 个还是 4 Pod 必须始终保持可用。Kubernetes 将向上舍入(round up to the nearest integer),因此,此处必须有 4 Pod 始终可用。

示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 8
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

[root@master01 pdb]# cat pdb-avaliable.yaml 
apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
 name: nginx-pdb  
spec:  
 minAvailable: 7  
 selector:  
   matchLabels:  
     app: nginx


[root@master01 pdb]# cat pdb-avaliable-noevit.yaml 
apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
 name: nginx-pdb  
spec:  
 minAvailable: 100%  
 selector:  
   matchLabels:  
     app: nginx

[root@master01 pdb]# cat pdb-unavaliable.yaml 
apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
 name: nginx-pdb  
spec:  
 maxUnavailable: 1  
 selector:  
   matchLabels:  
     app: nginx

[root@master01 pdb]# cat pdb-unavaliable-noevit.yaml 
apiVersion: policy/v1beta1  
kind: PodDisruptionBudget  
metadata:  
 name: nginx-pdb  
spec:  
 maxUnavailable: 0% 
 selector:  
   matchLabels:  
     app: nginx

命令:

Kubectl cordon

Kubectl uncordon

kubectl drain

kubectl drain foo –force

kubectl drain foo --grace-period=900

Kubectl drain 192.168.198.156 --ignore-daemonsets --delete-local-data

kubectl create pdb my-pdb --selector=app=nginx --min-available=50%

kubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1

Kubectl create pdb my-pdb –selector=app=nginx --max-unavailable=50%

Kubectl create pdb my-pdb –selector=app=nginx --max-unavailable=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值