llhuii / dive-into-k8s

Apache License 2.0
0 stars 0 forks source link

kubelet node name设置 #24

Open llhuii opened 1 year ago

llhuii commented 1 year ago
// initialNode constructs the initial v1.Node for this Kubelet, incorporating node
// labels, information from the cloud provider, and Kubelet configuration.
func (kl *Kubelet) initialNode(ctx context.Context) (*v1.Node, error) {
    node := &v1.Node{
        ObjectMeta: metav1.ObjectMeta{
            Name: string(kl.nodeName),
            Labels: map[string]string{
                v1.LabelHostname:      kl.hostname,
                v1.LabelOSStable:      goruntime.GOOS,
                v1.LabelArchStable:    goruntime.GOARCH,
                kubeletapis.LabelOS:   goruntime.GOOS,
                kubeletapis.LabelArch: goruntime.GOARCH,
            },
        },
        Spec: v1.NodeSpec{
            Unschedulable: !kl.registerSchedulable,
        },
    }

const (
    LabelHostname = "kubernetes.io/hostname"

    LabelFailureDomainBetaZone   = "failure-domain.beta.kubernetes.io/zone"
    LabelFailureDomainBetaRegion = "failure-domain.beta.kubernetes.io/region"
    LabelTopologyZone            = "topology.kubernetes.io/zone"
    LabelTopologyRegion          = "topology.kubernetes.io/region"

    // Legacy names for compat.
    LabelZoneFailureDomain       = LabelFailureDomainBetaZone   // deprecated, remove after 1.20
    LabelZoneRegion              = LabelFailureDomainBetaRegion // deprecated, remove after 1.20
    LabelZoneFailureDomainStable = LabelTopologyZone
    LabelZoneRegionStable        = LabelTopologyRegion

    LabelInstanceType       = "beta.kubernetes.io/instance-type"
    LabelInstanceTypeStable = "node.kubernetes.io/instance-type"

    LabelOSStable   = "kubernetes.io/os"
    LabelArchStable = "kubernetes.io/arch"
)

其中nodename由RunKubelet设置:

// RunKubelet is responsible for setting up and running a kubelet.  It is used in three different applications:
//   1 Integration tests
//   2 Kubelet binary
//   3 Standalone 'kubernetes' binary
// Eventually, #2 will be replaced with instances of #3
func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, runOnce bool) error {
    hostname, err := nodeutil.GetHostname(kubeServer.HostnameOverride)
=> os.Hostname():
1. uname -m 如果有的话,
2. else: cat /proc/sys/kernel/hostname