mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-25 12:17:52 +00:00
Kubernetes Mesos integration
This commit includes the fundamental components of the Kubernetes Mesos integration: * Kubernetes-Mesos scheduler * Kubernetes-Mesos executor * Supporting libs Dependencies and upstream changes are included in a separate commit for easy review. After this initial upstream, there'll be two PRs following. * km (hypercube) and k8sm-controller-manager #9265 * Static pods support #9077 Fixes applied: - Precise metrics subsystems definitions - mesosphere/kubernetes-mesos#331 - https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion_r31875232 - https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion_r31875240 - Improve comments and add clarifications - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875208 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875226 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875227 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875228 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875239 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875243 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875234 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875256 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875255 - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875251 - Clarify which Schedule function is actually called - Fixes https://github.com/GoogleCloudPlatform/kubernetes/pull/8882#discussion-diff-31875246
This commit is contained in:
18
contrib/mesos/cmd/k8sm-executor/doc.go
Normal file
18
contrib/mesos/cmd/k8sm-executor/doc.go
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// This package main implements the executable Kubernetes Mesos executor.
|
||||
package main
|
47
contrib/mesos/cmd/k8sm-executor/main.go
Normal file
47
contrib/mesos/cmd/k8sm-executor/main.go
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/GoogleCloudPlatform/kubernetes/contrib/mesos/pkg/executor/service"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/contrib/mesos/pkg/hyperkube"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/version/verflag"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
func main() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
|
||||
s := service.NewKubeletExecutorServer()
|
||||
s.AddStandaloneFlags(pflag.CommandLine)
|
||||
|
||||
util.InitFlags()
|
||||
util.InitLogs()
|
||||
defer util.FlushLogs()
|
||||
|
||||
verflag.PrintAndExitIfRequested()
|
||||
|
||||
if err := s.Run(hyperkube.Nil(), pflag.CommandLine.Args()); err != nil {
|
||||
fmt.Fprintf(os.Stderr, err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
21
contrib/mesos/cmd/k8sm-redirfd/doc.go
Normal file
21
contrib/mesos/cmd/k8sm-redirfd/doc.go
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// This package main is used for testing the redirfd package.
|
||||
// Inspired by http://skarnet.org/software/execline/redirfd.html.
|
||||
// Usage:
|
||||
// k8sm-redirfb [-n] [-b] {mode} {fd} {file} {prog...}
|
||||
package main
|
105
contrib/mesos/cmd/k8sm-redirfd/redirfd.go
Normal file
105
contrib/mesos/cmd/k8sm-redirfd/redirfd.go
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"syscall"
|
||||
|
||||
"github.com/GoogleCloudPlatform/kubernetes/contrib/mesos/pkg/redirfd"
|
||||
)
|
||||
|
||||
func main() {
|
||||
nonblock := flag.Bool("n", false, "open file in non-blocking mode")
|
||||
changemode := flag.Bool("b", false, "change mode of file after opening it: to non-blocking mode if the -n option was not given, to blocking mode if it was")
|
||||
flag.Parse()
|
||||
|
||||
args := flag.Args()
|
||||
if len(args) < 4 {
|
||||
fmt.Fprintf(os.Stderr, "expected {mode} {fd} {file} instead of: %v\n", args)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
var mode redirfd.RedirectMode
|
||||
switch m := args[0]; m {
|
||||
case "r":
|
||||
mode = redirfd.Read
|
||||
case "w":
|
||||
mode = redirfd.Write
|
||||
case "u":
|
||||
mode = redirfd.Update
|
||||
case "a":
|
||||
mode = redirfd.Append
|
||||
case "c":
|
||||
mode = redirfd.AppendExisting
|
||||
case "x":
|
||||
mode = redirfd.WriteNew
|
||||
default:
|
||||
fmt.Fprintf(os.Stderr, "unrecognized mode %q\n", mode)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fd, err := redirfd.ParseFileDescriptor(args[1])
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "failed to parse file descriptor: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
file := args[2]
|
||||
|
||||
f, err := mode.Redirect(*nonblock, *changemode, fd, file)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "redirect failed: %q, %v\n", args[1], err)
|
||||
os.Exit(1)
|
||||
}
|
||||
var pargs []string
|
||||
if len(args) > 4 {
|
||||
pargs = args[4:]
|
||||
}
|
||||
cmd := exec.Command(args[3], pargs...)
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
switch fd {
|
||||
case redirfd.Stdin:
|
||||
cmd.Stdin = f
|
||||
case redirfd.Stdout:
|
||||
cmd.Stdout = f
|
||||
case redirfd.Stderr:
|
||||
cmd.Stderr = f
|
||||
default:
|
||||
cmd.ExtraFiles = []*os.File{f}
|
||||
}
|
||||
defer f.Close()
|
||||
if err = cmd.Run(); err != nil {
|
||||
exiterr := err.(*exec.ExitError)
|
||||
state := exiterr.ProcessState
|
||||
if state != nil {
|
||||
sys := state.Sys()
|
||||
if waitStatus, ok := sys.(syscall.WaitStatus); ok {
|
||||
if waitStatus.Signaled() {
|
||||
os.Exit(256 + int(waitStatus.Signal()))
|
||||
} else {
|
||||
os.Exit(waitStatus.ExitStatus())
|
||||
}
|
||||
}
|
||||
}
|
||||
os.Exit(3)
|
||||
}
|
||||
}
|
18
contrib/mesos/cmd/k8sm-scheduler/doc.go
Normal file
18
contrib/mesos/cmd/k8sm-scheduler/doc.go
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// This package main implements the executable Kubernetes Mesos scheduler.
|
||||
package main
|
46
contrib/mesos/cmd/k8sm-scheduler/main.go
Normal file
46
contrib/mesos/cmd/k8sm-scheduler/main.go
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/GoogleCloudPlatform/kubernetes/contrib/mesos/pkg/hyperkube"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/contrib/mesos/pkg/scheduler/service"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/version/verflag"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
func main() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
s := service.NewSchedulerServer()
|
||||
s.AddStandaloneFlags(pflag.CommandLine)
|
||||
|
||||
util.InitFlags()
|
||||
util.InitLogs()
|
||||
defer util.FlushLogs()
|
||||
|
||||
verflag.PrintAndExitIfRequested()
|
||||
|
||||
if err := s.Run(hyperkube.Nil(), pflag.CommandLine.Args()); err != nil {
|
||||
fmt.Fprintf(os.Stderr, err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user