mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-10 00:27:05 +02:00
Fixes #4407 fixes #4489 This PR started by enabling simple restart of the `kubelet` service via services API, but it turned out there's a problem: When kubelet restarts, CNI is already up, so there's an interface on the host with CNI node IP, the code which picks kubelet node IP finds it and tries to add it to the list of kubelet node IPs which completely breaks kubelet. Solution was easy: allow node IPs to be filtered out - e.g. we never want kubelet node IP to be from the pod CIDR. But this filtering feature is also useful in other cases, so I added that as well. Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
//go:build integration_cli
|
|
// +build integration_cli
|
|
|
|
package cli
|
|
|
|
import (
|
|
"regexp"
|
|
"time"
|
|
|
|
"github.com/talos-systems/talos/internal/integration/base"
|
|
)
|
|
|
|
// ServicesSuite verifies dmesg command.
|
|
type ServicesSuite struct {
|
|
base.CLISuite
|
|
}
|
|
|
|
// SuiteName ...
|
|
func (suite *ServicesSuite) SuiteName() string {
|
|
return "cli.ServicesSuite"
|
|
}
|
|
|
|
// TestList verifies service list.
|
|
func (suite *ServicesSuite) TestList() {
|
|
suite.RunCLI([]string{"services", "--nodes", suite.RandomDiscoveredNode()},
|
|
base.StdoutShouldMatch(regexp.MustCompile(`STATE`)),
|
|
base.StdoutShouldMatch(regexp.MustCompile(`apid`)),
|
|
)
|
|
}
|
|
|
|
// TestStatus verifies service status.
|
|
func (suite *ServicesSuite) TestStatus() {
|
|
suite.RunCLI([]string{"service", "apid", "--nodes", suite.RandomDiscoveredNode()},
|
|
base.StdoutShouldMatch(regexp.MustCompile(`STATE`)),
|
|
base.StdoutShouldMatch(regexp.MustCompile(`apid`)),
|
|
base.StdoutShouldMatch(regexp.MustCompile(`\[Running\]`)),
|
|
)
|
|
}
|
|
|
|
// TestRestart verifies kubelet restart.
|
|
func (suite *ServicesSuite) TestRestart() {
|
|
node := suite.RandomDiscoveredNode()
|
|
|
|
suite.RunCLI([]string{"service", "kubelet", "restart", "--nodes", node})
|
|
|
|
time.Sleep(200 * time.Millisecond)
|
|
|
|
suite.RunAndWaitForMatch([]string{"service", "-n", node, "kubelet"}, regexp.MustCompile(`EVENTS\s+\[Running\]: Health check successful`), 30*time.Second)
|
|
}
|
|
|
|
func init() {
|
|
allSuites = append(allSuites, new(ServicesSuite))
|
|
}
|