Kubernetes GKE的工作状态来自哪里?为什么它不同于';kubectl获得工作';
GKE UI显示的工作状态与我从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
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之前设置上下文应该可以帮您完成这项工作。