用户"系统:匿名"无法获取路径"/"

Tie*_*ran 8 kubernetes kubectl kubeadm

我只是在这个链接上建立了一个kubenetes集群https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#multi-platform 我用kubectl获取节点检查,然后主节点就绪,但是当我访问链接https:// k8s-master-ip:6443 / 它显示错误:用户"system:anonymous"无法获取路径"/".我错过了什么诀窍?

小智 31

希望你看到这样的东西:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {
    
  },
  "code": 403
}
Run Code Online (Sandbox Code Playgroud)

这很好,因为不是每个人都应该能够访问集群,如果您想看到服务运行"kubectl proxy",这应该允许从外部世界访问服务。

C:\dev1> kubectl proxy
Starting to serve on 127.0.0.1:8001
Run Code Online (Sandbox Code Playgroud)

当您点击时,127.0.0.1:8001您应该会看到服务列表。


Eug*_*how 8

最新的kubernetes部署工具可在群集上启用RBAC.Jenkins system:anonymous在访问时被降级为全能用户https://192.168.70.94:6443/api/v1/....此用户几乎没有kube-apiserver的权限.

最重要的是,Jenkins需要使用kube-apiserver进行身份验证 - 使用持票人令牌或由k8s群集的CA密钥签名的客户端证书.

方法1.如果Jenkins托管在k8s集群中,则首选:

  1. 为插件创建k8s的ServiceAccount
  2. 创建与ServiceAccount绑定的RBAC配置文件(即Role/RoleBinding或ClusterRole/ClusterRoleBinding)
  3. 配置插件以在访问URL时使用ServiceAccount的令牌 https://192.168.70.94:6443/api/v1/...

方法2.如果Jenkins托管在k8s群集之外,仍可以使用上述步骤.另一种方法是:

  1. 创建一个与k8s集群的CA绑定的客户端证书.您必须找到CA密钥的保存位置,并使用它来生成客户端证书.
  2. 创建与客户端证书绑定的RBAC配置文件(即Role/RoleBinding或ClusterRole/ClusterRoleBinding)
  3. 在访问URL时配置插件以使用客户端证书 https://192.168.70.94:6443/api/v1/...

两种方法都适用于任何情况.我相信方法1对您来说会更简单,因为您不必乱用CA密钥.