Skip to content

Commit

Permalink
Merge pull request #2200 from pixiake/master
Browse files Browse the repository at this point in the history
optimize etcd manager logic
  • Loading branch information
ks-ci-bot committed Apr 8, 2024
2 parents d8018e0 + b2ea59a commit fa78225
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 51 deletions.
2 changes: 1 addition & 1 deletion cmd/kk/apis/kubekey/v1alpha2/default.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const (
DefaultDNSDomain = "cluster.local"
DefaultArch = "amd64"
DefaultSSHTimeout = 30
DefaultEtcdVersion = "v3.5.6"
DefaultEtcdVersion = "v3.5.13"
DefaultEtcdPort = "2379"
DefaultDockerVersion = "24.0.9"
DefaultCriDockerdVersion = "0.3.10"
Expand Down
3 changes: 3 additions & 0 deletions cmd/kk/cmd/upgrade/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ type UpgradeOptions struct {
KubeSphere string
SkipPullImages bool
SkipDependencyCheck bool
EtcdUpgrade bool
DownloadCmd string
Artifact string
}
Expand Down Expand Up @@ -90,6 +91,7 @@ func (o *UpgradeOptions) Run() error {
SkipConfirmCheck: o.CommonOptions.SkipConfirmCheck,
Artifact: o.Artifact,
SkipDependencyCheck: o.SkipDependencyCheck,
EtcdUpgrade: o.EtcdUpgrade,
}
return pipelines.UpgradeCluster(arg, o.DownloadCmd)
}
Expand All @@ -103,6 +105,7 @@ func (o *UpgradeOptions) AddFlags(cmd *cobra.Command) {
`The user defined command to download the necessary binary files. The first param '%s' is output path, the second param '%s', is the URL`)
cmd.Flags().StringVarP(&o.Artifact, "artifact", "a", "", "Path to a KubeKey artifact")
cmd.Flags().BoolVarP(&o.SkipDependencyCheck, "skip-dependency-check", "", false, "Skip kubernetes and kubesphere dependency version check")
cmd.Flags().BoolVarP(&o.EtcdUpgrade, "with-etcd", "", false, "Upgrade etcd")
}

func completionSetting(cmd *cobra.Command) (err error) {
Expand Down
1 change: 1 addition & 0 deletions cmd/kk/pkg/common/kube_runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type Argument struct {
DeleteCRI bool
Role string
Type string
EtcdUpgrade bool
}

func NewKubeRuntime(flag string, arg Argument) (*KubeRuntime, error) {
Expand Down
9 changes: 6 additions & 3 deletions cmd/kk/pkg/etcd/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,15 +157,17 @@ func (i *InstallETCDBinaryModule) Init() {
Name: "InstallETCDBinary",
Desc: "Install etcd using binary",
Hosts: i.Runtime.GetHostsByRole(common.ETCD),
Prepare: new(InstallOrUpgradeETCD),
Action: new(InstallETCDBinary),
Parallel: true,
Retry: 1,
}

generateETCDService := &task.RemoteTask{
Name: "GenerateETCDService",
Desc: "Generate etcd service",
Hosts: i.Runtime.GetHostsByRole(common.ETCD),
Name: "GenerateETCDService",
Desc: "Generate etcd service",
Hosts: i.Runtime.GetHostsByRole(common.ETCD),
Prepare: new(InstallOrUpgradeETCD),
Action: &action.Template{
Template: templates.ETCDService,
Dst: "/etc/systemd/system/etcd.service",
Expand Down Expand Up @@ -334,6 +336,7 @@ func handleExistCluster(c *ConfigureModule) []task.Interface {
Name: "AllRefreshETCDConfig",
Desc: "Refresh etcd.env config on all etcd",
Hosts: c.Runtime.GetHostsByRole(common.ETCD),
Prepare: &InstallOrUpgradeETCD{Not: false},
Action: new(RefreshConfig),
Parallel: false,
}
Expand Down
16 changes: 16 additions & 0 deletions cmd/kk/pkg/etcd/prepares.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,19 @@ func (n *NodeETCDExist) PreCheck(runtime connector.Runtime) (bool, error) {
}
return false, errors.New("get etcd node status by host label failed")
}

type InstallOrUpgradeETCD struct {
common.KubePrepare
Not bool
}

func (n *InstallOrUpgradeETCD) PreCheck(runtime connector.Runtime) (bool, error) {
host := runtime.RemoteHost()
if v, ok := host.GetCache().GetMustBool(common.ETCDExist); ok {
if !v || n.KubeConf.Arg.EtcdUpgrade {
return !n.Not, nil
}
return n.Not, nil
}
return false, errors.New("get etcd node status by host label failed")
}
19 changes: 18 additions & 1 deletion cmd/kk/pkg/etcd/tasks.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,17 @@ func (g *GenerateConfig) Execute(runtime connector.Runtime) error {
if v, ok := g.PipelineCache.Get(common.ETCDCluster); ok {
cluster := v.(*EtcdCluster)

cluster.peerAddresses = append(cluster.peerAddresses, fmt.Sprintf("%s=https://%s:2380", etcdName, host.GetInternalIPv4Address()))
peerAddressesMap := make(map[string]string, len(cluster.peerAddresses))
for _, v := range cluster.peerAddresses {
peerAddressesMap[v] = v
}

newPeerAddress := fmt.Sprintf("%s=https://%s:2380", etcdName, host.GetInternalIPv4Address())

if _, ok := peerAddressesMap[newPeerAddress]; !ok {
cluster.peerAddresses = append(cluster.peerAddresses, newPeerAddress)
}

g.PipelineCache.Set(common.ETCDCluster, cluster)

if !cluster.clusterExist {
Expand Down Expand Up @@ -276,8 +286,15 @@ func (r *RefreshConfig) Execute(runtime connector.Runtime) error {
return err
}
}

// After refresh config for etcd, it is necessary to restart etcd.
if _, err := runtime.GetRunner().SudoCmd("systemctl daemon-reload && systemctl restart etcd && systemctl enable etcd", true); err != nil {
return errors.Wrap(errors.WithStack(err), "start etcd failed")
}

return nil
}

return errors.New("get etcd cluster status by pipeline cache failed")
}

Expand Down
10 changes: 9 additions & 1 deletion cmd/kk/pkg/pipelines/upgrade_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ package pipelines
import (
"fmt"

kubekeyapiv1alpha2 "github.com/kubesphere/kubekey/v3/cmd/kk/apis/kubekey/v1alpha2"
"github.com/kubesphere/kubekey/v3/cmd/kk/pkg/etcd"

"github.com/kubesphere/kubekey/v3/cmd/kk/pkg/binaries"

"github.com/kubesphere/kubekey/v3/cmd/kk/pkg/container"
Expand All @@ -40,7 +43,7 @@ import (

func NewUpgradeClusterPipeline(runtime *common.KubeRuntime) error {
noArtifact := runtime.Arg.Artifact == ""

skipUpgradeETCD := (runtime.Cluster.Etcd.Type != kubekeyapiv1alpha2.KubeKey) || (runtime.Arg.EtcdUpgrade == false)
m := []module.Module{
&precheck.GreetingsModule{},
&precheck.NodePreCheckModule{},
Expand All @@ -49,6 +52,11 @@ func NewUpgradeClusterPipeline(runtime *common.KubeRuntime) error {
&artifact.UnArchiveModule{Skip: noArtifact},
&binaries.NodeBinariesModule{},
&container.InstallCriDockerdModule{Skip: runtime.Cluster.Kubernetes.ContainerManager != "docker"},
&etcd.PreCheckModule{Skip: skipUpgradeETCD},
&etcd.CertsModule{Skip: skipUpgradeETCD},
&etcd.InstallETCDBinaryModule{Skip: skipUpgradeETCD},
&etcd.ConfigureModule{Skip: skipUpgradeETCD},
&etcd.BackupModule{Skip: skipUpgradeETCD},
&kubernetes.SetUpgradePlanModule{Step: kubernetes.ToV121},
&kubernetes.ProgressiveUpgradeModule{Step: kubernetes.ToV121},
&loadbalancer.HaproxyModule{Skip: !runtime.Cluster.ControlPlaneEndpoint.IsInternalLBEnabled()},
Expand Down
2 changes: 2 additions & 0 deletions hack/sync-components.sh
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ if [ $ETCD_VERSION ]; then
curl -L -o binaries/etcd/$ETCD_VERSION/$arch/etcd-$ETCD_VERSION-linux-$arch.tar.gz \
https://github.com/coreos/etcd/releases/download/$ETCD_VERSION/etcd-$ETCD_VERSION-linux-$arch.tar.gz

sha256sum binaries/etcd/$ETCD_VERSION/$arch/etcd-$ETCD_VERSION-linux-$arch.tar.gz

qsctl cp binaries/etcd/$ETCD_VERSION/$arch/etcd-$ETCD_VERSION-linux-$arch.tar.gz \
qs://kubernetes-release/etcd/release/download/$ETCD_VERSION/etcd-$ETCD_VERSION-linux-$arch.tar.gz \
-c qsctl-config.yaml
Expand Down
48 changes: 3 additions & 45 deletions version/components.json
Original file line number Diff line number Diff line change
Expand Up @@ -830,53 +830,11 @@
"etcd": {
"amd64": {
"v3.4.13": "2ac029e47bab752dacdb7b30032f230f49e2f457cbc32e8f555c2210bb5ff107",
"v3.4.14": "f57141d45ceb727a84e2f0bcd0b98934ea2ad2b59009be90d901710861601651",
"v3.4.15": "3bd00836ea328db89ecba3ed2155293934c0d09e64b53d6c9dfc0a256e724b81",
"v3.4.16": "2e2d5b3572e077e7641193ed07b4929b0eaf0dc2f9463e9b677765528acafb89",
"v3.4.17": "10df17c03fd2f0b3cc3354f73d0b9573af2d3582eff3b210e43e380417b4c644",
"v3.4.18": "495eb67d39d0f595aeb78d438e4634296b24ed6d81a7a364b2e58a242956a3b8",
"v3.4.19": "9ba70e27c17a1faf6d3de89040432189d8071fa27ca156d09d3503989ecd9ccd",
"v3.4.20": "5b3521aeccd0d5fc3df51aaf90bb5d63d0609667ea9863e365531ac733c126ef",
"v3.4.21": "c52ceca477bc78341d181fa71eb4c93a0c34f1756ecccbba50fbaad2e492fdff",
"v3.4.22": "446f9dc03b4d6e61903bf307dd99e5893101de86fc3d969e86b8111a1e59c67e",
"v3.4.23": "f0c53075564c1b98f5e6b1c009dd5c55b911fae1fe4993913246e8d2c8976651",
"v3.4.24": "8b2b35772704e67f956e6bac0fbb739d974155cd19602a00af9dc757a3a8f83d",
"v3.5.0": "864baa0437f8368e0713d44b83afe21dce1fb4ee7dae4ca0f9dd5f0df22d01c4",
"v3.5.1": "728a14914217ce60de2e1299fc1a2c2c5564e7ffd0d9dadf3f5073103ab619b4",
"v3.5.2": "256cad725542d6fd463e81b8a19b86ead4cdfe113f7fb8a1eabc6c32c25d068b",
"v3.5.3": "e13e119ff9b28234561738cd261c2a031eb1c8688079dcf96d8035b3ad19ca58",
"v3.5.4": "b1091166153df1ee0bb29b47fb1943ef0ddf0cd5d07a8fe69827580a08134def",
"v3.5.5": "7910a2fdb1863c80b885d06f6729043bff0540f2006bf6af34674df2636cb906",
"v3.5.6": "4db32e3bc06dd0999e2171f76a87c1cffed8369475ec7aa7abee9023635670fb",
"v3.5.7": "a43119af79c592a874e8f59c4f23832297849d0c479338f9df36e196b86bc396",
"v3.5.8": "d4c1b8d90ad53658f12ffc293afc5694b7bc6cb093af609188649a799e1cc8dc",
"v3.5.9": "d59017044eb776597eca480432081c5bb26f318ad292967029af1f62b588b042",
"v3.5.10": "26e90d024fa2310bc52bb40e7f2132e81640b55f8fc446c00ae07e30af2a44fd"
"v3.5.13": "31e6fcbee0e8c3df27cf1ba69b522e338377f5ed6447f5d05700aee367f3b7e7"
},
"arm64": {
"v3.4.13": "1934ebb9f9f6501f706111b78e5e321a7ff8d7792d3d96a76e2d01874e42a300",
"v3.4.14": "5ada2f64ae298e6ed8e608459547705b7deac10d75112bb72aae19138c442f43",
"v3.4.15": "fcc522275300cf90d42377106d47a2e384d1d2083af205cbb7833a79ef5a49d1",
"v3.4.16": "6712ff22aeec39ed19688b1edf6747194193b074548fc62163e4804ca0264512",
"v3.4.17": "3288d52c3b2bff646287a9c4ff72423ce0df04ab7c03e034157a406f9da6ba2a",
"v3.4.18": "32c65d83181d991de8e2f3fac8dcfde922b8ddfe082171a351285900485d36ab",
"v3.4.19": "9304d7e7dc60d7158834478e1c2655a24fc2bff367d3ffda5d17a165b8b99cce",
"v3.4.20": "827e70f2cf3b3873389152d62e785bc9468d3f8ea8c1ec1fd85c9f2a9d65017f",
"v3.4.21": "0b43209e40a1b3194d2ce135d9d9e79ef3798bf009df953bf9c814ac3f69ec6a",
"v3.4.22": "adf302a01decf7273a9e61cf39c8cfe05bfd2c18ffed708a6f668ebde519a8e3",
"v3.4.23": "3f590d7aceb7e28aa4125a09a6021fe05d102349b3bc7afafe1cc981b06b70cd",
"v3.4.24": "9e902a47655370badbdd87c7661444bc7f12c105999ac6971e2f56b1e2d3dd16",
"v3.5.0": "444e10e6880595d75aaf55762901c722049b29d56fef50b2f23464bb7f9db74d",
"v3.5.1": "86203022e23d7368bac23d96095270dc6300f356ea882e435926a9effd7e5f0e",
"v3.5.2": "c068ea3cdcc8ec8fbef75995cef7f63f8206766cdea6b93a91e6d4cdbe79952a",
"v3.5.3": "8b00f2f51568303799368ee4a3c9b9ff8a3dd9f8b7772c4f6589e46bc62f7115",
"v3.5.4": "8e9c2c28ed6b35f36fd94300541da10e1385f335d677afd8efccdcba026f1fa7",
"v3.5.5": "a8d177ae8ecfd1ef025c35ac8c444041d14e67028c1a7b4eda3a69a8dee5f9c3",
"v3.5.6": "888e25c9c94702ac1254c7655709b44bb3711ebaabd3cb05439f3dd1f2b51a87",
"v3.5.7": "1a35314900da7db006b198dd917e923459b462128101736c63a3cda57ecdbf51",
"v3.5.8": "3f4441b293a2d0d4d2f8b2cd9504376e15818f7b865ef4b436e8e6f865f895ff",
"v3.5.9": "bb201c106a61bbab59e2d9f37f4bdff99d50201f513c66b4578741eab581fb28",
"v3.5.10": "ff74a6018d9b2a1320bff30e5a11b4f2f5c2a3d147df8a8bad53c01b9f800ee1"
"v3.5.13": "2854993bf622764ccdeb7a146fae2965cb0fcba93c5c8f391e0d5f153c8a7a02"
}
},
"helm": {
Expand Down Expand Up @@ -1264,4 +1222,4 @@
"v3.27.2": "0fd1f65a511338cf9940835987d420c94ab95b5386288ba9673b736a4d347463"
}
}
}
}

0 comments on commit fa78225

Please sign in to comment.