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
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
35 deletions
+30
-35
BUILD
cmd/kubeadm/app/cmd/BUILD
+1
-0
reset.go
cmd/kubeadm/app/cmd/reset.go
+19
-25
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(
...
@@ -84,6 +84,7 @@ go_test(
],
],
embed = [":go_default_library"],
embed = [":go_default_library"],
deps = [
deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/validation:go_default_library",
"//cmd/kubeadm/app/apis/kubeadm/validation:go_default_library",
"//cmd/kubeadm/app/cmd/options: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 (
...
@@ -31,6 +31,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/sets"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/klog"
"k8s.io/klog"
kubeadmapi
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
kubeadmapiv1beta1
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
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/apis/kubeadm/validation"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
...
@@ -68,15 +69,20 @@ func NewCmdReset(in io.Reader, out io.Writer) *cobra.Command {
...
@@ -68,15 +69,20 @@ func NewCmdReset(in io.Reader, out io.Writer) *cobra.Command {
kubeadmutil
.
CheckErr
(
err
)
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
==
""
{
if
criSocketPath
==
""
{
criSocketPath
,
err
=
resetDetectCRISocket
(
c
lient
)
criSocketPath
,
err
=
resetDetectCRISocket
(
c
fg
)
kubeadmutil
.
CheckErr
(
err
)
kubeadmutil
.
CheckErr
(
err
)
klog
.
V
(
1
)
.
Infof
(
"[reset] detected and using CRI socket: %s"
,
criSocketPath
)
klog
.
V
(
1
)
.
Infof
(
"[reset] detected and using CRI socket: %s"
,
criSocketPath
)
}
}
r
,
err
:=
NewReset
(
in
,
ignorePreflightErrorsSet
,
forceReset
,
certsDir
,
criSocketPath
)
r
,
err
:=
NewReset
(
in
,
ignorePreflightErrorsSet
,
forceReset
,
certsDir
,
criSocketPath
)
kubeadmutil
.
CheckErr
(
err
)
kubeadmutil
.
CheckErr
(
err
)
kubeadmutil
.
CheckErr
(
r
.
Run
(
out
,
client
))
kubeadmutil
.
CheckErr
(
r
.
Run
(
out
,
client
,
cfg
))
},
},
}
}
...
@@ -131,18 +137,20 @@ func NewReset(in io.Reader, ignorePreflightErrors sets.String, forceReset bool,
...
@@ -131,18 +137,20 @@ func NewReset(in io.Reader, ignorePreflightErrors sets.String, forceReset bool,
}
}
// Run reverts any changes made to this host by "kubeadm init" or "kubeadm join".
// 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
var
dirsToClean
[]
string
// Only clear etcd data when using local etcd.
// Only clear etcd data when using local etcd.
etcdManifestPath
:=
filepath
.
Join
(
kubeadmconstants
.
KubernetesDir
,
kubeadmconstants
.
ManifestsSubDirName
,
"etcd.yaml"
)
etcdManifestPath
:=
filepath
.
Join
(
kubeadmconstants
.
KubernetesDir
,
kubeadmconstants
.
ManifestsSubDirName
,
"etcd.yaml"
)
klog
.
V
(
1
)
.
Infof
(
"[reset] checking for etcd config"
)
klog
.
V
(
1
)
.
Infof
(
"[reset] checking for etcd config"
)
etcdDataDir
,
err
:=
getEtcdDataDir
(
etcdManifestPath
,
c
lient
)
etcdDataDir
,
err
:=
getEtcdDataDir
(
etcdManifestPath
,
c
fg
)
if
err
==
nil
{
if
err
==
nil
{
dirsToClean
=
append
(
dirsToClean
,
etcdDataDir
)
dirsToClean
=
append
(
dirsToClean
,
etcdDataDir
)
if
err
:=
removeEtcdMember
(
client
);
err
!=
nil
{
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
)
klog
.
Warningf
(
"[reset] failed to remove etcd member: %v
\n
.Please manually remove this etcd member using etcdctl"
,
err
)
}
}
}
}
else
{
}
else
{
fmt
.
Println
(
"[reset] no etcd config found. Assuming external etcd"
)
fmt
.
Println
(
"[reset] no etcd config found. Assuming external etcd"
)
fmt
.
Println
(
"[reset] please manually reset etcd to prevent further issues"
)
fmt
.
Println
(
"[reset] please manually reset etcd to prevent further issues"
)
...
@@ -209,25 +217,14 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
...
@@ -209,25 +217,14 @@ func (r *Reset) Run(out io.Writer, client clientset.Interface) error {
return
nil
return
nil
}
}
func
removeEtcdMember
(
client
clientset
.
Interface
)
error
{
func
getEtcdDataDir
(
manifestPath
string
,
cfg
*
kubeadmapi
.
InitConfiguration
)
(
string
,
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
)
{
const
etcdVolumeName
=
"etcd-data"
const
etcdVolumeName
=
"etcd-data"
var
dataDir
string
var
dataDir
string
if
client
!=
nil
{
if
cfg
!=
nil
&&
cfg
.
Etcd
.
Local
!=
nil
{
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
==
nil
&&
cfg
.
Etcd
.
Local
!=
nil
{
return
cfg
.
Etcd
.
Local
.
DataDir
,
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
)
klog
.
Warningln
(
"[reset] No kubeadm config, using etcd pod spec to get data directory"
)
}
etcdPod
,
err
:=
utilstaticpod
.
ReadStaticPodFromDisk
(
manifestPath
)
etcdPod
,
err
:=
utilstaticpod
.
ReadStaticPodFromDisk
(
manifestPath
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -311,14 +308,11 @@ func resetConfigDir(configPathDir, pkiPathDir string) {
...
@@ -311,14 +308,11 @@ func resetConfigDir(configPathDir, pkiPathDir string) {
}
}
}
}
func
resetDetectCRISocket
(
client
clientset
.
Interface
)
(
string
,
error
)
{
func
resetDetectCRISocket
(
cfg
*
kubeadmapi
.
InitConfiguration
)
(
string
,
error
)
{
if
client
!=
nil
{
if
cfg
!=
nil
{
// first try to connect to the cluster for the CRI socket
// first try to get the CRI socket from the cluster configuration
cfg
,
err
:=
configutil
.
FetchInitConfigurationFromCluster
(
client
,
os
.
Stdout
,
"reset"
,
false
)
if
err
==
nil
{
return
cfg
.
NodeRegistration
.
CRISocket
,
nil
return
cfg
.
NodeRegistration
.
CRISocket
,
nil
}
}
}
// if this fails, try to detect it
// if this fails, try to detect it
return
utilruntime
.
DetectCRISocket
()
return
utilruntime
.
DetectCRISocket
()
...
...
cmd/kubeadm/app/cmd/reset_test.go
View file @
3306efd6
...
@@ -25,7 +25,7 @@ import (
...
@@ -25,7 +25,7 @@ import (
"github.com/lithammer/dedent"
"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"
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/apis/kubeadm/validation"
kubeadmconstants
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
kubeadmconstants
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
...
@@ -275,38 +275,38 @@ func TestGetEtcdDataDir(t *testing.T) {
...
@@ -275,38 +275,38 @@ func TestGetEtcdDataDir(t *testing.T) {
podYaml
string
podYaml
string
expectErr
bool
expectErr
bool
writeManifest
bool
writeManifest
bool
validC
lient
bool
validC
onfig
bool
}{
}{
"non-existent file returns error"
:
{
"non-existent file returns error"
:
{
expectErr
:
true
,
expectErr
:
true
,
writeManifest
:
false
,
writeManifest
:
false
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
},
"return etcd data dir"
:
{
"return etcd data dir"
:
{
dataDir
:
"/path/to/etcd"
,
dataDir
:
"/path/to/etcd"
,
podYaml
:
etcdPod
,
podYaml
:
etcdPod
,
expectErr
:
false
,
expectErr
:
false
,
writeManifest
:
true
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
},
"invalid etcd pod"
:
{
"invalid etcd pod"
:
{
podYaml
:
etcdPodInvalid
,
podYaml
:
etcdPodInvalid
,
expectErr
:
true
,
expectErr
:
true
,
writeManifest
:
true
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
},
"etcd pod spec without data volume"
:
{
"etcd pod spec without data volume"
:
{
podYaml
:
etcdPodWithoutDataVolume
,
podYaml
:
etcdPodWithoutDataVolume
,
expectErr
:
true
,
expectErr
:
true
,
writeManifest
:
true
,
writeManifest
:
true
,
validC
lient
:
true
,
validC
onfig
:
true
,
},
},
"kubeconfig file doesn't exist"
:
{
"kubeconfig file doesn't exist"
:
{
dataDir
:
"/path/to/etcd"
,
dataDir
:
"/path/to/etcd"
,
podYaml
:
etcdPod
,
podYaml
:
etcdPod
,
expectErr
:
false
,
expectErr
:
false
,
writeManifest
:
true
,
writeManifest
:
true
,
validC
lient
:
false
,
validC
onfig
:
false
,
},
},
}
}
...
@@ -325,9 +325,9 @@ func TestGetEtcdDataDir(t *testing.T) {
...
@@ -325,9 +325,9 @@ func TestGetEtcdDataDir(t *testing.T) {
var
dataDir
string
var
dataDir
string
var
err
error
var
err
error
if
test
.
validC
lient
{
if
test
.
validC
onfig
{
c
lient
:=
clientsetfake
.
NewSimpleClientset
()
c
fg
:=
&
kubeadmapi
.
InitConfiguration
{}
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
c
lient
)
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
c
fg
)
}
else
{
}
else
{
dataDir
,
err
=
getEtcdDataDir
(
manifestPath
,
nil
)
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