我只是基于此链接https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#multi-platform设置了一个 kubenetes 集群 我检查了 kubectl get 节点,然后主节点准备就绪,但是当我访问链接https://k8s-master-ip:6443/ 它显示错误:用户“system:anonymous”无法获取路径“/”。我缺少什么技巧?
问问题
17848 次
2 回答
12
希望你看到这样的东西:
{
"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
您应该会看到服务列表。
于 2021-04-22T05:21:31.030 回答
11
最新的 kubernetes 部署工具在集群上启用了 RBAC。Jenkinssystem:anonymous
在访问https://192.168.70.94:6443/api/v1/...
. 该用户对 kube-apiserver 几乎没有任何权限。
最重要的是,Jenkins 需要使用 kube-apiserver 进行身份验证——使用不记名令牌或由 k8s 集群的 CA 密钥签名的客户端证书。
方法 1.如果 Jenkins 托管在 k8s 集群中,这是首选:
- 在 k8s 中为插件创建一个 ServiceAccount
- 创建绑定到 ServiceAccount 的 RBAC 配置文件(即 Role/RoleBinding 或 ClusterRole/ClusterRoleBinding)
- 将插件配置为在访问 URL 时使用 ServiceAccount 的令牌
https://192.168.70.94:6443/api/v1/...
方法2.如果Jenkins托管在k8s集群外,上述步骤仍然可以使用。替代方法是:
- 创建一个绑定到 k8s 集群 CA 的客户端证书。您必须找到 CA 密钥的保存位置并使用它来生成客户端证书。
- 创建绑定到客户端证书的 RBAC 配置文件(即 Role/RoleBinding 或 ClusterRole/ClusterRoleBinding)
- 将插件配置为在访问 URL 时使用客户端证书
https://192.168.70.94:6443/api/v1/...
这两种方法都适用于任何情况。我相信方法 1 对您来说会更简单,因为您不必弄乱 CA 密钥。
于 2017-07-14T08:08:52.337 回答