实例属性在元数据中不可用

时间:2019-09-04 19:51:50

标签: kubernetes google-kubernetes-engine google-cloud-logging

我正在GKE上设置新的K8S群集(1.13.7-gke.8),并且希望Google云日志API正确报告名称空间和实例名称。

这在启用了工作负载身份的新GKE集群中执行。

我启动了工作负载容器以测试对元数据服务的访问,结果如下:

kubectl run -it --generator=run-pod/v1 --image google/cloud-sdk --namespace prod --rm workload-identity-test

在执行后从容器中获取

curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/" -H "Metadata-Flavor: Google"

我希望输出的是cluster-name,container-name和namespace-id,但实际输出仅为cluster-name。

1 个答案:

答案 0 :(得分:1)

我得到的还是一样,但是当我运行以下命令时,出现了元数据:

gcloud beta container node-pools create [NODEPOOL_NAME] \
  --cluster=[CLUSTER_NAME] \
  --workload-metadata-from-node=EXPOSED

但是,您只会从metadada获得cluster-name。例如,

root@workload-identity-test:/# curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/" -H "Metadata-Flavor: Google"
cluster-location
cluster-name
cluster-uid
configure-sh
created-by
disable-legacy-endpoints
enable-oslogin
gci-ensure-gke-docker
gci-update-strategy
google-compute-enable-pcid
instance-template
kube-env
kube-labels
kubelet-config
user-data

如果要获取名称空间和容器,建议您直接与Kubernetes API进行对话,这实际上是GKE上“工作负载”标签的作用。我不太确定您要使用“ Google云日志记录API”做什么,但是也许您可以详细说明另一个问题。