我在apiserver参数中看到以下两行,
--kubelet-client-certificate=/srv/kubernetes/kubelet-api.pem
--kubelet-client-key=/srv/kubernetes/kubelet-api-key.pem
我尝试使用api使用curl击打kubelet stats api,但出现错误,
curl --cert kubelet-api.pem --key kubelet-api-key.pem https://ip-x-x-x-x.ec2.internal:10250/stats/summary
curl: (60) SSL certificate problem: self signed certificate in certificate chain
我还尝试添加--cacert和/srv/kubernetes/ca.crt中存在的文件,但这没有帮助。
我还尝试从kops s3状态存储中提取证书,但是我发现使用privateMaterial和publicMaterial的keyset.yaml。我们如何将其转换为证书?
答案 0 :(得分:0)
我不认为kubelet-api.pem
有权从/stats/summary
获取信息。
为此,您需要具有权限的用户的证书,并确保正确设置了kubelet配置文件。
默认位置是:/var/lib/kubelet/config.yaml
。
请注意,您需要在要访问kubelet的每个节点上执行此操作。
在某些安装中,这是默认设置,但如果没有,请确保。
您希望它禁用匿名请求并允许x509证书:
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous:
enabled: false
webhook:
cacheTTL: 0s
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
使用您的ca.crt
签名的证书创建用户。
此类证书的示例是kubeconfig
文件中的默认kubernetes管理员,您可以从base64 -d
字段中为client-certificate-data
和{{ 1}} --cert
归档并像这样使用它们:
client-key-data
您还可以使用带有--key
文件的名为kubeletctl的kubelet的新开源客户端,如下所示:
curl -k https://<node_ip>:10250/stats/summary --cacert /etc/kubernetes/pki/ca.crt --key admin.key --cert admin.crt