Kubernetes GKE的工作状态来自哪里?为什么它不同于';kubectl获得工作';

Kubernetes GKE的工作状态来自哪里?为什么它不同于';kubectl获得工作';,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,GKE UI显示的工作状态与我从kubectl返回的状态不同。请注意,GKE UI是AFAICT的正确状态,kubectl是错误的。但是,我希望通过编程在pythonapi中获得正确的状态,但是该状态与kubectl匹配,这似乎是错误的状态 GKE UI中的这种状态来自哪里 在GKE UI中: apiVersion: batch/v1 kind: Job metadata: creationTimestamp: "2020-06-04T08:00:06Z" labels: con

GKE UI显示的工作状态与我从
kubectl
返回的状态不同。请注意,GKE UI是AFAICT的正确状态,
kubectl
是错误的。但是,我希望通过编程在pythonapi中获得正确的状态,但是该状态与
kubectl
匹配,这似乎是错误的状态

GKE UI中的这种状态来自哪里

在GKE UI中:

apiVersion: batch/v1
kind: Job
metadata:
  creationTimestamp: "2020-06-04T08:00:06Z"
  labels:
    controller-uid: ee750648-1189-4ed5-9803-054d407aa0b2
    job-name: tf-nightly-transformer-translate-func-v2-32-1591257600
  name: tf-nightly-transformer-translate-func-v2-32-1591257600
  namespace: automated
  ownerReferences:
  - apiVersion: batch/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: CronJob
    name: tf-nightly-transformer-translate-func-v2-32
    uid: 5b619895-4c08-45e9-8981-fbd95980ff4e
  resourceVersion: "16109561"
  selfLink: /apis/batch/v1/namespaces/automated/jobs/tf-nightly-transformer-translate-func-v2-32-1591257600
  uid: ee750648-1189-4ed5-9803-054d407aa0b2

...

status:
  completionTime: "2020-06-04T08:41:41Z"
  conditions:
  - lastProbeTime: "2020-06-04T08:41:41Z"
    lastTransitionTime: "2020-06-04T08:41:41Z"
    status: "True"
    type: Complete
  startTime: "2020-06-04T08:00:06Z"
  succeeded: 1
kubectl

zcain@zcain:~$ kubectl get job tf-nightly-transformer-translate-func-v2-32-1591257600 --namespace=automated -o yaml
apiVersion: batch/v1
kind: Job
metadata:
  creationTimestamp: "2020-06-04T08:00:27Z"
  labels:
    controller-uid: b5d4fb20-df8d-45d8-a8b5-e3b0c40999be
    job-name: tf-nightly-transformer-translate-func-v2-32-1591257600
  name: tf-nightly-transformer-translate-func-v2-32-1591257600
  namespace: automated
  ownerReferences:
  - apiVersion: batch/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: CronJob
    name: tf-nightly-transformer-translate-func-v2-32
    uid: 51a40f4a-5595-49a1-b63f-db75b0849206
  resourceVersion: "32712722"
  selfLink: /apis/batch/v1/namespaces/automated/jobs/tf-nightly-transformer-translate-func-v2-32-1591257600
  uid: b5d4fb20-df8d-45d8-a8b5-e3b0c40999be

...

status:
  conditions:
  - lastProbeTime: "2020-06-04T12:04:58Z"
    lastTransitionTime: "2020-06-04T12:04:58Z"
    message: Job was active longer than specified deadline
    reason: DeadlineExceeded
    status: "True"
    type: Failed
  startTime: "2020-06-04T11:04:58Z"[enter image description here][1]
环境:

Kubernetes version (kubectl version):
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.9", GitCommit:"2e808b7cb054ee242b68e62455323aa783991f03", GitTreeState:"clean", BuildDate:"2020-01-18T23:33:14Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.9-gke.26", GitCommit:"525ce678faa2b28483fa9569757a61f92b7b0988", GitTreeState:"clean", BuildDate:"2020-03-06T18:47:39Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}

OS:
cat /etc/os-release PRETTY_NAME="Debian GNU/Linux rodete"

Python version (python --version):
Python 3.7.7

Python client version (pip list | grep kubernetes):
kubernetes 10.0.1

对于发现类似问题的任何其他人: 问题在于
kubeconfig
文件(/usr/local/google/home/zcain/.kube/config for me)

这里有一行是这样的:
当前上下文:gke_xl-ml-test_europe-west4-a_xl-ml-test-europe-west4

如果
当前上下文
指向的集群或区域与作业运行的集群或区域不同,那么当您运行
kubectl job get
或使用Python API时,返回的作业状态将异常。我觉得它应该只是出错,但我得到了上面的行为,我得到了一个不正确的状态


您可以运行类似于
gcloud container clusters get credentials xl-ml-test-europe-west4--zone europe-west4-a
的程序,将
kubeconfig
设置为正确的
current context

,GUI将始终为您提供当前输出,因为您正在检查相同的集群,但是,使用Kubectl时,未设置上下文。您以编程方式获取输出,因此最好检查如何使用kubectl命令。您应该在调用kubernetes的作业API之前设置上下文。该命令将是
kubectl config use context cluster name
,我不会说这是kubectl二进制文件中的错误,而是在调用作业API之前应该执行的检查。在调用API之前设置上下文应该可以帮您完成这项工作。