From 601b00db693acd52ed2691f5d13b236a19c0da48 Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Fri, 26 Jun 2015 14:27:13 -0700 Subject: [PATCH 01/16] Don't block etcd client (cherry picked from commit 45ac0cf25e9b7def174cef4003275365054c5457) --- pkg/tools/etcd_helper_watch.go | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/pkg/tools/etcd_helper_watch.go b/pkg/tools/etcd_helper_watch.go index 1a3fd1e74b..356fbf9f57 100644 --- a/pkg/tools/etcd_helper_watch.go +++ b/pkg/tools/etcd_helper_watch.go @@ -156,13 +156,22 @@ const watchWaitDuration = 100 * time.Millisecond // and a versioner, the versioner must be able to handle the objects that transform creates. func newEtcdWatcher(list bool, include includeFunc, filter FilterFunc, encoding runtime.Codec, versioner EtcdVersioner, transform TransformFunc, cache etcdCache) *etcdWatcher { w := &etcdWatcher{ - encoding: encoding, - versioner: versioner, - transform: transform, - list: list, - include: include, - filter: filter, - etcdIncoming: make(chan *etcd.Response), + encoding: encoding, + versioner: versioner, + transform: transform, + list: list, + include: include, + filter: filter, + // Buffer this channel, so that the etcd client is not forced + // to context switch with every object it gets, and so that a + // long time spent decoding an object won't block the *next* + // object. Basically, we see a lot of "401 window exceeded" + // errors from etcd, and that's due to the client not streaming + // results but rather getting them one at a time. So we really + // want to never block the etcd client, if possible. The 50 is + // arbitrary; there's a V(4) log message that prints the length + // so we can monitor how much of this buffer is actually used. + etcdIncoming: make(chan *etcd.Response, 50), etcdError: make(chan error, 1), etcdStop: make(chan bool), outgoing: make(chan watch.Event), @@ -250,6 +259,10 @@ func (w *etcdWatcher) translate() { return case res, ok := <-w.etcdIncoming: if ok { + if curLen := len(w.etcdIncoming); curLen > 0 { + // Monitor if this gets backed up, and how much. + glog.V(4).Infof("watch: %v objects queued in channel.", curLen) + } w.sendResult(res) } // If !ok, don't return here-- must wait for etcdError channel From 3223a8e7eba525e18ce9623365a22a6e068a13da Mon Sep 17 00:00:00 2001 From: Abhi Shah Date: Fri, 12 Jun 2015 14:25:52 -0700 Subject: [PATCH 02/16] Revert "Remove raw binaries from distro that are already included in docker image" (cherry picked from commit 3277925ece1af577b800298fa7baff5c114095f2) --- build/common.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/common.sh b/build/common.sh index c1e20e6b06..764006c0be 100644 --- a/build/common.sh +++ b/build/common.sh @@ -648,9 +648,6 @@ function kube::release::create_docker_images_for_server() { kube::log::status "Deleting docker image ${docker_image_tag}" "${DOCKER[@]}" rmi ${docker_image_tag} 2>/dev/null || true - - # Now, that we have created docker images we can safely delete raw binary. - rm -f $1/${binary_name} ) & done From c464aaae43b496238a7a07b99e5d3367859aa1ef Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Fri, 26 Jun 2015 15:45:26 -0700 Subject: [PATCH 03/16] Revert "Set resource limit for both heapster and influxdb container based on" (cherry picked from commit 1a4d3ef680f72e9af7f468d432ca7eea89728cec) --- .../addons/cluster-monitoring/google/heapster-controller.yaml | 4 ---- .../googleinfluxdb/heapster-controller-combined.yaml | 4 ---- .../cluster-monitoring/influxdb/heapster-controller.yaml | 4 ---- .../influxdb/influxdb-grafana-controller.yaml | 4 ---- .../cluster-monitoring/standalone/heapster-controller.yaml | 4 ---- 5 files changed, 20 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index db7624b50c..1d4f3228df 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -22,10 +22,6 @@ spec: containers: - image: gcr.io/google_containers/heapster:v0.14.3 name: heapster - resources: - limits: - cpu: 200m - memory: 2.5Gi command: - /heapster - --source=kubernetes:'' diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index 43882f38c4..e476f9eeca 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -22,10 +22,6 @@ spec: containers: - image: gcr.io/google_containers/heapster:v0.14.3 name: heapster - resources: - limits: - cpu: 200m - memory: 2.5Gi command: - /heapster - --source=kubernetes:'' diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index 2e3d33163a..766702a422 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -22,10 +22,6 @@ spec: containers: - image: gcr.io/google_containers/heapster:v0.14.3 name: heapster - resources: - limits: - cpu: 200m - memory: 2.5Gi command: - /heapster - --source=kubernetes:'' diff --git a/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml index ceef957ef3..94d3dc06b2 100644 --- a/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml @@ -22,10 +22,6 @@ spec: containers: - image: gcr.io/google_containers/heapster_influxdb:v0.3 name: influxdb - resources: - limits: - cpu: 300m - memory: 2Gi ports: - containerPort: 8083 hostPort: 8083 diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index b73aeeedda..e97ada1ea6 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -22,10 +22,6 @@ spec: containers: - image: gcr.io/google_containers/heapster:v0.14.3 name: heapster - resources: - limits: - cpu: 200m - memory: 2.5Gi command: - /heapster - --source=kubernetes:'' From 7e023bc1ba46178742e764dcbeda68b363f804a0 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 19 Jun 2015 17:00:05 -0700 Subject: [PATCH 04/16] Clean up Changelog - sort newest-first - add missing entry - format consistently (cherry picked from commit 88ce0ad8e98f54a41c3ab84463c0d18671827613) --- cluster/addons/dns/kube2sky/Changelog | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cluster/addons/dns/kube2sky/Changelog b/cluster/addons/dns/kube2sky/Changelog index b9e755d397..715849634e 100644 --- a/cluster/addons/dns/kube2sky/Changelog +++ b/cluster/addons/dns/kube2sky/Changelog @@ -1,12 +1,16 @@ -* Fri May 15 2015 Tim Hockin - - First Changelog entry - - Current version is 1.4 +## Version 1.9 (May 28 2015 Abhishek Shah ) +- Add SRV support. + + +## Version 1.8 (May 28 2015 Vishnu Kannan ) +- Avoid making connections to the master insecure by default +- Let users override the master URL in kubeconfig via a flag ## Version 1.7 (May 25 2015 Vishnu Kannan ) -- Adding support for headless services. All pods backing a headless service is addressible via DNS RR. +- Adding support for headless services. All pods backing a headless service is +addressible via DNS RR. -## Version 1.8 (May 18 2015 Vishnu Kannan ) -- Avoid making connections to the master insecure by default -- Let users override the master URL in kubeconfig via a flag +## Version 1.4 (Fri May 15 2015 Tim Hockin ) +- First Changelog entry From 5826cfe299112928ae29ac131b9447fd7194ff39 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Fri, 19 Jun 2015 20:59:58 -0700 Subject: [PATCH 05/16] Make kube2sky fall back on service accounts Service accounts are as yet unverified (no CA cert) but at least it will work. (cherry picked from commit 2b4da35499ba0456ba898d8ad0b294cfd3d2b1d9) --- cluster/addons/dns/kube2sky/Changelog | 4 ++++ cluster/addons/dns/kube2sky/Makefile | 2 +- cluster/addons/dns/kube2sky/kube2sky.go | 32 ++++++++++++++----------- cluster/addons/dns/skydns-rc.yaml.in | 11 +++++---- 4 files changed, 29 insertions(+), 20 deletions(-) diff --git a/cluster/addons/dns/kube2sky/Changelog b/cluster/addons/dns/kube2sky/Changelog index 715849634e..b0017cc9cf 100644 --- a/cluster/addons/dns/kube2sky/Changelog +++ b/cluster/addons/dns/kube2sky/Changelog @@ -1,3 +1,7 @@ +## Version 1.10 (Jun 19 2015 Tim Hockin ) +- Fall back on service account tokens if no other auth is specified. + + ## Version 1.9 (May 28 2015 Abhishek Shah ) - Add SRV support. diff --git a/cluster/addons/dns/kube2sky/Makefile b/cluster/addons/dns/kube2sky/Makefile index bbf5c69227..7504446d80 100644 --- a/cluster/addons/dns/kube2sky/Makefile +++ b/cluster/addons/dns/kube2sky/Makefile @@ -4,7 +4,7 @@ .PHONY: all kube2sky container push clean test -TAG = 1.9 +TAG = 1.10 PREFIX = gcr.io/google_containers all: container diff --git a/cluster/addons/dns/kube2sky/kube2sky.go b/cluster/addons/dns/kube2sky/kube2sky.go index fd85d8d00e..3cc21d24d9 100644 --- a/cluster/addons/dns/kube2sky/kube2sky.go +++ b/cluster/addons/dns/kube2sky/kube2sky.go @@ -46,10 +46,11 @@ import ( ) var ( + // TODO: switch to pflag and make - and _ equivalent. argDomain = flag.String("domain", "cluster.local", "domain under which to create names") argEtcdMutationTimeout = flag.Duration("etcd_mutation_timeout", 10*time.Second, "crash after retrying etcd mutation for a specified duration") argEtcdServer = flag.String("etcd-server", "http://127.0.0.1:4001", "URL to etcd server") - argKubecfgFile = flag.String("kubecfg_file", "", "Location of kubecfg file for access to kubernetes service") + argKubecfgFile = flag.String("kubecfg_file", "", "Location of kubecfg file for access to kubernetes master service; --kube_master_url overrides the URL part of this; if neither this nor --kube_master_url are provided, defaults to service account tokens") argKubeMasterURL = flag.String("kube_master_url", "", "URL to reach kubernetes master. Env variables in this flag will be expanded.") ) @@ -405,7 +406,7 @@ func newEtcdClient(etcdServer string) (*etcd.Client, error) { return client, nil } -func getKubeMasterURL() (string, error) { +func expandKubeMasterURL() (string, error) { parsedURL, err := url.Parse(os.ExpandEnv(*argKubeMasterURL)) if err != nil { return "", fmt.Errorf("failed to parse --kube_master_url %s - %v", *argKubeMasterURL, err) @@ -423,31 +424,34 @@ func newKubeClient() (*kclient.Client, error) { err error masterURL string ) + // If the user specified --kube_master_url, expand env vars and verify it. if *argKubeMasterURL != "" { - masterURL, err = getKubeMasterURL() + masterURL, err = expandKubeMasterURL() if err != nil { return nil, err } } - if *argKubecfgFile == "" { - if masterURL == "" { - return nil, fmt.Errorf("--kube_master_url must be set when --kubecfg_file is not set") - } + if masterURL != "" && *argKubecfgFile == "" { + // Only --kube_master_url was provided. config = &kclient.Config{ Host: masterURL, - Version: "v1beta3", + Version: "v1", } } else { + // We either have: + // 1) --kube_master_url and --kubecfg_file + // 2) just --kubecfg_file + // 3) neither flag + // In any case, the logic is the same. If (3), this will automatically + // fall back on the service account token. overrides := &kclientcmd.ConfigOverrides{} - if masterURL != "" { - overrides.ClusterInfo.Server = masterURL - } - if config, err = kclientcmd.NewNonInteractiveDeferredLoadingClientConfig( - &kclientcmd.ClientConfigLoadingRules{ExplicitPath: *argKubecfgFile}, - overrides).ClientConfig(); err != nil { + overrides.ClusterInfo.Server = masterURL // might be "", but that is OK + rules := &kclientcmd.ClientConfigLoadingRules{ExplicitPath: *argKubecfgFile} // might be "", but that is OK + if config, err = kclientcmd.NewNonInteractiveDeferredLoadingClientConfig(rules, overrides).ClientConfig(); err != nil { return nil, err } } + glog.Infof("Using %s for kubernetes master", config.Host) glog.Infof("Using kubernetes API %s", config.Version) return kclient.New(config) diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index 69dd842309..63e43e6173 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -1,21 +1,22 @@ apiVersion: v1beta3 kind: ReplicationController metadata: - name: kube-dns-v3 + name: kube-dns-v4 namespace: default labels: - k8s-app: kube-dns-v3 + k8s-app: kube-dns + version: v4 kubernetes.io/cluster-service: "true" spec: replicas: {{ pillar['dns_replicas'] }} selector: k8s-app: kube-dns - version: v3 + version: v4 template: metadata: labels: k8s-app: kube-dns - version: v3 + version: v4 kubernetes.io/cluster-service: "true" spec: containers: @@ -30,7 +31,7 @@ spec: - -initial-cluster-token - skydns-etcd - name: kube2sky - image: gcr.io/google_containers/kube2sky:1.9 + image: gcr.io/google_containers/kube2sky:1.10 args: # command = "/kube2sky" - -domain={{ pillar['dns_domain'] }} From e38221bb8f8713c6f29efc33dd4423d106d907db Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Thu, 25 Jun 2015 16:23:49 -0700 Subject: [PATCH 06/16] Stop using special tokens for DNS (cherry picked from commit 1ce7f1b5be584be4c5d55e4aea34b27bdf2aa1c4) --- cluster/addons/dns/skydns-rc.yaml.in | 9 --------- 1 file changed, 9 deletions(-) diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index 63e43e6173..b8948132e0 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -35,11 +35,6 @@ spec: args: # command = "/kube2sky" - -domain={{ pillar['dns_domain'] }} - - -kubecfg_file=/etc/dns_token/kubeconfig - volumeMounts: - - mountPath: /etc/dns_token - name: dns-token - readOnly: true - name: skydns image: gcr.io/google_containers/skydns:2015-03-11-001 args: @@ -63,7 +58,3 @@ spec: initialDelaySeconds: 30 timeoutSeconds: 5 dnsPolicy: Default # Don't use cluster DNS. - volumes: - - name: dns-token - secret: - secretName: token-system-dns From 538f0381e65d364de431405f89f71acff1c51895 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Thu, 25 Jun 2015 16:28:51 -0700 Subject: [PATCH 07/16] Use v1 API (cherry picked from commit 07e75c1dece4f404c889d7e9dca772600faac22e) --- cluster/addons/dns/README.md | 2 +- cluster/addons/dns/skydns-rc.yaml.in | 2 +- cluster/addons/dns/skydns-svc.yaml.in | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cluster/addons/dns/README.md b/cluster/addons/dns/README.md index b273aa4ca3..1c99dccd75 100644 --- a/cluster/addons/dns/README.md +++ b/cluster/addons/dns/README.md @@ -109,7 +109,7 @@ Create a file named busybox.yaml with the following contents: ```yaml -apiVersion: v1beta3 +apiVersion: v1 kind: Pod metadata: name: busybox diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index b8948132e0..d958a89007 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -1,4 +1,4 @@ -apiVersion: v1beta3 +apiVersion: v1 kind: ReplicationController metadata: name: kube-dns-v4 diff --git a/cluster/addons/dns/skydns-svc.yaml.in b/cluster/addons/dns/skydns-svc.yaml.in index 15e85d6c16..e2ba81b8a1 100644 --- a/cluster/addons/dns/skydns-svc.yaml.in +++ b/cluster/addons/dns/skydns-svc.yaml.in @@ -1,4 +1,4 @@ -apiVersion: v1beta3 +apiVersion: v1 kind: Service metadata: name: kube-dns @@ -10,7 +10,7 @@ metadata: spec: selector: k8s-app: kube-dns - portalIP: {{ pillar['dns_server'] }} + clusterIP: {{ pillar['dns_server'] }} ports: - name: dns port: 53 From f42fc3962748ec0be907df83e1a223afd7184b3e Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Thu, 25 Jun 2015 17:11:53 -0700 Subject: [PATCH 08/16] Use the svc.cluster.local name for DNS health checks (cherry picked from commit 6757a1ce945ac7d47d7dbaa4eb68f923d170a979) --- cluster/addons/dns/skydns-rc.yaml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index d958a89007..3f658f45f5 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -54,7 +54,7 @@ spec: command: - /bin/sh - -c - - nslookup kubernetes.default.{{ pillar['dns_domain'] }} localhost >/dev/null + - nslookup kubernetes.default.svc.{{ pillar['dns_domain'] }} localhost >/dev/null initialDelaySeconds: 30 timeoutSeconds: 5 dnsPolicy: Default # Don't use cluster DNS. From b7162294ea69fe4d39f235be5167860cbe68d44c Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Mon, 29 Jun 2015 14:01:25 -0700 Subject: [PATCH 09/16] Kubernetes version v0.20.1 --- pkg/version/base.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/version/base.go b/pkg/version/base.go index bdf53d46f1..f0be9c86f4 100644 --- a/pkg/version/base.go +++ b/pkg/version/base.go @@ -36,8 +36,8 @@ package version var ( // TODO: Deprecate gitMajor and gitMinor, use only gitVersion instead. gitMajor string = "0" // major version, always numeric - gitMinor string = "20.0" // minor version, numeric possibly followed by "+" - gitVersion string = "v0.20.0" // version from git, output of $(git describe) + gitMinor string = "20.1" // minor version, numeric possibly followed by "+" + gitVersion string = "v0.20.1" // version from git, output of $(git describe) gitCommit string = "" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" ) From 9676e5b0fd04fc824c40633b8d58fb39b32b1e03 Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Mon, 29 Jun 2015 14:01:25 -0700 Subject: [PATCH 10/16] Kubernetes version v0.20.1-dev --- pkg/version/base.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/version/base.go b/pkg/version/base.go index f0be9c86f4..b8c83182e7 100644 --- a/pkg/version/base.go +++ b/pkg/version/base.go @@ -36,8 +36,8 @@ package version var ( // TODO: Deprecate gitMajor and gitMinor, use only gitVersion instead. gitMajor string = "0" // major version, always numeric - gitMinor string = "20.1" // minor version, numeric possibly followed by "+" - gitVersion string = "v0.20.1" // version from git, output of $(git describe) + gitMinor string = "20.1+" // minor version, numeric possibly followed by "+" + gitVersion string = "v0.20.1-dev" // version from git, output of $(git describe) gitCommit string = "" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" ) From e242b0158c97835aabe158e1c48bff37c6e41e79 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Fri, 26 Jun 2015 11:00:54 -0400 Subject: [PATCH 11/16] Don't make kubelet systemd service depend on Docker Fixes #10379 (cherry picked from commit 54d3ac92eab8e408e7e163bb86d5d165707c3dcc) --- cluster/saltbase/salt/kubelet/kubelet.service | 2 -- 1 file changed, 2 deletions(-) diff --git a/cluster/saltbase/salt/kubelet/kubelet.service b/cluster/saltbase/salt/kubelet/kubelet.service index e5ffdb0804..0c5b653e50 100644 --- a/cluster/saltbase/salt/kubelet/kubelet.service +++ b/cluster/saltbase/salt/kubelet/kubelet.service @@ -1,8 +1,6 @@ [Unit] Description=Kubernetes Kubelet Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes -After=docker.service -Requires=docker.service [Service] EnvironmentFile=/etc/sysconfig/kubelet From c1faae2c3047e5da3265ee03b42fc970e507902c Mon Sep 17 00:00:00 2001 From: Prashanth Balasubramanian Date: Sun, 28 Jun 2015 19:36:27 -0700 Subject: [PATCH 12/16] Kubelet doesn't fight apiserver for cputime on the master. (cherry picked from commit 029e0ad35097c3c8fabc9812f0bc86efe699afe3) --- pkg/kubelet/status_manager.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/status_manager.go b/pkg/kubelet/status_manager.go index a3501a72b1..d793b08b28 100644 --- a/pkg/kubelet/status_manager.go +++ b/pkg/kubelet/status_manager.go @@ -64,6 +64,13 @@ func isStatusEqual(oldStatus, status *api.PodStatus) bool { } func (s *statusManager) Start() { + // Don't start the status manager if we don't have a client. This will happen + // on the master, where the kubelet is responsible for bootstrapping the pods + // of the master components. + if s.kubeClient == nil { + glog.Infof("Kubernetes client is nil, not starting status manager.") + return + } // syncBatch blocks when no updates are available, we can run it in a tight loop. glog.Info("Starting to sync pod status with apiserver") go util.Forever(func() { @@ -142,10 +149,6 @@ func (s *statusManager) RemoveOrphanedStatuses(podFullNames map[string]bool) { // syncBatch syncs pods statuses with the apiserver. func (s *statusManager) syncBatch() error { - if s.kubeClient == nil { - glog.V(4).Infof("Kubernetes client is nil, skipping pod status updates") - return nil - } syncRequest := <-s.podStatusChannel pod := syncRequest.pod podFullName := kubecontainer.GetPodFullName(pod) From 8cd68b66298368903050c205025ddad87edc2cae Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Mon, 29 Jun 2015 17:58:38 -0700 Subject: [PATCH 13/16] wait until a token shows up to start addons (cherry picked from commit dcd91666b9606424c216dcaf035db0d7afd2af08) --- cluster/saltbase/salt/kube-addons/kube-addons.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cluster/saltbase/salt/kube-addons/kube-addons.sh b/cluster/saltbase/salt/kube-addons/kube-addons.sh index 4c1f6b452b..7f365d3a7f 100644 --- a/cluster/saltbase/salt/kube-addons/kube-addons.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addons.sh @@ -134,6 +134,15 @@ for k,v in yaml.load(sys.stdin).iteritems(): ''' < "${kube_env_yaml}") fi +# Wait for the default service account +token_found="" +while [ -z "${token_made}" ]; do + sleep .5 + token_found=$(${KUBECTL} get serviceaccount default -o template -t "{{with index .secrets 0}}{{.name}}{{end}}" || echo "") +done + +echo "default service account has token ${token_found}" + # Generate secrets for "internal service accounts". # TODO(etune): move to a completely yaml/object based # workflow so that service accounts can be created From 6d92c21a7c6016c7f244ef53c170a2fe4d1dcec1 Mon Sep 17 00:00:00 2001 From: Zach Loafman Date: Tue, 30 Jun 2015 06:51:10 -0700 Subject: [PATCH 14/16] Fix issues mentioned in #10520 (cherry picked from commit f21b6b89d109d44662c4041a0378804b26f1a26c) --- cluster/saltbase/salt/kube-addons/kube-addons.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cluster/saltbase/salt/kube-addons/kube-addons.sh b/cluster/saltbase/salt/kube-addons/kube-addons.sh index 7f365d3a7f..969ae46926 100644 --- a/cluster/saltbase/salt/kube-addons/kube-addons.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addons.sh @@ -136,12 +136,12 @@ fi # Wait for the default service account token_found="" -while [ -z "${token_made}" ]; do +while [ -z "${token_found}" ]; do sleep .5 - token_found=$(${KUBECTL} get serviceaccount default -o template -t "{{with index .secrets 0}}{{.name}}{{end}}" || echo "") + token_found=$(${KUBECTL} get serviceaccount default -o template -t "{{with index .secrets 0}}{{.name}}{{end}}" || true) done -echo "default service account has token ${token_found}" +echo "== default service account has token ${token_found} ==" # Generate secrets for "internal service accounts". # TODO(etune): move to a completely yaml/object based @@ -180,6 +180,3 @@ while true; do `dirname $0`/kube-addon-update.sh /etc/kubernetes/addons sleep $ADDON_CHECK_INTERVAL_SEC done - - - From 323fde5bc5c45e30bbb5451ccf5c1ff01b0717f7 Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Tue, 30 Jun 2015 11:03:55 -0700 Subject: [PATCH 15/16] Kubernetes version v0.20.2 --- pkg/version/base.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/version/base.go b/pkg/version/base.go index b8c83182e7..15a90b2d90 100644 --- a/pkg/version/base.go +++ b/pkg/version/base.go @@ -36,8 +36,8 @@ package version var ( // TODO: Deprecate gitMajor and gitMinor, use only gitVersion instead. gitMajor string = "0" // major version, always numeric - gitMinor string = "20.1+" // minor version, numeric possibly followed by "+" - gitVersion string = "v0.20.1-dev" // version from git, output of $(git describe) + gitMinor string = "20.2" // minor version, numeric possibly followed by "+" + gitVersion string = "v0.20.2" // version from git, output of $(git describe) gitCommit string = "" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" ) From 205dfeaa2761043c5e81c57ae9cb73a471157561 Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Tue, 30 Jun 2015 11:03:55 -0700 Subject: [PATCH 16/16] Kubernetes version v0.20.2-dev --- pkg/version/base.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/version/base.go b/pkg/version/base.go index 15a90b2d90..07f71c6007 100644 --- a/pkg/version/base.go +++ b/pkg/version/base.go @@ -36,8 +36,8 @@ package version var ( // TODO: Deprecate gitMajor and gitMinor, use only gitVersion instead. gitMajor string = "0" // major version, always numeric - gitMinor string = "20.2" // minor version, numeric possibly followed by "+" - gitVersion string = "v0.20.2" // version from git, output of $(git describe) + gitMinor string = "20.2+" // minor version, numeric possibly followed by "+" + gitVersion string = "v0.20.2-dev" // version from git, output of $(git describe) gitCommit string = "" // sha1 from git, output of $(git rev-parse HEAD) gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" )