Various improvements plus added a version command

This commit is contained in:
Lucas Käldström 2016-09-25 22:38:39 +03:00
parent a023085a5f
commit b17e107def
7 changed files with 69 additions and 21 deletions

View File

@ -64,13 +64,12 @@ type InitFlags struct {
Kubernetes string Kubernetes string
} }
CloudProvider string CloudProvider string
Schedulable bool
} }
const ( const (
DefaultServiceDNSDomain = "cluster.local" DefaultServiceDNSDomain = "cluster.local"
DefaultServicesCIDRString = "100.64.0.0/12" // Carrier-grade NAT range (RFC 6598) DefaultServicesCIDRString = "100.64.0.0/12" // Carrier-grade NAT range (RFC 6598)
DefaultKubernetesVersion = "v1.4.0-beta.10" DefaultKubernetesVersion = "v1.4.0"
) )
var ( var (
@ -86,15 +85,10 @@ var (
"rackspace", "rackspace",
"vsphere", "vsphere",
} }
SupportedCloudProviders map[string]bool
) )
func init() { func init() {
_, DefaultServicesCIDR, _ = net.ParseCIDR(DefaultServicesCIDRString) _, DefaultServicesCIDR, _ = net.ParseCIDR(DefaultServicesCIDRString)
SupportedCloudProviders = make(map[string]bool, len(ListOfCloudProviders))
for _, v := range ListOfCloudProviders {
SupportedCloudProviders[v] = true
}
} }
// JoinFlags holds values for "kubeadm join" command flags. // JoinFlags holds values for "kubeadm join" command flags.

View File

@ -84,6 +84,7 @@ func NewKubeadmCommand(f *cmdutil.Factory, in io.Reader, out, err io.Writer, env
cmds.AddCommand(NewCmdInit(out, s)) cmds.AddCommand(NewCmdInit(out, s))
cmds.AddCommand(NewCmdJoin(out, s)) cmds.AddCommand(NewCmdJoin(out, s))
cmds.AddCommand(NewCmdVersion(out))
return cmds return cmds
} }

View File

@ -83,10 +83,6 @@ func NewCmdInit(out io.Writer, s *kubeadmapi.KubeadmConfig) *cobra.Command {
&s.InitFlags.CloudProvider, "cloud-provider", "", &s.InitFlags.CloudProvider, "cloud-provider", "",
`Enable cloud provider features (external load-balancers, storage, etc), e.g. "gce"`, `Enable cloud provider features (external load-balancers, storage, etc), e.g. "gce"`,
) )
cmd.PersistentFlags().BoolVar(
&s.InitFlags.Schedulable, "schedule-pods-here", false,
`Allow to schedule workload to the node`,
)
cmd.PersistentFlags().StringVar( cmd.PersistentFlags().StringVar(
&s.InitFlags.Versions.Kubernetes, "use-kubernetes-version", kubeadmapi.DefaultKubernetesVersion, &s.InitFlags.Versions.Kubernetes, "use-kubernetes-version", kubeadmapi.DefaultKubernetesVersion,
`Choose a specific Kubernetes version for the control plane`, `Choose a specific Kubernetes version for the control plane`,
@ -99,15 +95,15 @@ func NewCmdInit(out io.Writer, s *kubeadmapi.KubeadmConfig) *cobra.Command {
) )
cmd.PersistentFlags().StringVar( cmd.PersistentFlags().StringVar(
&s.InitFlags.API.Etcd.ExternalCAFile, "external-etcd-cafile", "", &s.InitFlags.API.Etcd.ExternalCAFile, "external-etcd-cafile", "",
"etcd certificate authority certificate file", "etcd certificate authority certificate file. Note: The path must be in /etc/ssl/certs",
) )
cmd.PersistentFlags().StringVar( cmd.PersistentFlags().StringVar(
&s.InitFlags.API.Etcd.ExternalCertFile, "external-etcd-certfile", "", &s.InitFlags.API.Etcd.ExternalCertFile, "external-etcd-certfile", "",
"etcd client certificate file", "etcd client certificate file. Note: The path must be in /etc/ssl/certs",
) )
cmd.PersistentFlags().StringVar( cmd.PersistentFlags().StringVar(
&s.InitFlags.API.Etcd.ExternalKeyFile, "external-etcd-keyfile", "", &s.InitFlags.API.Etcd.ExternalKeyFile, "external-etcd-keyfile", "",
"etcd client key file", "etcd client key file. Note: The path must be in /etc/ssl/certs",
) )
return cmd return cmd
@ -136,8 +132,18 @@ func RunInit(out io.Writer, cmd *cobra.Command, args []string, s *kubeadmapi.Kub
// TODO(phase1+) create a custom flag // TODO(phase1+) create a custom flag
if s.InitFlags.CloudProvider != "" { if s.InitFlags.CloudProvider != "" {
if _, ok := kubeadmapi.SupportedCloudProviders[s.InitFlags.CloudProvider]; !ok { found := false
return fmt.Errorf("<cmd/init> cloud provider %q is not supported, you can use any of %v, or leave it unset", s.InitFlags.CloudProvider, kubeadmapi.ListOfCloudProviders) for _, provider := range kubeadmapi.ListOfCloudProviders {
if provider == s.InitFlags.CloudProvider {
found = true
break
}
}
if found {
fmt.Printf("<cmd/init> cloud provider %q initialized for the control plane. Remember to set the same cloud provider flag on the kubelet.\n", s.InitFlags.CloudProvider)
} else {
return fmt.Errorf("<cmd/init> cloud provider %q is not supported, you can use any of %v, or leave it unset.\n", s.InitFlags.CloudProvider, kubeadmapi.ListOfCloudProviders)
} }
} }
@ -179,7 +185,8 @@ func RunInit(out io.Writer, cmd *cobra.Command, args []string, s *kubeadmapi.Kub
return err return err
} }
if err := kubemaster.UpdateMasterRoleLabelsAndTaints(client, s.Schedulable); err != nil { schedulePodsOnMaster := false
if err := kubemaster.UpdateMasterRoleLabelsAndTaints(client, schedulePodsOnMaster); err != nil {
return err return err
} }

View File

@ -0,0 +1,44 @@
/*
Copyright 2014 The Kubernetes Authors.
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 cmd
import (
"fmt"
"io"
"github.com/spf13/cobra"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/version"
)
func NewCmdVersion(out io.Writer) *cobra.Command {
cmd := &cobra.Command{
Use: "version",
Short: "Print the version of kubeadm",
Run: func(cmd *cobra.Command, args []string) {
err := RunVersion(out, cmd)
cmdutil.CheckErr(err)
},
}
return cmd
}
func RunVersion(out io.Writer, cmd *cobra.Command) error {
fmt.Fprintf(out, "kubeadm version: %#v\n", version.Get())
return nil
}

View File

@ -20,6 +20,7 @@ import (
"fmt" "fmt"
"os" "os"
"strings" "strings"
"runtime"
"github.com/renstrom/dedent" "github.com/renstrom/dedent"
"github.com/spf13/pflag" "github.com/spf13/pflag"
@ -46,7 +47,7 @@ func getEnvParams() map[string]string {
"host_pki_path": "/etc/kubernetes/pki", "host_pki_path": "/etc/kubernetes/pki",
"host_etcd_path": "/var/lib/etcd", "host_etcd_path": "/var/lib/etcd",
"hyperkube_image": "", "hyperkube_image": "",
"discovery_image": "dgoodwin/kubediscovery:latest", // TODO(phase1): fmt.Sprintf("gcr.io/google_containers/kube-discovery-%s:%s", runtime.GOARCH, "1.0"), "discovery_image": fmt.Sprintf("gcr.io/google_containers/kube-discovery-%s:%s", runtime.GOARCH, "1.0"),
"etcd_image": "", "etcd_image": "",
"component_loglevel": "--v=4", "component_loglevel": "--v=4",
} }

View File

@ -220,7 +220,7 @@ func componentPod(container api.Container, volumes ...api.Volume) api.Pod {
func getComponentCommand(component string, s *kubeadmapi.KubeadmConfig) (command []string) { func getComponentCommand(component string, s *kubeadmapi.KubeadmConfig) (command []string) {
baseFlags := map[string][]string{ baseFlags := map[string][]string{
apiServer: { apiServer: {
"--address=127.0.0.1", "--insecure-bind-address=127.0.0.1",
"--etcd-servers=http://127.0.0.1:2379", "--etcd-servers=http://127.0.0.1:2379",
"--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota", "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota",
"--service-cluster-ip-range=" + s.InitFlags.Services.CIDR.String(), "--service-cluster-ip-range=" + s.InitFlags.Services.CIDR.String(),
@ -233,7 +233,7 @@ func getComponentCommand(component string, s *kubeadmapi.KubeadmConfig) (command
"--allow-privileged", "--allow-privileged",
}, },
controllerManager: { controllerManager: {
// TODO(phase1+): consider adding --address=127.0.0.1 in order to not expose the cm port to the rest of the world "--address=127.0.0.1",
"--leader-elect", "--leader-elect",
"--master=127.0.0.1:8080", "--master=127.0.0.1:8080",
"--cluster-name=" + DefaultClusterName, "--cluster-name=" + DefaultClusterName,
@ -244,7 +244,7 @@ func getComponentCommand(component string, s *kubeadmapi.KubeadmConfig) (command
"--insecure-experimental-approve-all-kubelet-csrs-for-group=system:kubelet-bootstrap", "--insecure-experimental-approve-all-kubelet-csrs-for-group=system:kubelet-bootstrap",
}, },
scheduler: { scheduler: {
// TODO(phase1+): consider adding --address=127.0.0.1 in order to not expose the scheduler port to the rest of the world "--address=127.0.0.1",
"--leader-elect", "--leader-elect",
"--master=127.0.0.1:8080", "--master=127.0.0.1:8080",
}, },

View File

@ -35,6 +35,7 @@ kube::golang::server_targets() {
cmd/kube-apiserver cmd/kube-apiserver
cmd/kube-controller-manager cmd/kube-controller-manager
cmd/kubelet cmd/kubelet
cmd/kubeadm
cmd/kubemark cmd/kubemark
cmd/hyperkube cmd/hyperkube
plugin/cmd/kube-scheduler plugin/cmd/kube-scheduler