node

package
v0.12.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 11, 2022 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// LabelNodeRolePrefix is a label prefix for node roles
	// It's copied over to here until it's merged in core: https://github.com/kubernetes/kubernetes/pull/39112
	LabelNodeRolePrefix = "node-role.kubernetes.io/"

	// LabelNodeRole specifies the role of a node
	LabelNodeRole = "kubernetes.io/role"

	NodeRoleMaster       = "master"
	NodeRoleControlPlane = "control-plane"
)

Variables

View Source
var (
	ErrInvalidToolsType  = errors.New("type must be string, *corev1.Node, corev1.Node, metav1.Object or runtime.Object")
	ErrInvalidCreateType = errors.New("type must be string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}")
	ErrInvalidUpdateType = ErrInvalidCreateType
	ErrInvalidApplyType  = ErrInvalidCreateType
	ErrInvalidDeleteType = ErrInvalidCreateType
	ErrInvalidGetType    = ErrInvalidCreateType
	ErrInvalidPatchType  = errors.New("patch data type must be string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}")
)

GVK contains the Group, Version, Kind name of node.

GVR contains the Group, Version and Resource name of node.

View Source
var Group = GVK.Group

Group is the node Group name.

View Source
var Kind = GVK.Kind

Kind is the node Kind name.

View Source
var Resource = GVR.Resource

Resource is the node Resource name.

View Source
var Version = GVK.Version

Version is the node Version name.

Functions

This section is empty.

Types

type Handler

type Handler struct {
	Options *types.HandlerOptions
	// contains filtered or unexported fields
}

func New

func New(ctx context.Context, kubeconfig string) (*Handler, error)

New returns a node handler from kubeconfig or in-cluster config The kubeconfig precedence is: * kubeconfig variable passed. * KUBECONFIG environment variable pointing at a file. * $HOME/.kube/config if exists. * In-cluster config if running in cluster.

func NewOrDie added in v0.3.0

func NewOrDie(ctx context.Context, kubeconfig string) *Handler

NewOrDie simply call New() to get a node handler. panic if there is any error occurs.

func (*Handler) Apply added in v0.3.0

func (h *Handler) Apply(obj interface{}) (*corev1.Node, error)

Apply applies node from type string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}.

func (*Handler) ApplyFromBytes added in v0.3.0

func (h *Handler) ApplyFromBytes(data []byte) (node *corev1.Node, err error)

ApplyFromBytes pply node from bytes data.

func (*Handler) ApplyFromFile added in v0.3.0

func (h *Handler) ApplyFromFile(filename string) (node *corev1.Node, err error)

ApplyFromFile applies node from yaml or json file.

func (*Handler) ApplyFromMap added in v0.5.0

func (h *Handler) ApplyFromMap(u map[string]interface{}) (*corev1.Node, error)

ApplyFromMap applies node from map[string]interface{}.

func (*Handler) ApplyFromObject added in v0.3.0

func (h *Handler) ApplyFromObject(obj interface{}) (*corev1.Node, error)

ApplyFromObject applies node from metav1.Object or runtime.Object.

func (*Handler) ApplyFromUnstructured added in v0.3.0

func (h *Handler) ApplyFromUnstructured(u *unstructured.Unstructured) (*corev1.Node, error)

ApplyFromUnstructured applies node from *unstructured.Unstructured.

func (*Handler) Clientset added in v0.2.0

func (h *Handler) Clientset() *kubernetes.Clientset

Clientset returns underlying clientset.

func (*Handler) Create added in v0.3.0

func (h *Handler) Create(obj interface{}) (*corev1.Node, error)

Create creates node from type string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}.

func (*Handler) CreateFromBytes added in v0.3.0

func (h *Handler) CreateFromBytes(data []byte) (*corev1.Node, error)

CreateFromBytes creates node from bytes data.

func (*Handler) CreateFromFile added in v0.3.0

func (h *Handler) CreateFromFile(filename string) (*corev1.Node, error)

CreateFromFile creates node from yaml or json file.

func (*Handler) CreateFromMap added in v0.5.0

func (h *Handler) CreateFromMap(u map[string]interface{}) (*corev1.Node, error)

CreateFromMap creates node from map[string]interface{}.

func (*Handler) CreateFromObject added in v0.3.0

func (h *Handler) CreateFromObject(obj interface{}) (*corev1.Node, error)

CreateFromObject creates node from metav1.Object or runtime.Object.

func (*Handler) CreateFromUnstructured added in v0.3.0

func (h *Handler) CreateFromUnstructured(u *unstructured.Unstructured) (*corev1.Node, error)

CreateFromUnstructured creates node from *unstructured.Unstructured.

func (*Handler) DeepCopy

func (in *Handler) DeepCopy() *Handler

func (*Handler) Delete added in v0.3.0

func (h *Handler) Delete(obj interface{}) error

Delete deletes node from type string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}.

If passed parameter type is string, it will simply call DeleteByName instead of DeleteFromFile. You should always explicitly call DeleteFromFile to delete a node from file path.

func (*Handler) DeleteByName added in v0.3.0

func (h *Handler) DeleteByName(name string) error

DeleteByName deletes node by name.

func (*Handler) DeleteFromBytes added in v0.3.0

func (h *Handler) DeleteFromBytes(data []byte) error

DeleteFromBytes deletes node from bytes data.

func (*Handler) DeleteFromFile added in v0.3.0

func (h *Handler) DeleteFromFile(filename string) error

DeleteFromFile deletes node from yaml or json file.

func (*Handler) DeleteFromMap added in v0.5.0

func (h *Handler) DeleteFromMap(u map[string]interface{}) error

DeleteFromMap deletes node from map[string]interface{}.

func (*Handler) DeleteFromObject added in v0.3.0

func (h *Handler) DeleteFromObject(obj interface{}) error

DeleteFromObject deletes node from metav1.Object or runtime.Object.

func (*Handler) DeleteFromUnstructured added in v0.3.0

func (h *Handler) DeleteFromUnstructured(u *unstructured.Unstructured) error

DeleteFromUnstructured deletes node from *unstructured.Unstructured.

func (*Handler) DiscoveryClient added in v0.2.0

func (h *Handler) DiscoveryClient() *discovery.DiscoveryClient

DiscoveryClient returns underlying discovery client.

func (*Handler) DynamicClient added in v0.2.0

func (h *Handler) DynamicClient() dynamic.Interface

DynamicClient returns underlying dynamic client.

func (*Handler) Get

func (h *Handler) Get(obj interface{}) (*corev1.Node, error)

Get gets node from type string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}.

If passed parameter type is string, it will simply call GetByName instead of GetFromFile. You should always explicitly call GetFromFile to get a node from file path.

func (*Handler) GetAge added in v0.2.0

func (h *Handler) GetAge(object interface{}) (time.Duration, error)

GetAge

func (*Handler) GetByName

func (h *Handler) GetByName(name string) (*corev1.Node, error)

GetByName gets node by name.

func (*Handler) GetCIDR

func (h *Handler) GetCIDR(object interface{}) (string, error)

GetCIDR get the node podCIDR

func (*Handler) GetCIDRs

func (h *Handler) GetCIDRs(object interface{}) ([]string, error)

GetCIDRs get the node podCIDRs

func (*Handler) GetExternaDNS added in v0.2.0

func (h *Handler) GetExternaDNS(object interface{}) ([]string, error)

GetExternaDNS returns the node ip

func (*Handler) GetExternalIP added in v0.2.0

func (h *Handler) GetExternalIP(object interface{}) ([]string, error)

GetExternalIP returns the node ip

func (*Handler) GetFromBytes added in v0.3.0

func (h *Handler) GetFromBytes(data []byte) (*corev1.Node, error)

GetFromBytes gets node from bytes data.

func (*Handler) GetFromFile added in v0.3.0

func (h *Handler) GetFromFile(filename string) (*corev1.Node, error)

GetFromFile gets node from yaml or json file.

func (*Handler) GetFromMap added in v0.5.0

func (h *Handler) GetFromMap(u map[string]interface{}) (*corev1.Node, error)

GetFromMap gets node from map[string]interface{}.

func (*Handler) GetFromObject added in v0.3.0

func (h *Handler) GetFromObject(obj interface{}) (*corev1.Node, error)

GetFromObject gets node from metav1.Object or runtime.Object.

func (*Handler) GetFromUnstructured added in v0.3.0

func (h *Handler) GetFromUnstructured(u *unstructured.Unstructured) (*corev1.Node, error)

GetFromUnstructured gets node from *unstructured.Unstructured.

func (*Handler) GetHostname

func (h *Handler) GetHostname(object interface{}) ([]string, error)

GetHostname returns the node ip

func (*Handler) GetInternalDNS added in v0.2.0

func (h *Handler) GetInternalDNS(object interface{}) ([]string, error)

GetInternalDNS returns the node ip

func (*Handler) GetInternalIP added in v0.2.0

func (h *Handler) GetInternalIP(object interface{}) ([]string, error)

GetInternalIP returns the node ip

func (*Handler) GetMasterInfo

func (h *Handler) GetMasterInfo() ([]NodeInfo, error)

GetMasterInfo

func (*Handler) GetNodeInfo added in v0.2.0

func (h *Handler) GetNodeInfo(object interface{}) (*NodeInfo, error)

GetNodeInfo get given node info.

func (*Handler) GetPhase added in v0.2.0

func (h *Handler) GetPhase(object interface{}) (string, error)

These are the valid phases of node. Running, Pending, Terminated

func (*Handler) GetPods

func (h *Handler) GetPods(object interface{}) ([]*corev1.Pod, error)

GetPods get all pods running in the node

func (*Handler) GetRoles

func (h *Handler) GetRoles(object interface{}) ([]string, error)

GetRoles returns the roles of a given node. The roles are determined by looking for:

node-role.kubernetes.io/<role>=""
kubernetes.io/role="<role>"

func (*Handler) GetWorkerInfo

func (h *Handler) GetWorkerInfo() ([]NodeInfo, error)

GetWorkerInfo

func (*Handler) Informer added in v0.5.0

func (h *Handler) Informer() cache.SharedIndexInformer

Informer returns underlying SharedIndexInformer which provides add and Indexers ability based on SharedInformer.

func (*Handler) InformerFactory added in v0.5.0

func (h *Handler) InformerFactory() informers.SharedInformerFactory

InformerFactory returns underlying SharedInformerFactory which provides shared informer for resources in all known API group version.

func (*Handler) IsControlPlane

func (h *Handler) IsControlPlane(object interface{}) bool

IsControlPlane check whether the node is control-plane.

func (*Handler) IsMaster

func (h *Handler) IsMaster(object interface{}) bool

IsMaster check whether the node is master.

func (*Handler) IsReady

func (h *Handler) IsReady(name string) bool

IsReady check whether the node is ready.

func (*Handler) List

func (h *Handler) List() ([]*corev1.Node, error)

List list all nodes in the k8s cluster, it simply call `ListAll`.

func (*Handler) ListAll

func (h *Handler) ListAll() ([]*corev1.Node, error)

ListAll list all nodes in the k8s cluster.

func (*Handler) ListByField added in v0.7.0

func (h *Handler) ListByField(field string) ([]*corev1.Node, error)

ListByField list nodes by field, work like `kubectl get xxx --field-selector=xxx`.

func (*Handler) ListByLabel

func (h *Handler) ListByLabel(labels string) ([]*corev1.Node, error)

ListByLabel list nodes by labels. Multiple labels separated by comma(",") eg: "name=myapp,role=devops", and there is an "And" relationship between multiple labels.

func (*Handler) Lister added in v0.5.0

func (h *Handler) Lister() listerscore.NodeLister

Lister returns underlying NodeLister which helps list nodes.

func (*Handler) NodeInformer added in v0.5.0

func (h *Handler) NodeInformer() informerscore.NodeInformer

NodeInformer returns underlying NodeInformer which provides access to a shared informer and lister for node.

func (*Handler) Patch added in v0.11.1

func (h *Handler) Patch(original *corev1.Node, patch interface{}, patchOptions ...types.PatchType) (*corev1.Node, error)

Patch use the default patch type(Strategic Merge Patch) to patch node. Supported patch types are: "StrategicMergePatchType", "MergePatchType", "JSONPatchType".

For further more Strategic Merge patch, see:

https://kubernetes.io/docs/tasks/manage-kubernetes-objects/update-api-object-kubectl-patch/#before-you-begin

For a comparison of JSON patch and JSON merge patch, see:

https://erosb.github.io/post/json-patch-vs-merge-patch/

func (*Handler) RESTClient added in v0.2.0

func (h *Handler) RESTClient() *rest.RESTClient

RESTClient returns underlying rest client.

func (*Handler) RESTConfig added in v0.3.0

func (h *Handler) RESTConfig() *rest.Config

RESTConfig returns underlying rest config.

func (*Handler) RunInformer

func (h *Handler) RunInformer(
	stopCh <-chan struct{},
	addFunc func(obj interface{}),
	updateFunc func(oldObj, newObj interface{}),
	deleteFunc func(obj interface{}))

RunInformer start and run the shared informer, returning after it stops. The informer will be stopped when stopCh is closed.

AddFunc, updateFunc, and deleteFunc are used to handle add, update, and delete event of k8s node resource, respectively.

func (*Handler) SetForceDelete added in v0.6.1

func (h *Handler) SetForceDelete(force bool)

func (*Handler) SetInformerFactoryNamespace added in v0.10.4

func (h *Handler) SetInformerFactoryNamespace(namespace string)

SetInformerFactoryNamespace limit the scope of informer list-and-watch k8s resource. informer list-and-watch all namespace k8s resource by default.

func (*Handler) SetInformerFactoryResyncPeriod added in v0.10.4

func (h *Handler) SetInformerFactoryResyncPeriod(resyncPeriod time.Duration)

SetInformerFactoryResyncPeriod will set informer resync period.

func (*Handler) SetInformerFactoryTweakListOptions added in v0.10.4

func (h *Handler) SetInformerFactoryTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc)

SetInformerFactoryTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory.

func (*Handler) SetLimit

func (h *Handler) SetLimit(limit int64)

func (*Handler) SetTimeout

func (h *Handler) SetTimeout(timeout int64)

func (*Handler) StartInformer added in v0.10.1

func (h *Handler) StartInformer(
	stopCh <-chan struct{},
	addFunc func(obj interface{}),
	updateFunc func(oldObj, newObj interface{}),
	deleteFunc func(obj interface{}))

StartInformer simply call RunInformer.

func (*Handler) Update added in v0.3.0

func (h *Handler) Update(obj interface{}) (*corev1.Node, error)

Update updates node from type string, []byte, *corev1.Node, corev1.Node, metav1.Object, runtime.Object, *unstructured.Unstructured, unstructured.Unstructured or map[string]interface{}.

func (*Handler) UpdateFromBytes added in v0.3.0

func (h *Handler) UpdateFromBytes(data []byte) (*corev1.Node, error)

UpdateFromBytes updates node from bytes data.

func (*Handler) UpdateFromFile added in v0.3.0

func (h *Handler) UpdateFromFile(filename string) (*corev1.Node, error)

UpdateFromFile updates node from yaml or json file.

func (*Handler) UpdateFromMap added in v0.5.0

func (h *Handler) UpdateFromMap(u map[string]interface{}) (*corev1.Node, error)

UpdateFromMap updates node from map[string]interface{}.

func (*Handler) UpdateFromObject added in v0.3.0

func (h *Handler) UpdateFromObject(obj interface{}) (*corev1.Node, error)

UpdateFromObject updates node from metav1.Object or runtime.Object.

func (*Handler) UpdateFromUnstructured added in v0.3.0

func (h *Handler) UpdateFromUnstructured(u *unstructured.Unstructured) (*corev1.Node, error)

UpdateFromUnstructured updates node from *unstructured.Unstructured.

func (*Handler) Watch added in v0.7.0

func (h *Handler) Watch(addFunc, modifyFunc, deleteFunc func(obj interface{})) error

Watch watch all node resources.

Object as the parameter of addFunc, modifyFunc, deleteFunc:

  • If Event.Type is Added or Modified: the new state of the object.
  • If Event.Type is Deleted: the state of the object immediately before deletion.
  • If Event.Type is Bookmark: the object (instance of a type being watched) where only ResourceVersion field is set. On successful restart of watch from a bookmark resourceVersion, client is guaranteed to not get repeat event nor miss any events.
  • If Event.Type is Error: *api.Status is recommended; other types may make sense depending on context.

func (*Handler) WatchByField added in v0.11.1

func (h *Handler) WatchByField(field string, addFunc, modifyFunc, deleteFunc func(obj interface{})) error

WatchByField watch a single or multiple Node resources selected by the field.

Object as the parameter of addFunc, modifyFunc, deleteFunc:

  • If Event.Type is Added or Modified: the new state of the object.
  • If Event.Type is Deleted: the state of the object immediately before deletion.
  • If Event.Type is Bookmark: the object (instance of a type being watched) where only ResourceVersion field is set. On successful restart of watch from a bookmark resourceVersion, client is guaranteed to not get repeat event nor miss any events.
  • If Event.Type is Error: *api.Status is recommended; other types may make sense depending on context.

func (*Handler) WatchByLabel added in v0.7.0

func (h *Handler) WatchByLabel(labels string, addFunc, modifyFunc, deleteFunc func(obj interface{})) error

WatchByLabel watch a single or multiple Node resources selected by the label. Multiple labels are separated by ",", label key and value conjunctaed by "=".

Object as the parameter of addFunc, modifyFunc, deleteFunc:

  • If Event.Type is Added or Modified: the new state of the object.
  • If Event.Type is Deleted: the state of the object immediately before deletion.
  • If Event.Type is Bookmark: the object (instance of a type being watched) where only ResourceVersion field is set. On successful restart of watch from a bookmark resourceVersion, client is guaranteed to not get repeat event nor miss any events.
  • If Event.Type is Error: *api.Status is recommended; other types may make sense depending on context.

func (*Handler) WatchByName added in v0.7.0

func (h *Handler) WatchByName(name string, addFunc, modifyFunc, deleteFunc func(obj interface{})) error

WatchByName watch a single node reseource.

Object as the parameter of addFunc, modifyFunc, deleteFunc:

  • If Event.Type is Added or Modified: the new state of the object.
  • If Event.Type is Deleted: the state of the object immediately before deletion.
  • If Event.Type is Bookmark: the object (instance of a type being watched) where only ResourceVersion field is set. On successful restart of watch from a bookmark resourceVersion, client is guaranteed to not get repeat event nor miss any events.
  • If Event.Type is Error: *api.Status is recommended; other types may make sense depending on context.

func (*Handler) WithDryRun

func (h *Handler) WithDryRun() *Handler

WithDryRun deep copies a new handler and prints the create/update/apply/delete operations, without sending it to apiserver.

type NodeInfo

type NodeInfo struct {
	Hostname           string
	IPAddress          []string
	AllocatableCpu     string
	AllocatableMemory  string
	AllocatableStorage string
	TotalCpu           string
	TotalMemory        string
	TotalStorage       string

	Architecture            string
	BootID                  string
	ContainerRuntimeVersion string
	KernelVersion           string
	KubeProxyVersion        string
	KubeletVersion          string
	MachineID               string
	OperatingSystem         string
	OSImage                 string
	SystemUUID              string
}

type NodeStatus

type NodeStatus struct {
	Status  string
	Message string
	Reason  string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL