No. 10 - K-th Node from End

No. 10 - K-th Node from End


Problem: Get the K th node from end of a linked list. It counts from 1 here, so the 1 st node from end is the tail of list. 

For instance, given a linked list with 6 nodes, whose value are 1, 2, 3, 4, 5, 6, its 3 rd node from end is the node with value 4.

A node in the list is defined as:

struct ListNode
{
     int       m_nValue;
    ListNode* m_pNext;
};

Analysis: In a list with n nodes, its k th node from end should be the (n-k+1) th node from its head. Therefore, if we know the number of nodes n in a list, we can get the required node with n-k+1 steps from its head. How to get the number n? It is easy if we scan the whole list from beginning to end.

The solution above needs to scan a list twice: We get the total number of nodes with the first scan, and reach the k th node from end with the second scan. Unfortunately, interviewers usually expect a solution which only scans a list once.

We have a better solution to get the k th node from end with two pointers. Firstly we move a pointer (denoted as P1) k-1 steps beginning from the head of a list. And then we move another pointer (denoted as P2) beginning from the head, and continue moving the P1 forward at same speed. Since the distance of these two pointers is always k-1, P2 reaches the k th node from end when P1 reaches the tail of a list. It scans a list only once, and it is more efficient than the previous solution.


It simulates the process to get the 3 rd node from end of a list with 6 nodes in Figure 1. We firstly move P1 2 steps (2=3-1) to reach the 3 rd node (Figure 1-a). Then P2 points to the head of a list (Figure 1-b). We move two pointers at the same speed, when the P1 reaches the tail, what P2 points is the 3 rd node from end (Figure 1-c).

The sample code of the solutions with two pointers is shown below:

ListNode* FindKthToTail(ListNode* pListHead,  unsigned  int k)
{
     if(pListHead == NULL || k == 0)
         return NULL;

    ListNode *pAhead = pListHead;
    ListNode *pBehind = NULL;

     for( unsigned  int i = 0; i < k - 1; ++ i)
    {
         if(pAhead->m_pNext != NULL)
            pAhead = pAhead->m_pNext;
         else
        {
             return NULL;
        }
    }

    pBehind = pListHead;
     while(pAhead->m_pNext != NULL)
    {
        pAhead = pAhead->m_pNext;
        pBehind = pBehind->m_pNext;
    }

     return pBehind;
}

The author Harry He owns all the rights of this post. If you are going to use part of or the whole of this ariticle in your blog or webpages,  please add a reference to  http://codercareer.blogspot.com/. If you are going to use it in your books, please contact me (zhedahht@gmail.com) . Thanks.

nvidia@nvidia-desktop:~$ sudo systemctl status docker cri-dockerd # 确保cri-dockerd已安装(Kubernetes 1.24+必需) if ! command -v cri-dockerd &> /dev/null; then Unit cri-dockerd.service could not be found. ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-12-08 14:21:01 CST; 10s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 307670 (dockerd) Tasks: 12 Memory: 32.0M CGroup: /system.slice/docker.service └─307670 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.905384514+08:00" level=info msg="Starting up" 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.907450939+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming system> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.933499466+08:00" level=info msg="[graphdriver] trying configured driver: overlay> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.950999544+08:00" level=info msg="Loading containers: start." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.068395372+08:00" level=info msg="Default bridge (docker0) is assigned with an IP> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.119938208+08:00" level=info msg="Loading containers: done." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136753856+08:00" level=info msg="Docker daemon" commit="26.1.3-0ubuntu1~20.04.1"> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136876237+08:00" level=info msg="Daemon has completed initialization" 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.175939143+08:00" level=info msg="API listen on /run/docker.sock" 12月 08 14:21:01 nvidia-desktop systemd[1]: Started Docker Application Container Engine. ...skipping... Unit cri-dockerd.service could not be found. ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-12-08 14:21:01 CST; 10s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 307670 (dockerd) Tasks: 12 Memory: 32.0M CGroup: /system.slice/docker.service └─307670 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.905384514+08:00" level=info msg="Starting up" 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.907450939+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming system> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.933499466+08:00" level=info msg="[graphdriver] trying configured driver: overlay> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.950999544+08:00" level=info msg="Loading containers: start." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.068395372+08:00" level=info msg="Default bridge (docker0) is assigned with an IP> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.119938208+08:00" level=info msg="Loading containers: done." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136753856+08:00" level=info msg="Docker daemon" commit="26.1.3-0ubuntu1~20.04.1"> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136876237+08:00" level=info msg="Daemon has completed initialization" 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.175939143+08:00" level=info msg="API listen on /run/docker.sock" 12月 08 14:21:01 nvidia-desktop systemd[1]: Started Docker Application Container Engine. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ...skipping... ~ Unit cri-dockerd.service could not be found. ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-12-08 14:21:01 CST; 10s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 307670 (dockerd) Tasks: 12 Memory: 32.0M CGroup: /system.slice/docker.service └─307670 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.905384514+08:00" level=info msg="Starting up" 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.907450939+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming system> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.933499466+08:00" level=info msg="[graphdriver] trying configured driver: overlay> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.950999544+08:00" level=info msg="Loading containers: start." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.068395372+08:00" level=info msg="Default bridge (docker0) is assigned with an IP> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.119938208+08:00" level=info msg="Loading containers: done." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136753856+08:00" level=info msg="Docker daemon" commit="26.1.3-0ubuntu1~20.04.1"> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136876237+08:00" level=info msg="Daemon has completed initialization" 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.175939143+08:00" level=info msg="API listen on /run/docker.sock" 12月 08 14:21:01 nvidia-desktop systemd[1]: Started Docker Application Container Engine. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ...skipping... ~ Unit cri-dockerd.service could not be found. ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-12-08 14:21:01 CST; 10s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 307670 (dockerd) Tasks: 12 Memory: 32.0M CGroup: /system.slice/docker.service └─307670 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.905384514+08:00" level=info msg="Starting up" 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.907450939+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming system> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.933499466+08:00" level=info msg="[graphdriver] trying configured driver: overlay> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.950999544+08:00" level=info msg="Loading containers: start." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.068395372+08:00" level=info msg="Default bridge (docker0) is assigned with an IP> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.119938208+08:00" level=info msg="Loading containers: done." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136753856+08:00" level=info msg="Docker daemon" commit="26.1.3-0ubuntu1~20.04.1"> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136876237+08:00" level=info msg="Daemon has completed initialization" 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.175939143+08:00" level=info msg="API listen on /run/docker.sock" 12月 08 14:21:01 nvidia-desktop systemd[1]: Started Docker Application Container Engine. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! command -v cri-dockerd &> /dev/null; then wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd_0.3.4.3-0.ubuntu-jammy_amd64.deb sudo dpkg -i cri-dockerd_0.3.4.3-0.ubuntu-jammy_amd64.deb fi # 重启容器运行时 sudo systemctl restart docker cri-dockerd /bin/bash: -c: line 0: syntax error near unexpected token `then' /bin/bash: -c: line 0: ` command -v cri-dockerd &> /dev/null; then' !done (press RETURN) ...skipping... ~ Unit cri-dockerd.service could not be found. ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2025-12-08 14:21:01 CST; 10s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 307670 (dockerd) Tasks: 12 Memory: 32.0M CGroup: /system.slice/docker.service └─307670 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.905384514+08:00" level=info msg="Starting up" 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.907450939+08:00" level=info msg="detected 127.0.0.53 nameserver, assuming system> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.933499466+08:00" level=info msg="[graphdriver] trying configured driver: overlay> 12月 08 14:21:00 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:00.950999544+08:00" level=info msg="Loading containers: start." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.068395372+08:00" level=info msg="Default bridge (docker0) is assigned with an IP> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.119938208+08:00" level=info msg="Loading containers: done." 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136753856+08:00" level=info msg="Docker daemon" commit="26.1.3-0ubuntu1~20.04.1"> 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.136876237+08:00" level=info msg="Daemon has completed initialization" 12月 08 14:21:01 nvidia-desktop dockerd[307670]: time="2025-12-08T14:21:01.175939143+08:00" level=info msg="API listen on /run/docker.sock" 12月 08 14:21:01 nvidia-desktop systemd[1]: Started Docker Application Container Engine. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ...skipping... SUMMARY OF LESS COMMANDS Commands marked with * may be preceded by a number, N. Notes in parentheses indicate the behavior if N is given. A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K. h H Display this help. q :q Q :Q ZZ Exit. --------------------------------------------------------------------------- MOVING e ^E j ^N CR * Forward one line (or N lines). y ^Y k ^K ^P * Backward one line (or N lines). f ^F ^V SPACE * Forward one window (or N lines). b ^B ESC-v * Backward one window (or N lines). z * Forward one window (and set window to N). w * Backward one window (and set window to N). ESC-SPACE * Forward one window, but don't stop at end-of-file. d ^D * Forward one half-window (and set half-window to N). u ^U * Backward one half-window (and set half-window to N). ESC-) RightArrow * Right one half screen width (or N positions). ESC-( LeftArrow * Left one half screen width (or N positions). ESC-} ^RightArrow Right to last column displayed. ESC-{ ^LeftArrow Left to first column. F Forward forever; like "tail -f". ESC-F Like F but stop when search pattern is found. r ^R ^L Repaint screen. R Repaint screen, discarding buffered input. --------------------------------------------------- Default "window" is the screen height. Default "half-window" is half of the screen height. --------------------------------------------------------------------------- SEARCHING /pattern * Search forward for (N-th) matching line. ?pattern * Search backward for (N-th) matching line. n * Repeat previous search (for N-th occurrence). N * Repeat previous search in reverse direction. ESC-n * Repeat previous search, spanning files. ESC-N * Repeat previous search, reverse dir. & spanning files. ESC-u Undo (toggle) search highlighting. &pattern * Display only matching lines --------------------------------------------------- A search pattern may begin with one or more of: ^N or ! Search for NON-matching lines. ^E or * Search multiple files (pass thru END OF FILE). ^F or @ Start search at FIRST file (for /) or last file (for ?). ^K Highlight matches, but don't move (KEEP position). ^R Don't use REGULAR EXPRESSIONS. --------------------------------------------------------------------------- JUMPING g < ESC-< * Go to first line in file (or line N). G > ESC-> * Go to last line in file (or line N). p % * Go to beginning of file (or N percent into file). t * Go to the (N-th) next tag. T * Go to the (N-th) previous tag. { ( [ * Find close bracket } ) ]. } ) ] * Find open bracket { ( [. ESC-^F <c1> <c2> * Find close bracket <c2>. ESC-^B <c1> <c2> * Find open bracket <c1> --------------------------------------------------- Each "find close bracket" command goes forward to the close bracket matching the (N-th) open bracket in the top line. Each "find open bracket" command goes backward to the open bracket matching the (N-th) close bracket in the bottom line. m<letter> Mark the current top line with <letter>. M<letter> Mark the current bottom line with <letter>. '<letter> Go to a previously marked position. '' Go to the previous position. ^X^X Same as '. ESC-M<letter> Clear a mark. --------------------------------------------------- A mark is any upper-case or lower-case letter. Certain marks are predefined: ^ means beginning of the file $ means end of the file --------------------------------------------------------------------------- CHANGING FILES :e [file] Examine a new file. ^X^V Same as :e. :n * Examine the (N-th) next file from the command line. :p * Examine the (N-th) previous file from the command line. :x * Examine the first (or N-th) file from the command line. :d Delete the current file from the command line list. = ^G :f Print current file name. --------------------------------------------------------------------------- MISCELLANEOUS COMMANDS -<flag> Toggle a command line option [see OPTIONS below]. --<name> Toggle a command line option, by name. _<flag> Display the setting of a command line option. __<name> Display the setting of an option, by name. +cmd Execute the less cmd each time a new file is examined. !command Execute the shell command with $SHELL. |Xcommand Pipe file between current pos & mark X to shell command. s file Save input to a file. v Edit the current file with $VISUAL or $EDITOR. V Print version number of "less". --------------------------------------------------------------------------- OPTIONS Most options may be changed either on the command line, or from within less by using the - or -- command. Options may be given in one of two forms: either a single character preceded by a -, or a name preceded by --. -? ........ --help Display help (from command line). -a ........ --search-skip-screen Search skips current screen. -A ........ --SEARCH-SKIP-SCREEN Search starts just after target line. -b [N] .... --buffers=[N] Number of buffers. -B ........ --auto-buffers Don't automatically allocate buffers for pipes. -c ........ --clear-screen Repaint by clearing rather than scrolling. -d ........ --dumb Dumb terminal. -D [xn.n] . --color=xn.n Set screen colors. (MS-DOS only) -e -E .... --quit-at-eof --QUIT-AT-EOF Quit at end of file. -f ........ --force Force open non-regular files. -F ........ --quit-if-one-screen Quit if entire file fits on first screen. -g ........ --hilite-search Highlight only last match for searches. -G ........ --HILITE-SEARCH Don't highlight any matches for searches. -h [N] .... --max-back-scroll=[N] Backward scroll limit. -i ........ --ignore-case Ignore case in searches that do not contain uppercase. -I ........ --IGNORE-CASE Ignore case in all searches. -j [N] .... --jump-target=[N] Screen position of target lines. -J ........ --status-column Display a status column at left edge of screen. -k [file] . --lesskey-file=[file] Use a lesskey file. -K ........ --quit-on-intr Exit less in response to ctrl-C. -L ........ --no-lessopen Ignore the LESSOPEN environment variable. -m -M .... --long-prompt --LONG-PROMPT Set prompt style. -n -N .... --line-numbers --LINE-NUMBERS Don't use line numbers. -o [file] . --log-file=[file] Copy to log file (standard input only). -O [file] . --LOG-FILE=[file] Copy to log file (unconditionally overwrite). [2]+ Stopped sudo systemctl status docker cri-dockerd nvidia@nvidia-desktop:~$ # 检查Docker的cgroup驱动 nvidia@nvidia-desktop:~$ docker info | grep -i cgroup Cgroup Driver: systemd Cgroup Version: 1 nvidia@nvidia-desktop:~$ nvidia@nvidia-desktop:~$ # 如果输出是`cgroupfs`,需要改为systemd(与kubelet默认一致) nvidia@nvidia-desktop:~$ sudo tee /etc/docker/daemon.json <<EOF > { > "exec-opts": ["native.cgroupdriver=systemd"] > } > EOF { "exec-opts": ["native.cgroupdriver=systemd"] } nvidia@nvidia-desktop:~$ nvidia@nvidia-desktop:~$ # 应用配置并重启 nvidia@nvidia-desktop:~$ sudo systemctl restart docker nvidia@nvidia-desktop:~$ sudo kubeadm join 192.168.255.178:6443 \ > --token 7kaxfs.m1xlw2b4lloj20h5 \ > --discovery-token-ca-cert-hash sha256:da23339b60f174e254da99411e5799c83e2cc2e103e65dfffececca06ca8d366 \ > --cri-socket unix:///var/run/cri-dockerd.sock \ > --v=5 # 启用详细日志 I1208 14:21:46.917600 313253 join.go:412] [preflight] found NodeName empty; using OS hostname as NodeName [preflight] Running pre-flight checks I1208 14:21:46.917833 313253 preflight.go:93] [preflight] Running general checks I1208 14:21:46.921054 313253 checks.go:280] validating the existence of file /etc/kubernetes/kubelet.conf I1208 14:21:46.921089 313253 checks.go:280] validating the existence of file /etc/kubernetes/bootstrap-kubelet.conf I1208 14:21:46.921403 313253 checks.go:104] validating the container runtime I1208 14:21:46.954045 313253 checks.go:639] validating whether swap is enabled or not [WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet I1208 14:21:46.954320 313253 checks.go:370] validating the presence of executable crictl I1208 14:21:46.954383 313253 checks.go:370] validating the presence of executable conntrack I1208 14:21:46.954417 313253 checks.go:370] validating the presence of executable ip I1208 14:21:46.954460 313253 checks.go:370] validating the presence of executable iptables I1208 14:21:46.954497 313253 checks.go:370] validating the presence of executable mount I1208 14:21:46.954595 313253 checks.go:370] validating the presence of executable nsenter I1208 14:21:46.954641 313253 checks.go:370] validating the presence of executable ethtool I1208 14:21:46.954669 313253 checks.go:370] validating the presence of executable tc I1208 14:21:46.954692 313253 checks.go:370] validating the presence of executable touch I1208 14:21:46.954747 313253 checks.go:516] running all checks I1208 14:21:46.965096 313253 checks.go:401] checking whether the given node name is valid and reachable using net.LookupHost I1208 14:21:46.965391 313253 checks.go:605] validating kubelet version I1208 14:21:47.033262 313253 checks.go:130] validating if the "kubelet" service is enabled and active I1208 14:21:47.049052 313253 checks.go:203] validating availability of port 10250 I1208 14:21:47.049411 313253 checks.go:280] validating the existence of file /etc/kubernetes/pki/ca.crt I1208 14:21:47.049542 313253 checks.go:430] validating if the connectivity type is via proxy or direct I1208 14:21:47.049633 313253 checks.go:329] validating the contents of file /proc/sys/net/bridge/bridge-nf-call-iptables I1208 14:21:47.049729 313253 checks.go:329] validating the contents of file /proc/sys/net/ipv4/ip_forward I1208 14:21:47.049780 313253 join.go:529] [preflight] Discovering cluster-info I1208 14:21:47.049822 313253 token.go:80] [discovery] Created cluster-info discovery client, requesting info from "192.168.255.178:6443" I1208 14:21:47.088223 313253 token.go:118] [discovery] Requesting info from "192.168.255.178:6443" again to validate TLS against the pinned public key I1208 14:21:47.124104 313253 token.go:135] [discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server "192.168.255.178:6443" I1208 14:21:47.124143 313253 discovery.go:52] [discovery] Using provided TLSBootstrapToken as authentication credentials for the join process I1208 14:21:47.124173 313253 join.go:543] [preflight] Fetching init configuration I1208 14:21:47.124187 313253 join.go:589] [preflight] Retrieving KubeConfig objects [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' I1208 14:21:47.151294 313253 kubelet.go:74] attempting to download the KubeletConfiguration from ConfigMap "kubelet-config" I1208 14:21:47.166584 313253 interface.go:432] Looking for default routes with IPv4 addresses I1208 14:21:47.166620 313253 interface.go:437] Default route transits interface "wlan0" I1208 14:21:47.167020 313253 interface.go:209] Interface wlan0 is up I1208 14:21:47.167131 313253 interface.go:257] Interface "wlan0" has 4 addresses :[192.168.255.72/24 2409:893d:45c:b5a1:1670:c8e4:2898:1e27/64 2409:893d:45c:b5a1:5f51:491e:9698:9815/64 fe80::417c:e3c1:2dd2:d8db/64]. I1208 14:21:47.167171 313253 interface.go:224] Checking addr 192.168.255.72/24. I1208 14:21:47.167190 313253 interface.go:231] IP found 192.168.255.72 I1208 14:21:47.167208 313253 interface.go:263] Found valid IPv4 address 192.168.255.72 for interface "wlan0". I1208 14:21:47.167218 313253 interface.go:443] Found active IP 192.168.255.72 I1208 14:21:47.172577 313253 preflight.go:104] [preflight] Running configuration dependant checks I1208 14:21:47.172634 313253 controlplaneprepare.go:225] [download-certs] Skipping certs download I1208 14:21:47.172665 313253 kubelet.go:121] [kubelet-start] writing bootstrap kubelet config file at /etc/kubernetes/bootstrap-kubelet.conf I1208 14:21:47.174216 313253 kubelet.go:136] [kubelet-start] writing CA certificate at /etc/kubernetes/pki/ca.crt I1208 14:21:47.175619 313253 kubelet.go:157] [kubelet-start] Checking for an existing Node in the cluster with name "nvidia-desktop" and status "Ready" I1208 14:21:47.186418 313253 kubelet.go:172] [kubelet-start] Stopping the kubelet [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap... [kubelet-check] Initial timeout of 40s passed. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
最新发布
12-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值