• 注册
  • 经验分享 经验分享 关注:4 内容:15179

    k8s报错

  • 查看作者
  • 打赏作者
  • Lv.10
    封号会员

    在使用Kubernetes(简称k8s)的过程中,我们可能会遇到各种各样的报错,这些错误可能源于配置问题、资源不足、网络问题等多种原因,下面我将结合自己的一些经验,详细地分析一种常见的k8s报错,并提供相应的解决方法。

    k8s报错
    (图片来源网络,侵删)

    假设我们遇到了以下这个错误:

    Error from server (Forbidden): error when creating “nginx.yaml”: roles.rbac.authorization.k8s.io “nginxingress” is forbidden: attempt to grant extra privileges: [PolicyRule{Resources:[“configmaps”], APIGroups:[“”], Verbs:[“create”]} PolicyRule{Resources:[“configmaps”], APIGroups:[“”], Verbs:[“get”]} PolicyRule{Resources:[“configmaps”], APIGroups:[“”], Verbs:[“list”]} PolicyRule{Resources:[“configmaps”], APIGroups:[“”], Verbs:[“watch”]} PolicyRule{Resources:[“endpoints”], APIGroups:[“”], Verbs:[“create”]} PolicyRule{Resources:[“endpoints”], APIGroups:[“”], Verbs:[“get”]} PolicyRule{Resources:[“endpoints”], APIGroups:[“”], Verbs:[“list”]} PolicyRule{Resources:[“endpoints”], APIGroups:[“”], Verbs:[“watch”]} PolicyRule{Resources:[“nodes”], APIGroups:[“”], Verbs:[“get”]} PolicyRule{Resources:[“nodes”], APIGroups:[“”], Verbs:[“list”]} PolicyRule{Resources:[“nodes”], APIGroups:[“”], Verbs:[“watch”]} PolicyRule{Resources:[“pods”], APIGroups:[“”], Verbs:[“get”]} PolicyRule{Resources:[“pods”], APIGroups:[“”], Verbs:[“list”]} PolicyRule{Resources:[“pods”], APIGroups:[“”], Verbs:[“watch”]} PolicyRule{Resources:[“services”], APIGroups:[“”], Verbs:[“create”]} PolicyRule{Resources:[“services”], APIGroups:[“”], Verbs:[“get”]} PolicyRule{Resources:[“services”], APIGroups:[“”], Verbs:[“list”]} PolicyRule{Resources:[“services”], APIGroups:[“”], Verbs:[“watch”]} PolicyRule{Resources:[“ingresses”], APIGroups:[“extensions”], Verbs:[“create”]} PolicyRule{Resources:[“ingresses”], APIGroups:[“extensions”], Verbs:[“get”]} PolicyRule{Resources:[“ingresses”], APIGroups:[“extensions”], Verbs:[“list”]} PolicyRule{Resources:[“ingresses”], APIGroups:[“extensions”], Verbs:[“watch”]}] user=&{<youruser> [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[“selfsubjectaccessreviews”], APIGroups:[“authorization.k8s.io”], Verbs:[“create”]} PolicyRule{NonResourceURLs:[“/api” “/api/*” “/apis” “/apis/*” “/healthz” “/openapi” “/openapi/*” “/swagger2.0.0.pbv1” “/swagger.json” “/swaggerapi” “/swaggerapi/*” “/version”], Verbs:[“get”]}] ruleResolutionErrors=[]

    这个错误发生在创建一个名为 nginxingress 的角色(Role)时,提示我们没有权限进行操作,从错误信息中,我们可以看到这个角色试图授予一些额外的权限,但被拒绝了。

    下面我们分析一下这个错误的原因和解决方法:

    1、错误原因

    用户权限不足:当前用户没有足够的权限去创建这个角色和相关的权限。

    RoleBased Access Control (RBAC) 配置问题:可能是集群的RBAC策略配置有误,导致用户无法执行相应的操作。

    2、解决方法

    检查用户权限:确认当前用户是否拥有创建角色和相应权限的权限,如果用户权限不足,可以尝试使用集群管理员权限来执行操作。

    调整角色配置:检查 nginx.yaml 文件中的角色配置,确保没有试图授予不必要的权限,将角色配置调整为只包含必要的权限。

    查看集群的RBAC策略:检查集群的RBAC策略,确认是否存在限制用户操作的相关配置,如果有的话,根据实际情况调整策略。

    使用ClusterRole代替Role:如果这个角色需要在集群级别操作资源,可以考虑使用ClusterRole,它具有更宽的操作范围。

    清理本地缓存:本地缓存可能会导致认证问题,执行 kubectl cache flush 可以清理缓存。

    查看审计日志:审计日志可以提供更详细的信息,了解为什么权限被拒绝。

    以下是一个可能的角色配置示例,可以参考这个配置修改 nginx.yaml:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
    name: nginxingress
    namespace: default
    rules:
    apiGroups: [“”]
    resources: [“configmaps”, “endpoints”, “pods”, “services”, “ingresses”]
    verbs: [“create”, “get”, “list”, “watch”]

    在调整配置后,重新创建角色并观察是否解决了问题。

    遇到k8s报错时,我们需要从错误信息中提取关键信息,分析错误原因,然后根据实际情况进行排查和解决,希望这个回答能帮助您更好地解决k8s报错问题。

    请登录之后再进行评论

    登录
  • 快速发布
  • 任务
  • 实时动态
  • 偏好设置
  • 帖子间隔 侧栏位置: