问题描述
我正尝试运行curl -v -L --cacert cert.crt --key cert.key -k --request GET "https://*my-k8s-server-ip:port*/api/v1/namespaces/testing/services"
,它向我显示以下错误:
{
"kind": "Status","apiVersion": "v1","Metadata": {
},"status": "Failure","message": "services is forbidden: User \"system:anonymous\" cannot list resource \"services\" in API group \"\" in the namespace \"testing\"","reason": "Forbidden","details": {
"kind": "services"
},"code": 403
}* Connection #0 to host *my-k8s-server-iP* left intact
但是当我尝试与Postman提供证书和密钥时,它可以很好地工作。 请帮忙。
解决方法
在这种情况下,Kubernetes API Server无法识别该用户,这使其默认为system:anonymous
用户。
您需要使用--cert
参数提供客户端证书,该证书应使用户使用CNAME(主题:CN)
curl -v -L --cacert cert.crt --key cert.key --cert client.crt -k --request GET "https://*my-k8s-server-ip:port*/api/v1/namespaces/testing/services
“
或者,您可以将服务帐户中的令牌用作BEARER令牌,如here
所述