[英]Launching a pod in a different k8s cluster from a pod running in a different k8s cluster
[英]How to config k8s client so that it can talk to k8s CRDs from a k8s cluster pod?
k8s Java客戶端中的示例均使用默認客戶端,請參見此處 。
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
我如何配置k8s客戶端,以便它可以與k8s集群Pod中的k8s CRD(例如,sparkoperator)對話? 我應該如何配置此客戶端? (basePath,身份驗證?)在同一k8s集群中的pod中應該使用什么basePath?
您也可以使用defaultClient
。
如果應用程序在群集中運行並且具有正確的服務帳戶,則defaultClient()
方法將創建一個群集內客戶端。
你可以看到規則defaultClient
從方法的意見在這里 :
/**
* Easy client creation, follows this plan
*
* <ul>
* <li>If $KUBECONFIG is defined, use that config file.
* <li>If $HOME/.kube/config can be found, use that.
* <li>If the in-cluster service account can be found, assume in cluster config.
* <li>Default to localhost:8080 as a last resort.
* </ul>
*
* @return The best APIClient given the previously described rules
*/
因此,如果使用k8s Java客戶端的應用程序在其自身的集群上運行,則只要它具有正確的權限,它就應該能夠訪問集群上的內容。 您需要允許您的客戶端應用程序能夠訪問CRD,例如以下Prometheus Operator ClusterRole
的ClusterRole示例:
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"]
您可以使用Kubernetes API,只需安裝curl。
curl http://localhost:8080/api/v1/namespaces/default/pods
只需將localhost
更改為apiserver ip address
/ dns name
您應該閱讀Kubernetes API文檔 。
另外,您將需要配置RBAC的訪問和權限。 群集中的容器填充有用於對API服務器進行身份驗證的令牌。 您可以通過在POD
內執行cat /var/run/secrets/kubernetes.io/serviceaccount/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
安裝在容器內,還可以設置所需的權限, 有關更多詳細信息 , 請參見 。
我建議您閱讀以下內容: 在Kubernetes Pod中安裝kubectl,並且Kubernetes API調用來自集群內部!
至於其他Java客戶端,也有非官方的客戶端庫,例如Java(OSGi)和Java(Fabric8,OSGi) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.