节点约束
nodeName 是节点选择约束的最简单方法,但一般不推荐。
nodeSelector 是节点选择约束的最简单推荐形式
节点亲和
requiredDuringSchedulingIgnoredDuringExecution 必须满足
preferredDuringSchedulingIgnoredDuringExecution 倾向满足
IgnoreDuringExecution 表示如果在Pod运行期间Node的标签发生变化,导致
亲和性策略不能满足,则继续运行当前的Pod。
倾向满足
pod亲和
pod反亲和
编辑pod2 此pod会使用主机网络
pod3正常使用 会端口冲突 这时候需要反亲和性
污点 容忍
Taints(污点)是Node的一个属性,设置了Taints后,所以Kubernetes是不会将Pod调度到这个Node上的,于是Kubernetes就给Pod设置了个属性Tolerations(容忍),只要Pod能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就能够(不是必须)把Pod调度过去。
•NoSchedule:POD 不会被调度到标记为 taints 节点。
•NoExecute:该选项意味着一旦 Taint 生效,如该节点内正在运行的 POD 没有对应Tolerate 设置,会直接被逐出。
给nodes 添加NoExecute污点
创建一个 deploy.yaml 有污点的nodes不会 被调用 如果之前有pod 还会驱逐
如果需要调用 需要设置容忍
s1被重新调度
• 如果 operator 是 Exists ,value可以省略。
• 如果 operator 是 Equal ,则key与value之间的关系必须相等。
指定容忍 两个特殊值:
• 当不指定key,再配合Exists 就能匹配所有的key与value ,可以容忍所有污点。
• 当不指定effect ,则匹配所有的effect。容忍所有污点
污点删除影响Pod调度的指令还有:cordon、drain、delete,后期创建的pod都不会被调度到
该节点上,但操作的暴力程度不一样。
cordon 停止调度
drain 驱逐节点
drain命令 后面需要 加控制器 --force 强制 驱逐 pod
解除限制调度删除nodes
serviceaccount
创建serviceaccount
添加secrets到serviceaccount中
将sa和pod 绑定 修改 text.yamlUserAccount
创建UserAccount
切换用户
通过认证 但是没有权限 返回 用户 授权创建角色
角色绑定
集群角色绑定
RoleBinding 可以绑定角色 也可以绑定集群角色修改后可以查看不会报错
整个集群 都有相应权限 需要 绑定集群角色绑定
内存限制示例
内存 不够 运行不起来 增加限制
CPU限制示例namespace资源限制
运行的 pod会自动添加 资源限制
之前的 设置 运行错误
修改与namespace符合的限制 即可成功
为namespcae 设置资源配额
不能超过 配额 限定
还可以限定pod数量
资源监控Metrics-Server部署
下载部署文件 https://github.com/kubernetes-incubator/metrics-server
编辑下载的yaml文件 并将image镜像上传到本地仓库
部署成功
部署时错误总结
Dashboard部署
图形化 资源监控
下载部署文件
https://github.com/kubernetes/dashboard
当前只能 集群内访问 外网访问需要更改type
网页可以访问 进入 需要token文件
将token加密信息 复制到 网页
编辑rbac文件
部署完成
可以管理整个集群 增删改查
