当前位置: 首页 > news >正文

Kubernetes控制平面组件:API Server Node 授权机制 详解

云原生学习路线导航页(持续更新中)

  • kubernetes学习系列快捷链接
    • Kubernetes架构原则和对象设计(一)
    • Kubernetes架构原则和对象设计(二)
    • Kubernetes架构原则和对象设计(三)
    • Kubernetes控制平面组件:etcd(一)
    • Kubernetes控制平面组件:etcd(二)
    • Kubernetes控制平面组件:etcd常用配置参数
    • Kubernetes控制平面组件:etcd高可用集群搭建
    • Kubernetes控制平面组件:etcd高可用解决方案
    • Kubernetes控制平面组件:Kubernetes如何使用etcd
    • Kubernetes控制平面组件:API Server详解(一)
    • Kubernetes控制平面组件:APIServer 基于 X509 证书的认证机制
    • Kubernetes控制平面组件:APIServer 基于 静态Token 的认证机制
    • Kubernetes控制平面组件:APIServer 基于 引导Token 的认证机制
    • Kubernetes控制平面组件:APIServer 基于 ServiceAccount 的认证机制
    • Kubernetes控制平面组件:APIServer 基于 OpenID 的认证机制详解
    • Kubernetes控制平面组件:APIServer 基于 Webhook Toeken令牌 的认证机制详解
    • Kubernetes控制平面组件:APIServer 基于匿名请求的认证机制详解
    • kubectl 和 kubeconfig 基本原理
    • kubeadm 升级 k8s集群 1.17到1.20
    • Kubernetes常见问题解答
    • 查看云机器的一些常用配置

本文主要对kubernetes的控制面组件API Server 授权机制中的 Node 授权机制进行详细介绍,涵盖Node机制基础概念、设计理念、实现原理、授权流程、参数配置及实操案例等

  • 希望大家多多 点赞 关注 评论 收藏,作者会更有动力编写技术文章

1.基本概念

Node 授权机制是 Kubernetes 中专门为节点(Node)设计的授权模式,用于控制 kubelet(节点代理)对 API Server 的访问权限。其核心目标是确保节点仅能操作与其自身相关的资源(如 Pod、Node 状态等),防止节点权限越界或滥用。

核心特点

  • 专用性:仅针对 kubelet 发起的请求,其他用户或组件不适用。
  • 最小权限原则:严格限制 kubelet 的操作范围,仅允许访问与节点绑定的资源。
  • 动态控制:通过准入控制插件(如 NodeRestriction)进一步限制写操作。

2.设计理念

  1. 节点隔离性
    每个节点仅能管理自身资源,避免跨节点操作(如修改其他节点的状态或 Pod)。
  2. 零信任模型
    节点需通过严格的身份认证(如 TLS 证书)和授权策略,确保请求合法性。
  3. 动态权限适配
    结合 RBAC 和准入控制插件,实现权限的动态调整与扩展。

3.实现原理

3.1.身份认证

  • 证书认证:kubelet 使用由集群 CA 签发的客户端证书,证书中需包含以下信息:
  • 用户名system:node:<nodeName>(如 system:node:node01
  • 组名system:nodes
  • 证书验证流程:API Server 通过 CA 根证书验证 kubelet 证书的合法性,并提取用户与组信息。

3.2.授权策略

  • 允许的操作
  • 读操作:访问当前节点绑定的 Pod、ConfigMap、Secret 等资源。
  • 写操作:更新当前节点的状态(status)、Pod 状态(需 NodeRestriction 插件支持)。
  • 认证相关操作:TLS 引导(certificatesigningrequests)、Token 验证等。
  • 禁止的操作:跨节点资源操作、非绑定资源的删除/创建。

2.3.准入控制

通过 NodeRestriction 插件进一步限制写操作:

  • 仅允许 kubelet 修改其所属节点的 Node 对象。
  • 仅允许修改当前节点绑定的 Pod 状态。

4.授权流程

  1. 请求发起
    kubelet 向 API Server 发起请求(如更新节点状态)。
  2. 认证阶段
    API Server 验证 kubelet 的 TLS 证书,提取用户 system:node:<nodeName> 和组 system:nodes
  3. 授权阶段
    Node 授权器检查请求的 操作类型(Verb)、资源类型(Resource)、命名空间(Namespace)是否符合策略:
  • 若请求为 读操作,检查资源是否属于当前节点。
  • 若请求为 写操作,结合 NodeRestriction 插件验证资源归属。
  1. 准入控制
    NodeRestriction 插件拦截非法写操作(如修改其他节点的状态)。
  2. 请求处理
    通过所有检查后,API Server 执行操作并返回结果。

5.参数配置与实操案例

5.1.启用 Node 授权模式

在 API Server 启动参数中配置:

# kube-apiserver.yaml 片段
spec:
  containers:
  - command:
    - kube-apiserver
    - --authorization-mode=Node,RBAC  # 启用 Node 和 RBAC 授权
    - --admission-control=...,NodeRestriction,...  # 启用准入控制插件

5.2.生成 kubelet 证书

使用 cfssl 工具生成证书(需包含 system:nodes 组):

// csr.json
{
  "CN": "system:node:node01",
  "hosts": ["node01"],
  "key": { "algo": "rsa", "size": 2048 },
  "names": [
    { "O": "system:nodes" }  // 组名必须为 system:nodes
  ]
}

5.3.RBAC 配置(可选)

若需扩展权限,可创建 ClusterRole 并绑定到 system:nodes 组:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: node-reader
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: node-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:nodes

6.常见问题与调试

  1. 权限拒绝(403 错误)
  • 检查证书中的用户名和组是否正确。
  • 确认 API Server 启用了 Node 授权模式和 NodeRestriction 插件。
  1. 证书过期
    使用 kubeadm certs renew 更新 kubelet 证书。
  2. 跨节点操作拦截
    确保 NodeRestriction 插件已启用,并验证 Pod 是否绑定到当前节点。

7.扩展与最佳实践

  • 与 RBAC 结合:通过 RBAC 细化权限(如允许节点读取特定 ConfigMap)。
  • 安全加固:定期轮换证书、审计节点操作日志。
  • 多租户场景:结合命名空间隔离,限制节点仅能访问所属租户资源。

相关文章:

  • 刷题记录08
  • 16、Python面试题解析:python中的浅拷贝和深拷贝
  • 《Effective Objective-C》阅读笔记(上)
  • 电机控制的空间矢量调制 (SVPWM)
  • openharmony5.0中hdf框架中实现驱动程序的动态加载和管理的技术细节分析
  • C++中tuple的用法
  • Spring Boot 中的日志管理
  • 数据库设计的优化建议
  • AcWing 299 裁剪序列
  • 6种MySQL高可用方案对比分析
  • C语言基本知识------指针(4)
  • springboot004网页时装购物系统(源码+数据库+文档)
  • threejs 安装教程
  • 51单片机测试题AI作答测试(DeepSeek Kimi)
  • w~视觉~合集13
  • Sinusoidal、RoPE和可学习嵌入的详细介绍及它们增强位置感知能力的示例
  • 信而泰CCL仿真:解锁AI算力极限,智算中心网络性能跃升之道
  • 可视化报表
  • 括号配对问题 【刷题反思】
  • DeepSeek AI人工智能该如何学习?
  • 媒体评教师拎起学生威胁要扔下三楼:师风师德不能“悬空”
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了
  • 北方首场高温将进入鼎盛阶段,江南华南多地需警惕降雨叠加致灾
  • 《风林火山》千呼万唤始出来,戛纳首映后口碑崩盘?
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”