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

时间:2017-07-14 04:31:47

标签: kubernetes kubectl kubeadm

我刚刚在此链接上设置了kubenetes群集https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#multi-platform 我检查kubectl获取节点,然后主节点就绪,但是当我访问链接https://k8s-master-ip:6443/时 它显示错误:用户"系统:匿名"无法获得路径" /"。 我错过了什么诀窍?

2 个答案:

答案 0 :(得分: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. 为插件
  2. 创建k8s的ServiceAccount
  3. 创建与ServiceAccount绑定的RBAC配置文件(即Role / RoleBinding或ClusterRole / ClusterRoleBinding)
  4. 在访问网址https://192.168.70.94:6443/api/v1/...
  5. 时,将插件配置为使用ServiceAccount的令牌

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

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

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

答案 1 :(得分:2)

希望你看到这样的:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {
    
  },
  "code": 403
}

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

C:\dev1> kubectl proxy
Starting to serve on 127.0.0.1:8001

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