3 回答

TA贡献1799条经验 获得超8个赞
如果您使用的是 GKE,则节点区域和区域应位于节点的标签中:
failure-domain.beta.kubernetes.io/region
failure-domain.beta.kubernetes.io/zone
topology.kubernetes.io/region
topology.kubernetes.io/zone
您可以使用kubectl get nodes --show-labels

TA贡献1859条经验 获得超6个赞
这就是我最终所做的。
已启用工作负载标识
gcloud container clusters update <CLUSTER_NAME> \
--workload-pool=<PROJECT_ID>.svc.id.goog
更新了节点池以使用工作负载标识
gcloud container node-pools update <NODEPOOL_NAME> \
--cluster=<CLUSTER_NAME> \
--workload-metadata=<GKE_METADATA>
为我的应用创建了服务帐户
将我的 KSA 绑定到 GSA
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:<PROJECT_ID>.svc.id.goog[<K8S_NAMESPACE>/<KSA_NAME]" \
<GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com
使用GSA电子邮件地址的带注释的服务帐户
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
iam.gke.io/gcp-service-account: <GSA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com
name: KSA_NAME
namespace: <K8S_NAMESPACE>
这由GSA的容器进行身份验证,我能够使用 https://cloud.google.com/compute/docs/storing-retrieving-metadata

TA贡献2011条经验 获得超2个赞
不是以任何直接的方式。您可以使用向下 API 向 Pod 公开节点名称,然后获取该节点的注释/标签。但这需要相当广泛的读取权限(所有节点),因此可能存在安全风险。
- 3 回答
- 0 关注
- 136 浏览
添加回答
举报