Description
What happened?
I have installed a k8s cluster for apiserver load balancing based on kube-vip. When I expanded the cluster nodes, the expansion failed
The following expansion command is executed:
ansible-playbook -i /conf/hosts.yml -b --become-user root -e "@/conf/group_vars.yml" /kubespray/scale.yml -vvv --limit=cluster-3pu8o4k-node02
The following errors occurred:
TASK [kubernetes/kubeadm : Join to cluster with ignores] ***********************
task path: /kubespray/roles/kubernetes/kubeadm/tasks/main.yml:101
fatal: [cluster-3pu8o4k-node02]: FAILED! => {
"changed": false,
"cmd": [
"timeout",
"-k",
"120s",
"120s",
"/usr/local/bin/kubeadm",
"join",
"--config",
"/etc/kubernetes/kubeadm-client.conf",
"--ignore-preflight-errors=all",
"--skip-phases="
],
"delta": "0:00:40.629748",
"end": "2025-04-15 17:07:40.060799",
"invocation": {
"module_args": {
"_raw_params": "timeout -k 120s 120s /usr/local/bin/kubeadm join --config /etc/kubernetes/kubeadm-client.conf --ignore-preflight-errors=all --skip-phases=",
"_uses_shell": false,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true
}
},
"msg": "non-zero return code",
"rc": 1,
"start": "2025-04-15 17:06:59.431051",
"stderr": "\t[WARNING FileExisting-socat]: socat not found in system path\n\t[WARNING FileExisting-tc]: tc not found in system path\nerror execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Get \"https://lb-apiserver.kubernetes.local:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout=10s\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)\nTo see the stack trace of this error execute with --v=5 or higher",
"stderr_lines": [
"\t[WARNING FileExisting-socat]: socat not found in system path",
"\t[WARNING FileExisting-tc]: tc not found in system path",
"error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Get \"https://lb-apiserver.kubernetes.local:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout=10s\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)",
"To see the stack trace of this error execute with --v=5 or higher"
],
"stdout": "[preflight] Running pre-flight checks\n[preflight] Reading configuration from the cluster...\n[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'",
"stdout_lines": [
"[preflight] Running pre-flight checks",
"[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'"
]
}
What did you expect to happen?
Successfully added the node
How can we reproduce it (as minimally and precisely as possible)?
- Install kube-vip when creating a cluster
- Add the node node
OS
Ubuntu 22
Version of Ansible
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
Version of Python
Python 3.10.13
Version of Kubespray (commit)
v2.25.0
Network plugin used
calico
Full inventory with variables
ansible-playbook -i /conf/hosts.yml -b --become-user root -e "@/conf/group_vars.yml" /kubespray/scale.yml -vvv --limit=cluster-3pu8o4k-node02
Command used to invoke ansible
None
Output of ansible run
None
Anything else we need to know
No response