Merge pull request #79032 from yastij/move-initsystem

move initsystem to kubeadm
This commit is contained in:
Kubernetes Prow Robot 2019-06-17 09:42:15 -07:00 committed by GitHub
commit d3bbe03b08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 32 additions and 10 deletions

View File

@ -78,7 +78,6 @@
"k8s.io/kubernetes/pkg/util/conntrack",
"k8s.io/kubernetes/pkg/util/dbus",
"k8s.io/kubernetes/pkg/util/hash",
"k8s.io/kubernetes/pkg/util/initsystem",
"k8s.io/kubernetes/pkg/util/ipset",
"k8s.io/kubernetes/pkg/util/iptables",
"k8s.io/kubernetes/pkg/util/ipvs",

View File

@ -20,9 +20,9 @@ go_library(
"//cmd/kubeadm/app/phases/etcd:go_default_library",
"//cmd/kubeadm/app/phases/uploadconfig:go_default_library",
"//cmd/kubeadm/app/preflight:go_default_library",
"//cmd/kubeadm/app/util/initsystem:go_default_library",
"//cmd/kubeadm/app/util/runtime:go_default_library",
"//cmd/kubeadm/app/util/staticpod:go_default_library",
"//pkg/util/initsystem:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/klog:go_default_library",

View File

@ -28,8 +28,8 @@ import (
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem"
utilruntime "k8s.io/kubernetes/cmd/kubeadm/app/util/runtime"
"k8s.io/kubernetes/pkg/util/initsystem"
utilsexec "k8s.io/utils/exec"
)

View File

@ -17,8 +17,8 @@ go_library(
"//cmd/kubeadm/app/images:go_default_library",
"//cmd/kubeadm/app/util:go_default_library",
"//cmd/kubeadm/app/util/apiclient:go_default_library",
"//cmd/kubeadm/app/util/initsystem:go_default_library",
"//pkg/kubelet/apis/config:go_default_library",
"//pkg/util/initsystem:go_default_library",
"//pkg/util/node:go_default_library",
"//pkg/util/procfs:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",

View File

@ -19,7 +19,7 @@ package kubelet
import (
"fmt"
"k8s.io/kubernetes/pkg/util/initsystem"
"k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem"
)
// TryStartKubelet attempts to bring up kubelet service

View File

@ -21,11 +21,11 @@ go_library(
"//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/images:go_default_library",
"//cmd/kubeadm/app/util/initsystem:go_default_library",
"//cmd/kubeadm/app/util/runtime:go_default_library",
"//cmd/kubeadm/app/util/system:go_default_library",
"//pkg/master/ports:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/util/initsystem:go_default_library",
"//pkg/util/ipvs:go_default_library",
"//pkg/version:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",

View File

@ -44,11 +44,11 @@ import (
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/images"
"k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem"
utilruntime "k8s.io/kubernetes/cmd/kubeadm/app/util/runtime"
"k8s.io/kubernetes/cmd/kubeadm/app/util/system"
"k8s.io/kubernetes/pkg/master/ports"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/util/initsystem"
ipvsutil "k8s.io/kubernetes/pkg/util/ipvs"
kubeadmversion "k8s.io/kubernetes/pkg/version"
utilsexec "k8s.io/utils/exec"

View File

@ -84,6 +84,7 @@ filegroup(
"//cmd/kubeadm/app/util/crypto:all-srcs",
"//cmd/kubeadm/app/util/dryrun:all-srcs",
"//cmd/kubeadm/app/util/etcd:all-srcs",
"//cmd/kubeadm/app/util/initsystem:all-srcs",
"//cmd/kubeadm/app/util/kubeconfig:all-srcs",
"//cmd/kubeadm/app/util/pkiutil:all-srcs",
"//cmd/kubeadm/app/util/pubkeypin:all-srcs",

View File

@ -12,7 +12,7 @@ go_library(
"initsystem_unix.go",
"initsystem_windows.go",
],
importpath = "k8s.io/kubernetes/pkg/util/initsystem",
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/util/initsystem",
deps = select({
"@io_bazel_rules_go//go/platform:windows": [
"//vendor/golang.org/x/sys/windows/svc:go_default_library",

View File

@ -16,6 +16,7 @@ limitations under the License.
package initsystem
// InitSystem is the interface that describe behaviors of an init system
type InitSystem interface {
// return a string describing how to enable a service
EnableCommand(service string) string

View File

@ -24,23 +24,28 @@ import (
"strings"
)
// OpenRCInitSystem defines openrc
type OpenRCInitSystem struct{}
// ServiceStart tries to start a specific service
func (openrc OpenRCInitSystem) ServiceStart(service string) error {
args := []string{service, "start"}
return exec.Command("rc-service", args...).Run()
}
// ServiceStop tries to stop a specific service
func (openrc OpenRCInitSystem) ServiceStop(service string) error {
args := []string{service, "stop"}
return exec.Command("rc-service", args...).Run()
}
// ServiceRestart tries to reload the environment and restart the specific service
func (openrc OpenRCInitSystem) ServiceRestart(service string) error {
args := []string{service, "restart"}
return exec.Command("rc-service", args...).Run()
}
// ServiceExists ensures the service is defined for this init system.
// openrc writes to stderr if a service is not found or not enabled
// this is in contrast to systemd which only writes to stdout.
// Hence, we use the Combinedoutput, and ignore the error.
@ -53,6 +58,7 @@ func (openrc OpenRCInitSystem) ServiceExists(service string) bool {
return true
}
// ServiceIsEnabled ensures the service is enabled to start on each boot.
func (openrc OpenRCInitSystem) ServiceIsEnabled(service string) bool {
args := []string{"show", "default"}
outBytes, _ := exec.Command("rc-update", args...).Output()
@ -62,6 +68,7 @@ func (openrc OpenRCInitSystem) ServiceIsEnabled(service string) bool {
return false
}
// ServiceIsActive ensures the service is running, or attempting to run. (crash looping in the case of kubelet)
func (openrc OpenRCInitSystem) ServiceIsActive(service string) bool {
args := []string{service, "status"}
outBytes, _ := exec.Command("rc-service", args...).Output()
@ -71,16 +78,20 @@ func (openrc OpenRCInitSystem) ServiceIsActive(service string) bool {
return true
}
// EnableCommand return a string describing how to enable a service
func (openrc OpenRCInitSystem) EnableCommand(service string) string {
return fmt.Sprintf("rc-update add %s default", service)
}
// SystemdInitSystem defines systemd
type SystemdInitSystem struct{}
// EnableCommand return a string describing how to enable a service
func (sysd SystemdInitSystem) EnableCommand(service string) string {
return fmt.Sprintf("systemctl enable %s.service", service)
}
// reloadSystemd reloeads the systemd daemon
func (sysd SystemdInitSystem) reloadSystemd() error {
if err := exec.Command("systemctl", "daemon-reload").Run(); err != nil {
return fmt.Errorf("failed to reload systemd: %v", err)
@ -88,6 +99,7 @@ func (sysd SystemdInitSystem) reloadSystemd() error {
return nil
}
// ServiceStart tries to start a specific service
func (sysd SystemdInitSystem) ServiceStart(service string) error {
// Before we try to start any service, make sure that systemd is ready
if err := sysd.reloadSystemd(); err != nil {
@ -97,6 +109,7 @@ func (sysd SystemdInitSystem) ServiceStart(service string) error {
return exec.Command("systemctl", args...).Run()
}
// ServiceRestart tries to reload the environment and restart the specific service
func (sysd SystemdInitSystem) ServiceRestart(service string) error {
// Before we try to restart any service, make sure that systemd is ready
if err := sysd.reloadSystemd(); err != nil {
@ -106,11 +119,13 @@ func (sysd SystemdInitSystem) ServiceRestart(service string) error {
return exec.Command("systemctl", args...).Run()
}
// ServiceStop tries to stop a specific service
func (sysd SystemdInitSystem) ServiceStop(service string) error {
args := []string{"stop", service}
return exec.Command("systemctl", args...).Run()
}
// ServiceExists ensures the service is defined for this init system.
func (sysd SystemdInitSystem) ServiceExists(service string) bool {
args := []string{"status", service}
outBytes, _ := exec.Command("systemctl", args...).Output()
@ -121,6 +136,7 @@ func (sysd SystemdInitSystem) ServiceExists(service string) bool {
return true
}
// ServiceIsEnabled ensures the service is enabled to start on each boot.
func (sysd SystemdInitSystem) ServiceIsEnabled(service string) bool {
args := []string{"is-enabled", service}
err := exec.Command("systemctl", args...).Run()

View File

@ -29,10 +29,12 @@ import (
// WindowsInitSystem is the windows implementation of InitSystem
type WindowsInitSystem struct{}
// EnableCommand return a string describing how to enable a service
func (sysd WindowsInitSystem) EnableCommand(service string) string {
return fmt.Sprintf("Set-Service '%s' -StartupType Automatic", service)
}
// ServiceStart tries to start a specific service
// Following Windows documentation: https://docs.microsoft.com/en-us/windows/desktop/Services/starting-a-service
func (sysd WindowsInitSystem) ServiceStart(service string) error {
m, err := mgr.Connect()
@ -94,6 +96,7 @@ func (sysd WindowsInitSystem) ServiceStart(service string) error {
return nil
}
// ServiceRestart tries to reload the environment and restart the specific service
func (sysd WindowsInitSystem) ServiceRestart(service string) error {
if err := sysd.ServiceStop(service); err != nil {
return fmt.Errorf("couldn't stop service %s: %v", service, err)
@ -105,6 +108,7 @@ func (sysd WindowsInitSystem) ServiceRestart(service string) error {
return nil
}
// ServiceStop tries to stop a specific service
// Following Windows documentation: https://docs.microsoft.com/en-us/windows/desktop/Services/stopping-a-service
func (sysd WindowsInitSystem) ServiceStop(service string) error {
m, err := mgr.Connect()
@ -170,6 +174,7 @@ func (sysd WindowsInitSystem) ServiceStop(service string) error {
return nil
}
// ServiceExists ensures the service is defined for this init system.
func (sysd WindowsInitSystem) ServiceExists(service string) bool {
m, err := mgr.Connect()
if err != nil {
@ -185,6 +190,7 @@ func (sysd WindowsInitSystem) ServiceExists(service string) bool {
return true
}
// ServiceIsEnabled ensures the service is enabled to start on each boot.
func (sysd WindowsInitSystem) ServiceIsEnabled(service string) bool {
m, err := mgr.Connect()
if err != nil {
@ -206,6 +212,7 @@ func (sysd WindowsInitSystem) ServiceIsEnabled(service string) bool {
return c.StartType != mgr.StartDisabled
}
// ServiceIsActive ensures the service is running, or attempting to run. (crash looping in the case of kubelet)
func (sysd WindowsInitSystem) ServiceIsActive(service string) bool {
m, err := mgr.Connect()
if err != nil {

View File

@ -284,7 +284,6 @@ pkg/util/config
pkg/util/ebtables
pkg/util/env
pkg/util/goroutinemap/exponentialbackoff
pkg/util/initsystem
pkg/util/iptables
pkg/util/iptables/testing
pkg/util/labels

View File

@ -25,7 +25,6 @@ filegroup(
"//pkg/util/flock:all-srcs",
"//pkg/util/goroutinemap:all-srcs",
"//pkg/util/hash:all-srcs",
"//pkg/util/initsystem:all-srcs",
"//pkg/util/interrupt:all-srcs",
"//pkg/util/ipconfig:all-srcs",
"//pkg/util/ipset:all-srcs",