Merge pull request #50438 from dixudx/kubectl_show_node_roles
Automatic merge from submit-queue (batch tested with PRs 50806, 48789, 49922, 49935, 50438) kubectl show node role if defined **What this PR does / why we need it**: **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #50010 **Special notes for your reviewer**: /assign @justinsb @luxas @jbeda @philips /cc @qrevel **Release note**: ```release-note kubectl show node role if defined ```
This commit is contained in:
commit
601b6d3e02
@ -55,7 +55,6 @@ go_library(
|
||||
"printers.go",
|
||||
],
|
||||
deps = [
|
||||
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
|
||||
"//federation/apis/federation:go_default_library",
|
||||
"//federation/apis/federation/v1beta1:go_default_library",
|
||||
"//federation/client/clientset_generated/federation_clientset:go_default_library",
|
||||
|
@ -41,7 +41,6 @@ import (
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||
"k8s.io/kubernetes/federation/apis/federation"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/events"
|
||||
@ -60,7 +59,20 @@ import (
|
||||
"k8s.io/kubernetes/pkg/util/node"
|
||||
)
|
||||
|
||||
const loadBalancerWidth = 16
|
||||
const (
|
||||
loadBalancerWidth = 16
|
||||
|
||||
// LabelNodeRoleMaster specifies that a node is a master
|
||||
// It's copied over to here until it's merged in core: https://github.com/kubernetes/kubernetes/pull/39112
|
||||
LabelNodeRoleMaster = "node-role.kubernetes.io/master"
|
||||
|
||||
// NodeLabelRole specifies the role of a node
|
||||
NodeLabelRole = "kubernetes.io/role"
|
||||
|
||||
// NodeLabelKubeadmAlphaRole is a label that kubeadm applies to a Node as a hint that it has a particular purpose.
|
||||
// Use of NodeLabelRole is preferred.
|
||||
NodeLabelKubeadmAlphaRole = "kubeadm.alpha.kubernetes.io/role"
|
||||
)
|
||||
|
||||
// AddHandlers adds print handlers for default Kubernetes types dealing with internal versions.
|
||||
// TODO: handle errors from Handler
|
||||
@ -1191,14 +1203,19 @@ func getNodeExternalIP(node *api.Node) string {
|
||||
|
||||
// findNodeRole returns the role of a given node, or "" if none found.
|
||||
// The role is determined by looking in order for:
|
||||
// * a node-role.kubernetes.io/master label
|
||||
// * a kubernetes.io/role label
|
||||
// * a kubeadm.alpha.kubernetes.io/role label
|
||||
// If no role is found, ("", nil) is returned
|
||||
func findNodeRole(node *api.Node) string {
|
||||
if role := node.Labels[kubeadm.NodeLabelKubeadmAlphaRole]; role != "" {
|
||||
return role
|
||||
if _, ok := node.Labels[LabelNodeRoleMaster]; ok {
|
||||
return "Master"
|
||||
}
|
||||
if role := node.Labels[NodeLabelRole]; role != "" {
|
||||
return strings.Title(role)
|
||||
}
|
||||
if role := node.Labels[NodeLabelKubeadmAlphaRole]; role != "" {
|
||||
return strings.Title(role)
|
||||
}
|
||||
// No role found
|
||||
return ""
|
||||
}
|
||||
|
||||
|
@ -825,6 +825,24 @@ func TestPrintNodeStatus(t *testing.T) {
|
||||
},
|
||||
status: "Unknown,SchedulingDisabled",
|
||||
},
|
||||
{
|
||||
node: api.Node{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo10",
|
||||
Labels: map[string]string{"node-role.kubernetes.io/master": "", "kubernetes.io/role": "node", "kubeadm.alpha.kubernetes.io/role": "node"},
|
||||
},
|
||||
},
|
||||
status: "Unknown,Master",
|
||||
},
|
||||
{
|
||||
node: api.Node{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo11",
|
||||
Labels: map[string]string{"kubernetes.io/role": "node", "kubeadm.alpha.kubernetes.io/role": "node"},
|
||||
},
|
||||
},
|
||||
status: "Unknown,Node",
|
||||
},
|
||||
{
|
||||
node: api.Node{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -833,7 +851,7 @@ func TestPrintNodeStatus(t *testing.T) {
|
||||
},
|
||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}},
|
||||
},
|
||||
status: "Ready,node",
|
||||
status: "Ready,Node",
|
||||
},
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user