Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
3306efd6
Commit
3306efd6
authored
Feb 22, 2019
by
pytimer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kubeadm: reduce the number of fetch configuration when reset
parent
bf3b5e55
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
38 deletions
+33
-38
BUILD
cmd/kubeadm/app/cmd/BUILD
+1
-0
reset.go
cmd/kubeadm/app/cmd/reset.go
+22
-28
reset_test.go
cmd/kubeadm/app/cmd/reset_test.go
+10
-10
No files found.
cmd/kubeadm/app/cmd/BUILD
View file @
3306efd6
...
...
@@ -84,6 +84,7 @@ go_test(
],
embed = [":go_default_library"],
deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/validation:go_default_library",
"//cmd/kubeadm/app/cmd/options:go_default_library",
...
...
cmd/kubeadm/app/cmd/reset.go
View file @
3306efd6
...
...
@@ -31,6 +31,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/klog"
kubeadmapi
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
kubeadmapiv1beta1
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
...
...
@@ -68,15 +69,20 @@ func NewCmdReset(in io.Reader, out io.Writer) *cobra.Command {
kubeadmutil
.
CheckErr
(
err
)
}
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
!=
nil
{
klog
.
Warningf
(
"[reset] Unable to fetch the kubeadm-config ConfigMap from cluster: %v"
,
err
)
}
if
criSocketPath
==
""
{
criSocketPath
,
err
=
resetDetectCRISocket
(
c
lient
)
criSocketPath
,
err
=
resetDetectCRISocket
(
c
fg
)
kubeadmutil
.
CheckErr
(
err
)
klog
.
V
(
1
)
.
Infof
(
"[reset] detected and using CRI socket: %s"
,
criSocketPath
)
}
r
,
err
:=
NewReset
(
in
,
ignorePreflightErrorsSet
,
forceReset
,
certsDir
,
criSocketPath
)
kubeadmutil
.
CheckErr
(
err
)
kubeadmutil
.
CheckErr
(
r
.
Run
(
out
,
client
))
kubeadmutil
.
CheckErr
(
r
.
Run
(
out
,
client
,
cfg
))
},
}
...
...
@@ -131,17 +137,19 @@ func NewReset(in io.Reader, ignorePreflightErrors sets.String, forceReset bool,
}
// Run reverts any changes made to this host by "kubeadm init" or "kubeadm join".
func
(
r
*
Reset
)
Run
(
out
io
.
Writer
,
client
clientset
.
Interface
)
error
{
func
(
r
*
Reset
)
Run
(
out
io
.
Writer
,
client
clientset
.
Interface
,
cfg
*
kubeadmapi
.
InitConfiguration
)
error
{
var
dirsToClean
[]
string
// Only clear etcd data when using local etcd.
etcdManifestPath
:=
filepath
.
Join
(
kubeadmconstants
.
KubernetesDir
,
kubeadmconstants
.
ManifestsSubDirName
,
"etcd.yaml"
)
klog
.
V
(
1
)
.
Infof
(
"[reset] checking for etcd config"
)
etcdDataDir
,
err
:=
getEtcdDataDir
(
etcdManifestPath
,
c
lient
)
etcdDataDir
,
err
:=
getEtcdDataDir
(
etcdManifestPath
,
c
fg
)
if
err
==
nil
{
dirsToClean
=
append
(
dirsToClean
,
etcdDataDir
)
if
err
:=
removeEtcdMember
(
client
);
err
!=
nil
{
klog
.
Warningf
(
"[reset] failed to remove etcd member: %v
\n
.Please manually remove this etcd member using etcdctl"
,
err
)
if
cfg
!=
nil
{
if
err
:=
etcdphase
.
RemoveStackedEtcdMemberFromCluster
(
client
,
cfg
);
err
!=
nil
{
klog
.
Warningf
(
"[reset] failed to remove etcd member: %v
\n
.Please manually remove this etcd member using etcdctl"
,
err
)
}
}
}
else
{
fmt
.
Println
(
"[reset] no etcd config found. Assuming external etcd"
)
...
...
@@ -209,25 +217,14 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
return
nil
}
func
removeEtcdMember
(
client
clientset
.
Interface
)
error
{
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
!=
nil
{
return
err
}
return
etcdphase
.
RemoveStackedEtcdMemberFromCluster
(
client
,
cfg
)
}
func
getEtcdDataDir
(
manifestPath
string
,
client
clientset
.
Interface
)
(
string
,
error
)
{
func
getEtcdDataDir
(
manifestPath
string
,
cfg
*
kubeadmapi
.
InitConfiguration
)
(
string
,
error
)
{
const
etcdVolumeName
=
"etcd-data"
var
dataDir
string
if
client
!=
nil
{
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
==
nil
&&
cfg
.
Etcd
.
Local
!=
nil
{
return
cfg
.
Etcd
.
Local
.
DataDir
,
nil
}
klog
.
Warningf
(
"[reset] Unable to fetch the kubeadm-config ConfigMap, using etcd pod spec as fallback: %v"
,
err
)
if
cfg
!=
nil
&&
cfg
.
Etcd
.
Local
!=
nil
{
return
cfg
.
Etcd
.
Local
.
DataDir
,
nil
}
klog
.
Warningln
(
"[reset] No kubeadm config, using etcd pod spec to get data directory"
)
etcdPod
,
err
:=
utilstaticpod
.
ReadStaticPodFromDisk
(
manifestPath
)
if
err
!=
nil
{
...
...
@@ -311,13 +308,10 @@ func resetConfigDir(configPathDir, pkiPathDir string) {
}
}
func
resetDetectCRISocket
(
client
clientset
.
Interface
)
(
string
,
error
)
{
if
client
!=
nil
{
// first try to connect to the cluster for the CRI socket
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
==
nil
{
return
cfg
.
NodeRegistration
.
CRISocket
,
nil
}
func
resetDetectCRISocket
(
cfg
*
kubeadmapi
.
InitConfiguration
)
(
string
,
error
)
{
if
cfg
!=
nil
{
// first try to get the CRI socket from the cluster configuration
return
cfg
.
NodeRegistration
.
CRISocket
,
nil
}
// if this fails, try to detect it
...
...
cmd/kubeadm/app/cmd/reset_test.go
View file @
3306efd6
...
...
@@ -25,7 +25,7 @@ import (
"github.com/lithammer/dedent"
clientsetfake
"k8s.io/client-go/kubernetes/fake
"
kubeadmapi
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm
"
kubeadmapiv1beta1
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
kubeadmconstants
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
...
...
@@ -275,38 +275,38 @@ func TestGetEtcdDataDir(t *testing.T) {
podYaml
string
expectErr
bool
writeManifest
bool
validC
lient
bool
validC
onfig
bool
}{
"non-existent file returns error"
:
{
expectErr
:
true
,
writeManifest
:
false
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
"return etcd data dir"
:
{
dataDir
:
"/path/to/etcd"
,
podYaml
:
etcdPod
,
expectErr
:
false
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
"invalid etcd pod"
:
{
podYaml
:
etcdPodInvalid
,
expectErr
:
true
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
"etcd pod spec without data volume"
:
{
podYaml
:
etcdPodWithoutDataVolume
,
expectErr
:
true
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
"kubeconfig file doesn't exist"
:
{
dataDir
:
"/path/to/etcd"
,
podYaml
:
etcdPod
,
expectErr
:
false
,
writeManifest
:
true
,
validC
lient
:
false
,
validC
onfig
:
false
,
},
}
...
...
@@ -325,9 +325,9 @@ func TestGetEtcdDataDir(t *testing.T) {
var
dataDir
string
var
err
error
if
test
.
validC
lient
{
c
lient
:=
clientsetfake
.
NewSimpleClientset
()
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
c
lient
)
if
test
.
validC
onfig
{
c
fg
:=
&
kubeadmapi
.
InitConfiguration
{}
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
c
fg
)
}
else
{
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
nil
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment