当前位置:   article > 正文

kubernetes学习日志(五)

kubernetes学习日志(五)

前言

本文记录了Pod污点,容忍策略,精准匹配,模糊匹配,Pod优先级与抢占,容器安全

一、 污点容忍策略

污点概述

污点(Taint)是使节点与Pod产生排斥的一类规则
污点策略通过嵌合在键值对上的污点标签进行声明
污点标签 :
尽量不调度 : PreferNoSchedule
不会被调度 : NoSchedule
驱逐节点 : NoExecute

管理污点标签

污点标签必须绑定在键值对上,格式为:
key=value:[污点标签]
查看污点标签
kubectl describe nodes [节点名字]
设置污点标签
kubectl taint node [节点名字] key=value:污点标签
删除污点标签
kubectl taint node [节点名字] key=value:污点标签-

污点策略

NoSchedule策略

设置NoSchedule污点标签,只对新建Pod有效,对于已经创建的Pod不会产生影响

NoExcute策略

驱逐策略会删除该节点上的所有Pod

容忍策略

容忍策略与污点策略相反,有时会需要在有污点策略的节点上运行Pod,这种无视污点标签的调度方式称为容忍

spec :
	tolerations : # 定义容忍测略 
	- operator : "Equal" # 匹配方式 必选(Equal(完全匹配), Exisits(部分匹配))
		key : "k1" # 设置键值对的key,为空代表任意键值对
		value : "v1" # 设置values的值
		effect : "NoSchedule" # 设置容忍的标签,为空代表所有污点标签
	containers:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

抢占与优先级

优先级

优先级表示一个Pod相比于其他Pod的重要性
优先级可以保证重要的Pod被调度运行
配置优先级类PriorityClass
创建Pod时为其设置对应的优先级

priorityclass

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 # 优先级
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用时spec.priorityClassName : high-non 指定优先级的名字

抢占优先级

---
kind : PriorityClass
apiVersion : scheduling.k8s.io/v1
metadata : 
	name : high
preemptionPolicy : PreemptLowerPriority
value : 1000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

特权容器

容器通过名称空间技术格力,有时候会执行一些应用服务,需要使用或修改铭感的系统信息,这时候容器需要突破隔离限制,获得更高的权限,这类容器统称特权容器
运行特权容器会有一些安全风险,这种模式下运行容器对宿主机有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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
---
kind : Pod
apiVersion : v1
metadata : 
	name : root
spec : 
	hostPID : true # 共享系统进程
	hostNetwork : true # 共享主机网络
	containers : 
	- name : apache
		image : myos:httpd
		securityContext :  # 安全上下文值
			privileged : true # root容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Pod安全概述

Pod安全策略是集群级别的资源,它能控制Pod运行的行为,以及它具有访问什么的能力
想使用Pod安全策略kubernetes服务器版本必须不低于版本v1.22
确保PodSecurity特性门控被启用

Pod安全策略

PodSecurity提供一种内置的Pod安全性准入控制器,作为PodSecurityPolicies特性的后继演化版本,Pod安全性限制是在Pod被创建时,在名字空间层面实施的。
Pod 安全性标准定义了三种不同的策略(Policy),以广泛覆盖安全应用场景,这些策略是渐进式的,安全级别从高度宽松至高度受限

Pod安全策略LEVEL :

privileged : 不受限制的策略,提供最大可能范围的权限许可,此策略允许特权提升
baseline : 弱限制性的策略,禁止已知的策略提升权限。允许使用默认的Pod配置
restricted : 非常严格的限制性策略,遵循当前的保护Pod最佳实践

Pod准入控制标签MODE:

kubernetes定义了一组标签,可以设置这些标签来定义某个名称空间上的Pod安全性标准级别,你所选择的标签定义了检测到潜在违例时,所要采取的动作。
enforce:策略违例会导致Pod被拒绝
audit : 策略违例会触发审计日志,但是Pod仍可被接受
warn : 策略违例会触发用户可见的警告信息,但是Pod仍是被接受的
使用方法:使用标签定义
kubectl label namespace [名称空间] pod-security.kubernetes.io/ :

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号