赞
踩
本文记录了Pod污点,容忍策略,精准匹配,模糊匹配,Pod优先级与抢占,容器安全
污点(Taint)是使节点与Pod产生排斥的一类规则
污点策略通过嵌合在键值对上的污点标签进行声明
污点标签 :
尽量不调度 : PreferNoSchedule
不会被调度 : NoSchedule
驱逐节点 : NoExecute
污点标签必须绑定在键值对上,格式为:
key=value:[污点标签]
查看污点标签
kubectl describe nodes [节点名字]
设置污点标签
kubectl taint node [节点名字] key=value:污点标签
删除污点标签
kubectl taint node [节点名字] key=value:污点标签-
设置NoSchedule污点标签,只对新建Pod有效,对于已经创建的Pod不会产生影响
驱逐策略会删除该节点上的所有Pod
容忍策略与污点策略相反,有时会需要在有污点策略的节点上运行Pod,这种无视污点标签的调度方式称为容忍
spec :
tolerations : # 定义容忍测略
- operator : "Equal" # 匹配方式 必选(Equal(完全匹配), Exisits(部分匹配))
key : "k1" # 设置键值对的key,为空代表任意键值对
value : "v1" # 设置values的值
effect : "NoSchedule" # 设置容忍的标签,为空代表所有污点标签
containers:
优先级表示一个Pod相比于其他Pod的重要性
优先级可以保证重要的Pod被调度运行
配置优先级类PriorityClass
创建Pod时为其设置对应的优先级
priorityclass是一个全局资源对象,它定义了从优先级类名称到优先级整数值的映射。优先级在Value字段中指定,可以设置小于10亿的整数值,值越大,优先级越高
priorityclass还有两个可选字段:
globalDefault用于设置默认优先级状态,如果没有任何优先级设置Pod的优先级为0
description用来配置描述性信息,告诉用户优先级的用途
非抢占优先:指的是在调度阶段优先进行调度分配,一旦容器调度完成就不可以抢占,资源不足时,只能等待
抢占优先 : 强制调度一个Pod,如果资源不足无法被调度分配,调度程序会抢占(删除)较低优先级的Pod资源,来保证高优先级Pod的运行
---
kind : PriorityClass
apiVersion : scheduling.k8s.io/v1
metadata :
name : high-non # 优先级名称
preemptionPolicy : Never # 策略:非抢占
value : 1000 # 优先级
使用时spec.priorityClassName : high-non 指定优先级的名字
---
kind : PriorityClass
apiVersion : scheduling.k8s.io/v1
metadata :
name : high
preemptionPolicy : PreemptLowerPriority
value : 1000
容器通过名称空间技术格力,有时候会执行一些应用服务,需要使用或修改铭感的系统信息,这时候容器需要突破隔离限制,获得更高的权限,这类容器统称特权容器
运行特权容器会有一些安全风险,这种模式下运行容器对宿主机有Root权限,可以突破隔离直接控制宿主机的资源配置
---
kind : Pod
apiVersion : v1
metadata :
name : root
spec :
hostname : myhost # 修改主机名
hostAliases : # 修改hosts
- ip : 192.168.1.30 # IP地址
hostnames : # 名称键值对
- harbor # 主机名
containers :
- name : apache
image : myos:httpd
---
kind : Pod
apiVersion : v1
metadata :
name : root
spec :
hostPID : true # 共享系统进程
hostNetwork : true # 共享主机网络
containers :
- name : apache
image : myos:httpd
securityContext : # 安全上下文值
privileged : true # root容器
Pod安全策略是集群级别的资源,它能控制Pod运行的行为,以及它具有访问什么的能力
想使用Pod安全策略kubernetes服务器版本必须不低于版本v1.22
确保PodSecurity特性门控被启用
PodSecurity提供一种内置的Pod安全性准入控制器,作为PodSecurityPolicies特性的后继演化版本,Pod安全性限制是在Pod被创建时,在名字空间层面实施的。
Pod 安全性标准定义了三种不同的策略(Policy),以广泛覆盖安全应用场景,这些策略是渐进式的,安全级别从高度宽松至高度受限
privileged : 不受限制的策略,提供最大可能范围的权限许可,此策略允许特权提升
baseline : 弱限制性的策略,禁止已知的策略提升权限。允许使用默认的Pod配置
restricted : 非常严格的限制性策略,遵循当前的保护Pod最佳实践
kubernetes定义了一组标签,可以设置这些标签来定义某个名称空间上的Pod安全性标准级别,你所选择的标签定义了检测到潜在违例时,所要采取的动作。
enforce:策略违例会导致Pod被拒绝
audit : 策略违例会触发审计日志,但是Pod仍可被接受
warn : 策略违例会触发用户可见的警告信息,但是Pod仍是被接受的
使用方法:使用标签定义
kubectl label namespace [名称空间] pod-security.kubernetes.io/ :
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。