From e2f829418e443f86c63447fea6122af7e8833697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Mon, 6 Feb 2017 17:05:42 +0200 Subject: [PATCH 1/2] Add alternative names for the server binaries to hyperkube --- cmd/hyperkube/hyperkube.go | 2 +- cmd/hyperkube/kube-apiserver.go | 6 ++++-- cmd/hyperkube/kube-controller-manager.go | 6 ++++-- cmd/hyperkube/kube-proxy.go | 4 +++- cmd/hyperkube/kube-scheduler.go | 6 ++++-- cmd/hyperkube/kubelet.go | 1 + cmd/hyperkube/server.go | 7 ++++--- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/cmd/hyperkube/hyperkube.go b/cmd/hyperkube/hyperkube.go index fee06bad81c..2c931d806e1 100644 --- a/cmd/hyperkube/hyperkube.go +++ b/cmd/hyperkube/hyperkube.go @@ -55,7 +55,7 @@ func (hk *HyperKube) AddServer(s *Server) { // FindServer will find a specific server named name. func (hk *HyperKube) FindServer(name string) (*Server, error) { for _, s := range hk.servers { - if s.Name() == name { + if s.Name() == name || s.AlternativeName == name { return &s, nil } } diff --git a/cmd/hyperkube/kube-apiserver.go b/cmd/hyperkube/kube-apiserver.go index 423d1f51efa..3d78f92639b 100644 --- a/cmd/hyperkube/kube-apiserver.go +++ b/cmd/hyperkube/kube-apiserver.go @@ -27,8 +27,10 @@ func NewKubeAPIServer() *Server { s := options.NewServerRunOptions() hks := Server{ - SimpleUsage: "apiserver", - Long: "The main API entrypoint and interface to the storage system. The API server is also the focal point for all authorization decisions.", + name: "apiserver", + AlternativeName: "kube-apiserver", + SimpleUsage: "apiserver", + Long: "The main API entrypoint and interface to the storage system. The API server is also the focal point for all authorization decisions.", Run: func(_ *Server, args []string) error { return app.Run(s) }, diff --git a/cmd/hyperkube/kube-controller-manager.go b/cmd/hyperkube/kube-controller-manager.go index 4be4381605b..35061e9a838 100644 --- a/cmd/hyperkube/kube-controller-manager.go +++ b/cmd/hyperkube/kube-controller-manager.go @@ -27,8 +27,10 @@ func NewKubeControllerManager() *Server { s := options.NewCMServer() hks := Server{ - SimpleUsage: "controller-manager", - Long: "A server that runs a set of active components. This includes replication controllers, service endpoints and nodes.", + name: "controller-manager", + AlternativeName: "kube-controller-manager", + SimpleUsage: "controller-manager", + Long: "A server that runs a set of active components. This includes replication controllers, service endpoints and nodes.", Run: func(_ *Server, args []string) error { return app.Run(s) }, diff --git a/cmd/hyperkube/kube-proxy.go b/cmd/hyperkube/kube-proxy.go index 728287031db..46083e49b91 100644 --- a/cmd/hyperkube/kube-proxy.go +++ b/cmd/hyperkube/kube-proxy.go @@ -32,7 +32,9 @@ func NewKubeProxy() *Server { config := options.NewProxyConfig() hks := Server{ - SimpleUsage: "proxy", + name: "proxy", + AlternativeName: "kube-proxy", + SimpleUsage: "proxy", Long: `The Kubernetes proxy server is responsible for taking traffic directed at services and forwarding it to the appropriate pods. It generally runs on nodes next to the Kubelet and proxies traffic from local pods to remote pods. diff --git a/cmd/hyperkube/kube-scheduler.go b/cmd/hyperkube/kube-scheduler.go index 0939f3da776..fd00103ac83 100644 --- a/cmd/hyperkube/kube-scheduler.go +++ b/cmd/hyperkube/kube-scheduler.go @@ -27,8 +27,10 @@ func NewScheduler() *Server { s := options.NewSchedulerServer() hks := Server{ - SimpleUsage: "scheduler", - Long: "Implements a Kubernetes scheduler. This will assign pods to kubelets based on capacity and constraints.", + name: "scheduler", + AlternativeName: "kube-scheduler", + SimpleUsage: "scheduler", + Long: "Implements a Kubernetes scheduler. This will assign pods to kubelets based on capacity and constraints.", Run: func(_ *Server, _ []string) error { return app.Run(s) }, diff --git a/cmd/hyperkube/kubelet.go b/cmd/hyperkube/kubelet.go index f63734e6181..518692ba4d1 100644 --- a/cmd/hyperkube/kubelet.go +++ b/cmd/hyperkube/kubelet.go @@ -26,6 +26,7 @@ import ( func NewKubelet() *Server { s := options.NewKubeletServer() hks := Server{ + name: "kubelet", SimpleUsage: "kubelet", Long: `The kubelet binary is responsible for maintaining a set of containers on a particular node. It syncs data from a variety of sources including a diff --git a/cmd/hyperkube/server.go b/cmd/hyperkube/server.go index 9abafcd638d..434f24ee7ff 100644 --- a/cmd/hyperkube/server.go +++ b/cmd/hyperkube/server.go @@ -30,9 +30,10 @@ type serverRunFunc func(s *Server, args []string) error // Server describes a server that this binary can morph into. type Server struct { - SimpleUsage string // One line description of the server. - Long string // Longer free form description of the server - Run serverRunFunc // Run the server. This is not expected to return. + SimpleUsage string // One line description of the server. + Long string // Longer free form description of the server + Run serverRunFunc // Run the server. This is not expected to return. + AlternativeName string flags *pflag.FlagSet // Flags for the command (and all dependents) name string From 6f6ddc09c401d314b2455d24e6a9d0522ceb62f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Thu, 9 Feb 2017 21:46:00 +0200 Subject: [PATCH 2/2] Make symlinks to /usr/local/bin/ in the hyperkube image --- cluster/images/hyperkube/Dockerfile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cluster/images/hyperkube/Dockerfile b/cluster/images/hyperkube/Dockerfile index cc81f734820..d5abe8a4fb6 100644 --- a/cluster/images/hyperkube/Dockerfile +++ b/cluster/images/hyperkube/Dockerfile @@ -66,6 +66,8 @@ COPY cni-bin/bin /opt/cni/bin COPY cni-conf /etc/cni/net.d # Create symlinks for each hyperkube server +# Also create symlinks to /usr/local/bin/ where the server image binaries live, so the hyperkube image may be +# used instead of gcr.io/google_containers/kube-* without any modifications. # TODO: replace manual symlink creation with --make-symlink command once # cross-building with qemu supports go binaries. See #28702 # RUN /hyperkube --make-symlinks @@ -76,8 +78,15 @@ RUN ln -s /hyperkube /apiserver \ && ln -s /hyperkube /kubectl \ && ln -s /hyperkube /kubelet \ && ln -s /hyperkube /proxy \ - && ln -s /hyperkube /scheduler + && ln -s /hyperkube /scheduler \ + && ln -s /hyperkube /usr/local/bin/kube-apiserver \ + && ln -s /hyperkube /usr/local/bin/kube-controller-manager \ + && ln -s /hyperkube /usr/local/bin/federation-apiserver \ + && ln -s /hyperkube /usr/local/bin/federation-controller-manager \ + && ln -s /hyperkube /usr/local/bin/kubectl \ + && ln -s /hyperkube /usr/local/bin/kubelet \ + && ln -s /hyperkube /usr/local/bin/kube-proxy \ + && ln -s /hyperkube /usr/local/bin/kube-scheduler # Copy the hyperkube binary COPY hyperkube /hyperkube -