mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-01 01:08:55 +00:00
Only check Readiness of masters, not every node
This commit is contained in:
@@ -43,6 +43,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
|
@@ -24,6 +24,7 @@ import (
|
|||||||
apps "k8s.io/api/apps/v1beta2"
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
@@ -53,7 +54,7 @@ func (c *healthCheck) Name() string {
|
|||||||
|
|
||||||
// CheckClusterHealth makes sure:
|
// CheckClusterHealth makes sure:
|
||||||
// - the API /healthz endpoint is healthy
|
// - the API /healthz endpoint is healthy
|
||||||
// - all Nodes are Ready
|
// - all master Nodes are Ready
|
||||||
// - (if self-hosted) that there are DaemonSets with at least one Pod for all control plane components
|
// - (if self-hosted) that there are DaemonSets with at least one Pod for all control plane components
|
||||||
// - (if static pod-hosted) that all required Static Pod manifests exist on disk
|
// - (if static pod-hosted) that all required Static Pod manifests exist on disk
|
||||||
func CheckClusterHealth(client clientset.Interface, ignoreChecksErrors sets.String) error {
|
func CheckClusterHealth(client clientset.Interface, ignoreChecksErrors sets.String) error {
|
||||||
@@ -66,9 +67,9 @@ func CheckClusterHealth(client clientset.Interface, ignoreChecksErrors sets.Stri
|
|||||||
f: apiServerHealthy,
|
f: apiServerHealthy,
|
||||||
},
|
},
|
||||||
&healthCheck{
|
&healthCheck{
|
||||||
name: "NodeHealth",
|
name: "MasterNodesReady",
|
||||||
client: client,
|
client: client,
|
||||||
f: nodesHealthy,
|
f: masterNodesReady,
|
||||||
},
|
},
|
||||||
// TODO: Add a check for ComponentStatuses here?
|
// TODO: Add a check for ComponentStatuses here?
|
||||||
}
|
}
|
||||||
@@ -106,16 +107,25 @@ func apiServerHealthy(client clientset.Interface) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// nodesHealthy checks whether all Nodes in the cluster are in the Running state
|
// masterNodesReady checks whether all master Nodes in the cluster are in the Running state
|
||||||
func nodesHealthy(client clientset.Interface) error {
|
func masterNodesReady(client clientset.Interface) error {
|
||||||
nodes, err := client.CoreV1().Nodes().List(metav1.ListOptions{})
|
selector := labels.SelectorFromSet(labels.Set(map[string]string{
|
||||||
|
constants.LabelNodeRoleMaster: "",
|
||||||
|
}))
|
||||||
|
masters, err := client.CoreV1().Nodes().List(metav1.ListOptions{
|
||||||
|
LabelSelector: selector.String(),
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("couldn't list all nodes in cluster: %v", err)
|
return fmt.Errorf("couldn't list masters in cluster: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
notReadyNodes := getNotReadyNodes(nodes.Items)
|
if len(masters.Items) == 0 {
|
||||||
if len(notReadyNodes) != 0 {
|
return fmt.Errorf("failed to find any nodes with master role")
|
||||||
return fmt.Errorf("there are NotReady Nodes in the cluster: %v", notReadyNodes)
|
}
|
||||||
|
|
||||||
|
notReadyMasters := getNotReadyNodes(masters.Items)
|
||||||
|
if len(notReadyMasters) != 0 {
|
||||||
|
return fmt.Errorf("there are NotReady masters in the cluster: %v", notReadyMasters)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user