Kubernetes Pod状态如何变为匹配节点选择器
在我们的暂存环境中,报告了一个缺陷。kubernetes更新后,一些POD状态变为“MatchNodeSelector” 但我不知道为什么和如何一些豆荚成为“匹配节点选择器”。所以我做了一些研究,如果一个Pod有一个字段nodeSelector,而没有任何节点有这个标签。这些豆荚将成为“MatchNodeSelector” 但我无法复制它。Pods状态始终变为“挂起”,而不是“匹配节点选择器”。Kubernetes Pod状态如何变为匹配节点选择器,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,在我们的暂存环境中,报告了一个缺陷。kubernetes更新后,一些POD状态变为“MatchNodeSelector” 但我不知道为什么和如何一些豆荚成为“匹配节点选择器”。所以我做了一些研究,如果一个Pod有一个字段nodeSelector,而没有任何节点有这个标签。这些豆荚将成为“MatchNodeSelector” 但我无法复制它。Pods状态始终变为“挂起”,而不是“匹配节点选择器”。 因此,我的问题是,如何使Pod状态变为“MatchNodeSelector”?我已经能够通过以下方式
因此,我的问题是,如何使Pod状态变为“MatchNodeSelector”?我已经能够通过以下方式重现这一点:
kubectl get po-o json--export
导出其yaml或json。请注意运行它的节点kubectl Create-f pod.json创建pod
这是因为在同一规范中也有一个
节点
选项,该选项也需要更改。它没有被--export选项删除,并且在该字段中仍然具有旧的节点名称
我猜如果它与您在affinity中提供的任何节点名称冲突,它将导致此状态
这些版本如下:
`客户端版本:Version.Info{Major:“1”,Minor:“10”,GitVersion:“v1.10.3”,GitCommit:“2BBA017D85D5A46AB4B778548BE28623B32D0B0”,GitRestate:“clean”,BuildDate:“2018-05-21T09:17:39Z”,政府版本:“go1.9.3”,编译器:“gc”,平台:“darwin/amd64”}
服务器版本:Version.Info{Major:“1”,Minor:“13”,GitVersion:“v1.13.1”,GitCommit:“eec55b9ba98609a46fee712359c7b5b365bdd920”,GitRestate:“clean”,BuildDate:“2018-12-13T10:31:33Z”,GoVersion:“go1.11.2”,编译器:“gc”,平台:“linux/amd64”}我已经能够通过以下方式复制此信息:
kubectl get po-o json--export
导出其yaml或json。请注意运行它的节点kubectl Create-f pod.json创建pod
这是因为在同一规范中也有一个
节点
选项,该选项也需要更改。它没有被--export选项删除,并且在该字段中仍然具有旧的节点名称
我猜如果它与您在affinity中提供的任何节点名称冲突,它将导致此状态
这些版本如下:
`客户端版本:Version.Info{Major:“1”,Minor:“10”,GitVersion:“v1.10.3”,GitCommit:“2BBA017D85D5A46AB4B778548BE28623B32D0B0”,GitRestate:“clean”,BuildDate:“2018-05-21T09:17:39Z”,政府版本:“go1.9.3”,编译器:“gc”,平台:“darwin/amd64”}
服务器版本:Version.Info{Major:“1”,Minor:“13”,GitVersion:“v1.13.1”,GitCommit:“eec55b9ba98609a46fee712359c7b5b365bdd920”,GitRestate:“clean”,BuildDate:“2018-12-13T10:31:33Z”,政府版本:“go1.11.2”,编译器:“gc”,平台:“linux/amd64”}`匹配节点选择器是我在工作节点重新启动后观察到的pod状态。它出现在使用
.spec.nodeSelector
节的POD上。发生了什么:
/usr/bin/kubelet--节点标签=节点种类.foo.io/master=
- 过去通过API创建的其他节点标签的列表
- 要在节点上运行的POD的列表
.spec.NodeSelector
使用的标签来自etcd/API,而不是命令行,那么kubelet会发现pod的期望值与应用于此节点的标签之间不匹配(因为尚未处理etcd的完全刷新)参考:和
匹配节点选择器
是我在工作节点重新启动后观察到的pod状态。它出现在使用.spec.nodeSelector
节的POD上。发生了什么:
/usr/bin/kubelet--节点标签=节点种类.foo.io/master=
- 过去通过API创建的其他节点标签的列表
- 要在节点上运行的POD的列表
.spec.NodeSelector
使用的标签来自etcd/API,而不是命令行,那么kubelet会发现pod的期望值与应用于此节点的标签之间不匹配(因为尚未处理etcd的完全刷新)参考:和可能将节点选择器设置为现有节点名,然后停止节点。我尝试过这种方法。Pod状态未变为MatchNodeSelector。您正在使用哪个版本的k8s,并且已将其更新到哪个版本。还有你是如何更新它的。也许将节点选择器设置为一个现有的节点名,然后停止节点。我尝试过这种方法。Po
"spec": {
"affinity": {
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "kubernetes.io/hostname",
"operator": "In",
"values": [
"new node name"
]
}
]
}
]
}
}
}
}