mirror of
				https://github.com/siderolabs/talos.git
				synced 2025-10-31 08:21:25 +01: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))
 | |
| }
 |