Kubernetes 如何配置k8s客户机,使其能够从k8s集群吊舱与k8s CRD进行通信?

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 java客户机中的示例都使用默认客户机,请参阅


我如何配置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"]