Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
270 changes: 243 additions & 27 deletions components/kubeadm/action.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 15 additions & 2 deletions components/kubeadm/action.proto
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ message Kubelet { // TODO: move to node package
NodeAuthInfo bootstrap_auth_info = 1;
map<string, string> node_labels = 2;
string node_ip = 3;
// List of taints to assign using the kubelet flag, in the format "key=value:effect"
// List of taints to assign using the kubelet flag
repeated Taint register_with_taints = 4;
}

Expand All @@ -47,4 +47,17 @@ message KubeadmNodeJoinSpec {

message KubeadmNodeJoinStatus {

}
}

message KubeadmNodeReset {
api.Metadata metadata = 1;

KubeadmNodeResetSpec spec = 2;

KubeadmNodeResetStatus status = 3;
}


message KubeadmNodeResetSpec {}

message KubeadmNodeResetStatus {}
2 changes: 2 additions & 0 deletions components/kubeadm/redact.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package kubeadm

func (x *KubeadmNodeReset) Redact() {}

func (x *KubeadmNodeJoin) Redact() {
if x == nil {
return
Expand Down
41 changes: 41 additions & 0 deletions components/kubeadm/reset.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package kubeadm

import (
"fmt"
"os"

"github.com/Azure/AKSFlexNode/pkg/config"
)

// kubernetesDirs are directories created during a kubeadm join that must be
// removed to fully reset the node. kubeadm reset cleans most of these, but
// may leave some behind depending on the runtime state.
//
// ref: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-reset/
var kubernetesDirs = []string{
config.KubeletRoot, // /var/lib/kubelet
config.KubernetesConfigDir, // /etc/kubernetes — config, PKI, manifests
config.DefaultCNIConfigDir, // /etc/cni/net.d — CNI configuration written during join
config.KubernetesRunDir, // /var/run/kubernetes — runtime sockets and PID files
config.CNIStateDir, // /var/lib/cni — CNI state data
}

// RemoveKubernetesDirs removes directories created during a kubeadm join.
// Removal is best-effort across all paths: every directory is attempted
// even if earlier ones fail. The first error encountered is returned.
//
// FIXME: find a better place to put this function for reusing with kubelet component
func RemoveKubernetesDirs() error {
var errs []error
for _, dir := range kubernetesDirs {
if err := os.RemoveAll(dir); err != nil {
errs = append(errs, fmt.Errorf("remove %s: %w", dir, err))
}
}

if len(errs) > 0 {
return fmt.Errorf("cleanup kubernetes directories: %w", errs[0])
}

return nil
}
4 changes: 4 additions & 0 deletions components/kubeadm/v20260301/exports.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,8 @@ func init() {
newNodeJoinAction,
&kubeadm.KubeadmNodeJoin{},
)
actions.MustRegister(
newNodeResetAction,
&kubeadm.KubeadmNodeReset{},
)
}
Loading
Loading