Kubernetes 如何配置k8s客户机,使其能够从k8s集群吊舱与k8s CRD进行通信?
k8s java客户机中的示例都使用默认客户机,请参阅Kubernetes 如何配置k8s客户机,使其能够从k8s集群吊舱与k8s CRD进行通信?,kubernetes,google-api-java-client,kubernetes-ingress,kubernetes-pod,Kubernetes,Google Api Java Client,Kubernetes Ingress,Kubernetes Pod,k8s java客户机中的示例都使用默认客户机,请参阅 我如何配置k8s客户机,以便它可以从k8s集群吊舱与k8s CRD(比如sparkoperator)进行通信?我应该如何配置这个客户端?(basePath,authentications?)那么我应该在同一k8s集群的pod中使用什么样的basePath?您可以使用Kubernetes API,只需安装curl curlhttp://localhost:8080/api/v1/namespaces/default/pods 只需将local
我如何配置k8s客户机,以便它可以从k8s集群吊舱与k8s CRD(比如sparkoperator)进行通信?我应该如何配置这个客户端?(basePath,authentications?)那么我应该在同一k8s集群的pod中使用什么样的basePath?您可以使用Kubernetes API,只需安装curl
curlhttp://localhost:8080/api/v1/namespaces/default/pods
只需将localhost
更改为apiserver ip地址
/dns名称
你应该看报纸
此外,您还需要配置访问权限和权限。
集群中的容器填充有一个令牌,该令牌用于向API服务器进行身份验证。
您可以通过在POD
内执行cat/var/run/secrets/kubernetes.io/servicecomport/token
来验证这一点
这样,您从容器内部向apiserver发出的请求可能如下所示:
curl -ik \
-H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
https://kubernetes.default.svc.cluster.local/api/v1/namespaces/default/pods
您还可以在容器内安装kubectl
,还可以设置所需的权限
我推荐以下阅读和阅读
对于其他Java客户机,也有非官方的客户机库,如和。您也可以使用
defaultClient
如果应用程序在集群内运行并且具有正确的服务帐户,则defaultClient()
方法将创建集群内客户端
您可以从方法的注释中查看defaultClient
的规则:
/**
*轻松创建客户端,遵循此计划
*
*
*- 如果定义了$KUBECONFIG,则使用该配置文件。
*
- 如果可以找到$HOME/.kube/config,请使用它。
*
- 如果可以找到集群内服务帐户,则假定在集群配置中。
*
- 默认使用localhost:8080作为最后手段。
*
*
*@根据前面描述的规则返回最佳APIClient
*/
因此,如果使用k8s java客户机的应用程序本身在集群上运行,它应该能够访问集群上的内容,只要它拥有正确的权限。
您需要允许您的客户端应用程序能够访问CRD,如下面的ClusterRole
示例:
curl -ik \
-H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
https://kubernetes.default.svc.cluster.local/api/v1/namespaces/default/pods
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: prometheus-crd-view
labels:
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rbac.authorization.k8s.io/aggregate-to-edit: "true"
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules:
- apiGroups: ["monitoring.coreos.com"]
resources: ["alertmanagers", "prometheuses", "prometheusrules", "servicemonitors"]
verbs: ["get", "list", "watch"]