move sudo before bash -c everywhere we invoke kubeadms to ensure gets the correct path
parent
a7417989c5
commit
c6ebbd5736
|
|
@ -229,17 +229,14 @@ func (k *Bootstrapper) init(cfg config.ClusterConfig) error {
|
|||
defer cancel()
|
||||
kr, kw := io.Pipe()
|
||||
|
||||
// NOTE: The command must run with the a root shell to expand PATH to the
|
||||
// root PATH. On Debian 12 user PATH does not contain /usr/sbin which breaks
|
||||
// kubeadm since https://github.com/kubernetes/kubernetes/pull/129450.
|
||||
cmd := fmt.Sprintf(
|
||||
"env PATH=\"%s:$PATH\" kubeadm init --config %s %s --ignore-preflight-errors=%s",
|
||||
bsutil.BinRoot(cfg.KubernetesConfig.KubernetesVersion),
|
||||
"%s init --config %s %s --ignore-preflight-errors=%s",
|
||||
bsutil.KubeadmCmdWithPath(cfg.KubernetesConfig.KubernetesVersion),
|
||||
conf,
|
||||
extraFlags,
|
||||
strings.Join(ignore, ","),
|
||||
)
|
||||
c := exec.CommandContext(ctx, "sudo", "bash", "-c", cmd)
|
||||
c := exec.CommandContext(ctx, "sudo", "/bin/bash", "-c", cmd)
|
||||
|
||||
c.Stdout = kw
|
||||
c.Stderr = kw
|
||||
|
|
@ -661,7 +658,7 @@ func (k *Bootstrapper) restartPrimaryControlPlane(cfg config.ClusterConfig) erro
|
|||
return errors.Wrap(err, "cp")
|
||||
}
|
||||
|
||||
baseCmd := fmt.Sprintf("%s init", bsutil.InvokeKubeadm(cfg.KubernetesConfig.KubernetesVersion))
|
||||
baseCmd := fmt.Sprintf("%s init", bsutil.KubeadmCmdWithPath(cfg.KubernetesConfig.KubernetesVersion))
|
||||
cmds := []string{
|
||||
fmt.Sprintf("%s phase certs all --config %s", baseCmd, conf),
|
||||
fmt.Sprintf("%s phase kubeconfig all --config %s", baseCmd, conf),
|
||||
|
|
@ -672,10 +669,11 @@ func (k *Bootstrapper) restartPrimaryControlPlane(cfg config.ClusterConfig) erro
|
|||
|
||||
// Run commands one at a time so that it is easier to root cause failures.
|
||||
for _, c := range cmds {
|
||||
if _, err := k.c.RunCmd(exec.Command("/bin/bash", "-c", c)); err != nil {
|
||||
// c := exec.CommandContext(ctx, "sudo", "bash", "-c", cmd)
|
||||
if _, err := k.c.RunCmd(exec.Command("sudo", "/bin/bash", "-c", c)); err != nil {
|
||||
klog.Errorf("%s failed - will try once more: %v", c, err)
|
||||
|
||||
if _, err := k.c.RunCmd(exec.Command("/bin/bash", "-c", c)); err != nil {
|
||||
if _, err := k.c.RunCmd(exec.Command("sudo", "/bin/bash", "-c", c)); err != nil {
|
||||
return errors.Wrap(err, "run")
|
||||
}
|
||||
}
|
||||
|
|
@ -784,14 +782,14 @@ func (k *Bootstrapper) JoinCluster(cc config.ClusterConfig, n config.Node, joinC
|
|||
// GenerateToken creates a token and returns the appropriate kubeadm join command to run, or the already existing token
|
||||
func (k *Bootstrapper) GenerateToken(cc config.ClusterConfig) (string, error) {
|
||||
// Take that generated token and use it to get a kubeadm join command
|
||||
tokenCmd := exec.Command("/bin/bash", "-c", fmt.Sprintf("%s token create --print-join-command --ttl=0", bsutil.InvokeKubeadm(cc.KubernetesConfig.KubernetesVersion)))
|
||||
tokenCmd := exec.Command("sudo", "/bin/bash", "-c", fmt.Sprintf("%s token create --print-join-command --ttl=0", bsutil.KubeadmCmdWithPath(cc.KubernetesConfig.KubernetesVersion)))
|
||||
r, err := k.c.RunCmd(tokenCmd)
|
||||
if err != nil {
|
||||
return "", errors.Wrap(err, "generating join command")
|
||||
}
|
||||
|
||||
joinCmd := r.Stdout.String()
|
||||
joinCmd = strings.Replace(joinCmd, "kubeadm", bsutil.InvokeKubeadm(cc.KubernetesConfig.KubernetesVersion), 1)
|
||||
joinCmd = strings.Replace(joinCmd, "kubeadm", bsutil.KubeadmCmdWithPath(cc.KubernetesConfig.KubernetesVersion), 1)
|
||||
joinCmd = fmt.Sprintf("%s --ignore-preflight-errors=all", strings.TrimSpace(joinCmd))
|
||||
|
||||
// avoid "Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the 'criSocket' field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock" error
|
||||
|
|
@ -860,14 +858,14 @@ func (k *Bootstrapper) DeleteCluster(k8s config.KubernetesConfig) error {
|
|||
return errors.Wrap(err, "runtime")
|
||||
}
|
||||
|
||||
ka := bsutil.InvokeKubeadm(k8s.KubernetesVersion)
|
||||
ka := bsutil.KubeadmCmdWithPath(k8s.KubernetesVersion)
|
||||
sp := cr.SocketPath()
|
||||
cmd := fmt.Sprintf("%s reset --cri-socket %s --force", ka, sp)
|
||||
if ver.LT(semver.MustParse("1.11.0")) {
|
||||
cmd = fmt.Sprintf("%s reset --cri-socket %s", ka, sp)
|
||||
}
|
||||
|
||||
rr, derr := k.c.RunCmd(exec.Command("/bin/bash", "-c", cmd))
|
||||
rr, derr := k.c.RunCmd(exec.Command("sudo", "/bin/bash", "-c", cmd))
|
||||
if derr != nil {
|
||||
klog.Warningf("%s: %v", rr.Command(), err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,8 +149,8 @@ func teardown(cc config.ClusterConfig, name string) (*config.Node, error) {
|
|||
sp = "unix://" + sp
|
||||
}
|
||||
|
||||
cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf("KUBECONFIG=/var/lib/minikube/kubeconfig %s reset --force --ignore-preflight-errors=all --cri-socket=%s",
|
||||
bsutil.InvokeKubeadm(cc.KubernetesConfig.KubernetesVersion), sp))
|
||||
cmd := exec.Command("sudo", "/bin/bash", "-c", fmt.Sprintf("KUBECONFIG=/var/lib/minikube/kubeconfig %s reset --force --ignore-preflight-errors=all --cri-socket=%s",
|
||||
bsutil.KubeadmCmdWithPath(cc.KubernetesConfig.KubernetesVersion), sp))
|
||||
if _, kerr = r.RunCmd(cmd); kerr == nil {
|
||||
klog.Infof("successfully reset node %q", m)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ func joinCluster(starter Starter, cpBs bootstrapper.Bootstrapper, bs bootstrappe
|
|||
|
||||
// reset node to revert any changes made by previous kubeadm init/join
|
||||
klog.Infof("resetting %s node %q before attempting to rejoin cluster...", role, starter.Node.Name)
|
||||
if _, err := starter.Runner.RunCmd(exec.Command("/bin/bash", "-c", fmt.Sprintf("%s reset --force", bsutil.InvokeKubeadm(starter.Cfg.KubernetesConfig.KubernetesVersion)))); err != nil {
|
||||
if _, err := starter.Runner.RunCmd(exec.Command("sudo", "/bin/bash", "-c", fmt.Sprintf("%s reset --force", bsutil.KubeadmCmdWithPath(starter.Cfg.KubernetesConfig.KubernetesVersion)))); err != nil {
|
||||
klog.Infof("kubeadm reset failed, continuing anyway: %v", err)
|
||||
} else {
|
||||
klog.Infof("successfully reset %s node %q", role, starter.Node.Name)
|
||||
|
|
|
|||
Loading…
Reference in New Issue