K8s认证授权

API-Server:本质是Web服务,使用HTTPS协议,

用户

user Account:普通用户;私钥 ->CA ->

ServiceAccount:让Pod和ApiServer通信使用的用户

角色与授权

角色:

①Role:局部的角色,只对某个命名空间内生效;

②ClusterRole:全局的角色,所有命名空间生效;

权限:

①只读:查询权限

get(查询单个资源)、list(列出资源清单)、watch(实时监听资源变化);

②只写:修改创建权限

create(创建)、update(更新)、patch(部分更新);

③删除权限:

delete(删除单个资源)、deletecollection(删除资源集合,如所有Pod);

资源:

限定权限仅作用于"特定名称的资源",比如只允许修改名为"prod-app"的Deployment,相当于"说明书的附加条件"。

用户与角色绑定

RoleBinding:局部绑定

分配Role权限给命名空间内部用户;

让ClusterRole的权限仅在单个命名空间生效;

ClusterRoleBinding:给用户\用户组分配集群级权限(运维管理原)

案例

客户端证书认证(推荐)

客户端证书认证是Kubernetes中最安全、最常用的方式(类似HTTPS双向认证)。流程为:生成用户证书 → 用集群CA签名 → 配置用户通过证书访问API Server。

步骤1:生成用户私钥和证书签名请求(CSR)

使用openssl工具生成用户私钥和CSR(证书签名请求),需指定用户名(CN)和所属组(O,可选)。

复制代码
示例:创建一个名为dev-user、所属组为dev-group的用户

# 生成私钥(dev-user.key)

openssl genrsa -out dev-user.key 2048

# 生成CSR(dev-user.csr),CN为用户名,O为组(可多个,用逗号分隔)

openssl req -new -key dev-user.key -out dev-user.csr -subj "/CN=dev-user/O=dev-group"
步骤2:用集群CA签名证书

Kubernetes集群的CA证书和私钥默认存储在/etc/kubernetes/pki/(kubeadm部署),需用CA签名用户的CSR,生成可被API Server信任的证书。

复制代码
# 用CA签名CSR,生成用户证书(dev-user.crt),有效期365天

openssl x509 -req -in dev-user.csr \
   -CA /etc/kubernetes/pki/ca.crt \
   -CAkey /etc/kubernetes/pki/ca.key \
   -CAcreateserial \
   -out dev-user.crt \
   -days 365
步骤3:配置kubeconfig文件

用户通过kubeconfig文件管理集群、用户、认证信息。需将生成的证书配置到kubeconfig中。

复制代码
# 1. 设置集群信息(指向API Server,信任CA)
kubectl config set-cluster kubernetes \
  --server=https://192.168.146.10:6443 \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --embed-certs=true


# 2. 设置用户信息(关联证书和私钥)
kubectl config set-credentials dev-user \
  --client-certificate=./dev-user.crt \
  --client-key=./dev-user.key \
  --embed-certs=true

# 3. 设置上下文(绑定集群和用户)
kubectl config set-context dev-user-context \
  --cluster=kubernetes \
  --user=dev-user

# 4. 切换到该上下文
kubectl config use-context dev-user-context
相关推荐
我登哥MVP13 分钟前
Hadoop成长史-从Nutch子项目到大数据生态王者
java·大数据·hadoop·分布式·云原生·云计算
能有时光1 小时前
] K8s 核心组件使用指南
云原生·容器·kubernetes
我登哥MVP2 小时前
HDFS硬核拆解-读写Pipeline与Java实战
java·hadoop·hdfs·云原生·云计算
云烟成雨TD2 小时前
Kubernetes 系列【13】控制器:可视化操作 Deployment
云原生·容器·kubernetes
运维老郭14 小时前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
AAA@峥18 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~19 小时前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs8014021 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui1 天前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘1 天前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源