---
title: "Kubernetes Release: 0.17.0"
date: 2015-05-15
slug: kubernetes-release-0170
url: /blog/2015/05/Kubernetes-Release-0170
evergreen: true
---
Release Notes:
* Cleanups
* Remove old salt configs [#8065][4] (roberthbailey)
* Kubelet: minor cleanups [#8069][5] (yujuhong)
* v1beta3
* update example/walkthrough to v1beta3 [#7940][6] (caesarxuchao)
* update example/rethinkdb to v1beta3 [#7946][7] (caesarxuchao)
* verify the v1beta3 yaml files all work; merge the yaml files [#7917][8] (caesarxuchao)
* update examples/cassandra to api v1beta3 [#7258][9] (caesarxuchao)
* update service.json in persistent-volume example to v1beta3 [#7899][10] (caesarxuchao)
* update mysql-wordpress example to use v1beta3 API [#7864][11] (caesarxuchao)
* Update examples/meteor to use API v1beta3 [#7848][12] (caesarxuchao)
* update node-selector example to API v1beta3 [#7872][13] (caesarxuchao)
* update logging-demo to use API v1beta3; modify the way to access Elasticsearch and Kibana services [#7824][14] (caesarxuchao)
* Convert the skydns rc to use v1beta3 and add a health check to it [#7619][15] (a-robinson)
* update the hazelcast example to API version v1beta3 [#7728][16] (caesarxuchao)
* Fix YAML parsing for v1beta3 objects in the kubelet for file/http [#7515][17] (brendandburns)
* Updated kubectl cluster-info to show v1beta3 addresses [#7502][18] (piosz)
* Kubelet
* kubelet: Fix racy kubelet tests. [#7980][19] (yifan-gu)
* kubelet/container: Move prober.ContainerCommandRunner to container. [#8079][20] (yifan-gu)
* Kubelet: set host field in the pending pod status [#6127][21] (yujuhong)
* Fix the kubelet node watch [#6442][22] (yujuhong)
* Kubelet: recreate mirror pod if the static pod changes [#6607][23] (yujuhong)
* Kubelet: record the timestamp correctly in the runtime cache [#7749][24] (yujuhong)
* Kubelet: wait until container runtime is up [#7729][25] (yujuhong)
* Kubelet: replace DockerManager with the Runtime interface [#7674][26] (yujuhong)
* Kubelet: filter out terminated pods in SyncPods [#7301][27] (yujuhong)
* Kubelet: parallelize cleaning up containers in unwanted pods [#7048][28] (yujuhong)
* kubelet: Add container runtime option for rkt. [#7952][29] (yifan-gu)
* kubelet/rkt: Remove build label. [#7916][30] (yifan-gu)
* kubelet/metrics: Move instrumented_docker.go to dockertools. [#7327][31] (yifan-gu)
* kubelet/rkt: Add GetPods() for rkt. [#7599][32] (yifan-gu)
* kubelet/rkt: Add KillPod() and GetPodStatus() for rkt. [#7605][33] (yifan-gu)
* pkg/kubelet: Fix logging. [#4755][34] (yifan-gu)
* kubelet: Refactor RunInContainer/ExecInContainer/PortForward. [#6491][35] (yifan-gu)
* kubelet/DockerManager: Fix returning empty error from GetPodStatus(). [#6609][36] (yifan-gu)
* kubelet: Move pod infra container image setting to dockertools. [#6634][37] (yifan-gu)
* kubelet/fake_docker_client: Use self's PID instead of 42 in testing. [#6653][38] (yifan-gu)
* kubelet/dockertool: Move Getpods() to DockerManager. [#6778][39] (yifan-gu)
* kubelet/dockertools: Add puller interfaces in the containerManager. [#6776][40] (yifan-gu)
* kubelet: Introduce PodInfraContainerChanged(). [#6608][41] (yifan-gu)
* kubelet/container: Replace DockerCache with RuntimeCache. [#6795][42] (yifan-gu)
* kubelet: Clean up computePodContainerChanges. [#6844][43] (yifan-gu)
* kubelet: Refactor prober. [#7009][44] (yifan-gu)
* kubelet/container: Update the runtime interface. [#7466][45] (yifan-gu)
* kubelet: Refactor isPodRunning() in runonce.go [#7477][46] (yifan-gu)
* kubelet/rkt: Add basic rkt runtime routines. [#7465][47] (yifan-gu)
* kubelet/rkt: Add podInfo. [#7555][48] (yifan-gu)
* kubelet/container: Add GetContainerLogs to runtime interface. [#7488][49] (yifan-gu)
* kubelet/rkt: Add routines for converting kubelet pod to rkt pod. [#7543][50] (yifan-gu)
* kubelet/rkt: Add RunPod() for rkt. [#7589][51] (yifan-gu)
* kubelet/rkt: Add RunInContainer()/ExecInContainer()/PortForward(). [#7553][52] (yifan-gu)
* kubelet/container: Move ShouldContainerBeRestarted() to runtime. [#7613][53] (yifan-gu)
* kubelet/rkt: Add SyncPod() to rkt. [#7611][54] (yifan-gu)
* Kubelet: persist restart count of a container [#6794][55] (yujuhong)
* kubelet/container: Move pty*.go to container runtime package. [#7951][56] (yifan-gu)
* kubelet: Add container runtime option for rkt. [#7900][57] (yifan-gu)
* kubelet/rkt: Add docker prefix to image string. [#7803][58] (yifan-gu)
* kubelet/rkt: Inject dependencies to rkt. [#7849][59] (yifan-gu)
* kubelet/rkt: Remove dependencies on rkt.store [#7859][60] (yifan-gu)
* Kubelet talks securely to apiserver [#2387][61] (erictune)
* Rename EnvVarSource.FieldPath -> FieldRef and add example [#7592][62] (pmorie)
* Add containerized option to kubelet binary [#7741][63] (pmorie)
* Ease building kubelet image [#7948][64] (pmorie)
* Remove unnecessary bind-mount from dockerized kubelet run [#7854][65] (pmorie)
* Add ability to dockerize kubelet in local cluster [#7798][66] (pmorie)
* Create docker image for kubelet [#7797][67] (pmorie)
* Security context - types, kubelet, admission [#7343][68] (pweil-)
* Kubelet: Add rkt as a runtime option [#7743][69] (vmarmol)
* Fix kubelet's docker RunInContainer implementation [#7746][70] (vishh)
* AWS
* AWS: Don't try to copy gce_keys in jenkins e2e job [#8018][71] (justinsb)
* AWS: Copy some new properties from config-default => config.test [#7992][72] (justinsb)
* AWS: make it possible to disable minion public ip assignment [#7928][73] (manolitto)
* update AWS CloudFormation template and cloud-configs [#7667][74] (antoineco)
* AWS: Fix variable naming that meant not all tokens were written [#7736][75] (justinsb)
* AWS: Change apiserver to listen on 443 directly, not through nginx [#7678][76] (justinsb)
* AWS: Improving getting existing VPC and subnet [#6606][77] (gust1n)
* AWS EBS volume support [#5138][78] (justinsb)
* Introduce an 'svc' segment for DNS search [#8089][79] (thockin)
* Adds ability to define a prefix for etcd paths [#5707][80] (kbeecher)
* Add kubectl log --previous support to view last terminated container log [#7973][81] (dchen1107)
* Add a flag to disable legacy APIs [#8083][82] (brendandburns)
* make the dockerkeyring handle mutiple matching credentials [#7971][83] (deads2k)
* Convert Fluentd to Cloud Logging pod specs to YAML [#8078][84] (satnam6502)
* Use etcd to allocate PortalIPs instead of in-mem [#7704][85] (smarterclayton)
* eliminate auth-path [#8064][86] (deads2k)
* Record failure reasons for image pulling [#7981][87] (yujuhong)
* Rate limit replica creation [#7869][88] (bprashanth)
* Upgrade to Kibana 4 for cluster logging [#7995][89] (satnam6502)
* Added name to kube-dns service [#8049][90] (piosz)
* Fix validation by moving it into the resource builder. [#7919][91] (brendandburns)
* Add cache with multiple shards to decrease lock contention [#8050][92] (fgrzadkowski)
* Delete status from displayable resources [#8039][93] (nak3)
* Refactor volume interfaces to receive pod instead of ObjectReference [#8044][94] (pmorie)
* fix kube-down for provider gke [#7565][95] (jlowdermilk)
* Service port names are required for multi-port [#7786][96] (thockin)
* Increase disk size for kubernetes master. [#8051][97] (fgrzadkowski)
* expose: Load input object for increased safety [#7774][98] (kargakis)
* Improments to conversion methods generator [#7896][99] (wojtek-t)
* Added displaying external IPs to kubectl cluster-info [#7557][100] (piosz)
* Add missing Errorf formatting directives [#8037][101] (shawnps)
* Add startup code to apiserver to migrate etcd keys [#7567][102] (kbeecher)
* Use error type from docker go-client instead of string [#8021][103] (ddysher)
* Accurately get hardware cpu count in Vagrantfile. [#8024][104] (BenTheElder)
* Stop setting a GKE specific version of the kubeconfig file [#7921][105] (roberthbailey)
* Make the API server deal with HEAD requests via the service proxy [#7950][106] (satnam6502)
* GlusterFS Critical Bug Resolved - Removing warning in README [#7983][107] (wattsteve)
* Don't use the first token `uname -n` as the hostname [#7967][108] (yujuhong)
* Call kube-down in test-teardown for vagrant. [#7982][109] (BenTheElder)
* defaults_tests: verify defaults when converting to an API object [#6235][110] (yujuhong)
* Use the full hostname for mirror pod name. [#7910][111] (yujuhong)
* Removes RunPod in the Runtime interface [#7657][112] (yujuhong)
* Clean up dockertools/manager.go and add more unit tests [#7533][113] (yujuhong)
* Adapt pod killing and cleanup for generic container runtime [#7525][114] (yujuhong)
* Fix pod filtering in replication controller [#7198][115] (yujuhong)
* Print container statuses in `kubectl get pods` [#7116][116] (yujuhong)
* Prioritize deleting the non-running pods when reducing replicas [#6992][117] (yujuhong)
* Fix locking issue in pod manager [#6872][118] (yujuhong)
* Limit the number of concurrent tests in integration.go [#6655][119] (yujuhong)
* Fix typos in different config comments [#7931][120] (pmorie)
* Update cAdvisor dependency. [#7929][121] (vmarmol)
* Ubuntu-distro: deprecate & merge ubuntu single node work to ubuntu cluster node stuff[#5498][122] (resouer)
* Add control variables to Jenkins E2E script [#7935][123] (saad-ali)
* Check node status as part of validate-cluster.sh. [#7932][124] (fabioy)
* Add old endpoint cleanup function [#7821][125] (lavalamp)
* Support recovery from in the middle of a rename. [#7620][126] (brendandburns)
* Update Exec and Portforward client to use pod subresource [#7715][127] (csrwng)
* Added NFS to PV structs [#7564][128] (markturansky)
* Fix environment variable error in Vagrant docs [#7904][129] (posita)
* Adds a simple release-note builder that scrapes the GitHub API for recent PRs [#7616][130](brendandburns)
* Scheduler ignores nodes that are in a bad state [#7668][131] (bprashanth)
* Set GOMAXPROCS for etcd [#7863][132] (fgrzadkowski)
* Auto-generated conversion methods calling one another [#7556][133] (wojtek-t)
* Bring up a kuberenetes cluster using coreos image as worker nodes [#7445][134] (dchen1107)
* Godep: Add godep for rkt. [#7410][135] (yifan-gu)
* Add volumeGetter to rkt. [#7870][136] (yifan-gu)
* Update cAdvisor dependency. [#7897][137] (vmarmol)
* DNS: expose 53/TCP [#7822][138] (thockin)
* Set NodeReady=False when docker is dead [#7763][139] (wojtek-t)
* Ignore latency metrics for events [#7857][140] (fgrzadkowski)
* SecurityContext admission clean up [#7792][141] (pweil-)
* Support manually-created and generated conversion functions [#7832][142] (wojtek-t)
* Add latency metrics for etcd operations [#7833][143] (fgrzadkowski)
* Update errors_test.go [#7885][144] (hurf)
* Change signature of container runtime PullImage to allow pull w/ secret [#7861][145] (pmorie)
* Fix bug in Service documentation: incorrect location of "selector" in JSON [#7873][146](bkeroackdsc)
* Fix controller-manager manifest for providers that don't specify CLUSTER_IP_RANGE[#7876][147] (cjcullen)
* Fix controller unittests [#7867][148] (bprashanth)
* Enable GCM and GCL instead of InfluxDB on GCE [#7751][149] (saad-ali)
* Remove restriction that cluster-cidr be a class-b [#7862][150] (cjcullen)
* Fix OpenShift example [#7591][151] (derekwaynecarr)
* API Server - pass path name in context of create request for subresource [#7718][152] (csrwng)
* Rolling Updates: Add support for --rollback. [#7575][153] (brendandburns)
* Update to container-vm-v20150505 (Also updates GCE to Docker 1.6) [#7820][154] (zmerlynn)
* Fix metric label [#7830][155] (rhcarvalho)
* Fix v1beta1 typos in v1beta2 conversions [#7838][156] (pmorie)
* skydns: use the etcd-2.x native syntax, enable IANA attributed ports. [#7764][157](AntonioMeireles)
* Added port 6443 to kube-proxy default IP address for api-server [#7794][158] (markllama)
* Added client header info for authentication doc. [#7834][159] (ashcrow)
* Clean up safe_format_and_mount spam in the startup logs [#7827][160] (zmerlynn)
* Set allocate_node_cidrs to be blank by default. [#7829][161] (roberthbailey)
* Fix sync problems in [#5246][162] [#7799][163] (cjcullen)
* Fix event doc link [#7823][164] (saad-ali)
* Cobra update and bash completions fix [#7776][165] (eparis)
* Fix kube2sky flakes. Fix tools.GetEtcdVersion to work with etcd > 2.0.7 [#7675][166] (cjcullen)
* Change kube2sky to use token-system-dns secret, point at https endpoint ... [#7154][167](cjcullen)
* replica: serialize created-by reference [#7468][168] (simon3z)
* Inject mounter into volume plugins [#7702][169] (pmorie)
* bringing CoreOS cloud-configs up-to-date (against 0.15.x and latest OS' alpha) [#6973][170](AntonioMeireles)
* Update kubeconfig-file doc. [#7787][171] (jlowdermilk)
* Throw an API error when deleting namespace in termination [#7780][172] (derekwaynecarr)
* Fix command field PodExecOptions [#7773][173] (csrwng)
* Start ImageManager housekeeping in Run(). [#7785][174] (vmarmol)
* fix DeepCopy to properly support runtime.EmbeddedObject [#7769][175] (deads2k)
* fix master service endpoint system for multiple masters [#7273][176] (lavalamp)
* Add genbashcomp to KUBE_TEST_TARGETS [#7757][177] (nak3)
* Change the cloud provider TCPLoadBalancerExists function to GetTCPLoadBalancer...[#7669][178] (a-robinson)
* Add containerized option to kubelet binary [#7772][179] (pmorie)
* Fix swagger spec [#7779][180] (pmorie)
* FIX: Issue [#7750][181] \- Hyperkube docker image needs certificates to connect to cloud-providers[#7755][182] (viklas)
* Add build labels to rkt [#7752][183] (vmarmol)
* Check license boilerplate for python files [#7672][184] (eparis)
* Reliable updates in rollingupdate [#7705][185] (bprashanth)
* Don't exit abruptly if there aren't yet any minions right after the cluster is created. [#7650][186](roberthbailey)
* Make changes suggested in [#7675][166] [#7742][187] (cjcullen)
* A guide to set up kubernetes multiple nodes cluster with flannel on fedora [#7357][188](aveshagarwal)
* Setup generators in factory [#7760][189] (kargakis)
* Reduce usage of time.After [#7737][190] (lavalamp)
* Remove node status from "componentstatuses" call. [#7735][191] (fabioy)
* React to failure by growing the remaining clusters [#7614][192] (tamsky)
* Fix typo in runtime_cache.go [#7725][193] (pmorie)
* Update non-GCE Salt distros to 1.6.0, fallback to ContainerVM Docker version on GCE[#7740][194] (zmerlynn)
* Skip SaltStack install if it's already installed [#7744][195] (zmerlynn)
* Expose pod name as a label on containers. [#7712][196] (rjnagal)
* Log which SSH key is used in e2e SSH test [#7732][197] (mbforbes)
* Add a central simple getting started guide with kubernetes guide. [#7649][198] (brendandburns)
* Explicitly state the lack of support for 'Requests' for the purposes of scheduling [#7443][199](vishh)
* Select IPv4-only from host interfaces [#7721][200] (smarterclayton)
* Metrics tests can't run on Mac [#7723][201] (smarterclayton)
* Add step to API changes doc for swagger regen [#7727][202] (pmorie)
* Add NsenterMounter mount implementation [#7703][203] (pmorie)
* add StringSet.HasAny [#7509][204] (deads2k)
* Add an integration test that checks for the metrics we expect to be exported from the master [#6941][205] (a-robinson)
* Minor bash update found by shellcheck.net [#7722][206] (eparis)
* Add --hostport to run-container. [#7536][207] (rjnagal)
* Have rkt implement the container Runtime interface [#7659][208] (vmarmol)
* Change the order the different versions of API are registered [#7629][209] (caesarxuchao)
* expose: Create objects in a generic way [#7699][210] (kargakis)
* Requeue rc if a single get/put retry on status.Replicas fails [#7643][211] (bprashanth)
* logs for master components [#7316][212] (ArtfulCoder)
* cloudproviders: add ovirt getting started guide [#7522][213] (simon3z)
* Make rkt-install a oneshot. [#7671][214] (vmarmol)
* Provide container_runtime flag to Kubelet in CoreOS. [#7665][215] (vmarmol)
* Boilerplate speedup [#7654][216] (eparis)
* Log host for failed pod in Density test [#7700][217] (wojtek-t)
* Removes spurious quotation mark [#7655][218] (alindeman)
* Add kubectl_label to custom functions in bash completion [#7694][219] (nak3)
* Enable profiling in kube-controller [#7696][220] (wojtek-t)
* Set vagrant test cluster default NUM_MINIONS=2 [#7690][221] (BenTheElder)
* Add metrics to measure cache hit ratio [#7695][222] (fgrzadkowski)
* Change IP to IP(S) in service columns for kubectl get [#7662][223] (jlowdermilk)
* annotate required flags for bash_completions [#7076][224] (eparis)
* (minor) Add pgrep debugging to etcd error [#7685][225] (jayunit100)
* Fixed nil pointer issue in describe when volume is unbound [#7676][226] (markturansky)
* Removed unnecessary closing bracket [#7691][227] (piosz)
* Added TerminationGracePeriod field to PodSpec and grace-period flag to kubectl stop[#7432][228] (piosz)
* Fix boilerplate in test/e2e/scale.go [#7689][229] (wojtek-t)
* Update expiration timeout based on observed latencies [#7628][230] (bprashanth)
* Output generated conversion functions/names [#7644][231] (liggitt)
* Moved the Scale tests into a scale file. [#7645][232] [#7646][233] (rrati)
* Truncate GCE load balancer names to 63 chars [#7609][234] (brendandburns)
* Add SyncPod() and remove Kill/Run InContainer(). [#7603][235] (vmarmol)
* Merge release 0.16 to master [#7663][236] (brendandburns)
* Update license boilerplate for examples/rethinkdb [#7637][237] (eparis)
* First part of improved rolling update, allow dynamic next replication controller generation.[#7268][238] (brendandburns)
* Add license boilerplate to examples/phabricator [#7638][239] (eparis)
* Use generic copyright holder name in license boilerplate [#7597][240] (eparis)
* Retry incrementing quota if there is a conflict [#7633][241] (derekwaynecarr)
* Remove GetContainers from Runtime interface [#7568][242] (yujuhong)
* Add image-related methods to DockerManager [#7578][243] (yujuhong)
* Remove more docker references in kubelet [#7586][244] (yujuhong)
* Add KillContainerInPod in DockerManager [#7601][245] (yujuhong)
* Kubelet: Add container runtime option. [#7652][246] (vmarmol)
* bump heapster to v0.11.0 and grafana to v0.7.0 [#7626][247] (idosh)
* Build github.com/onsi/ginkgo/ginkgo as a part of the release [#7593][248] (ixdy)
* Do not automatically decode runtime.RawExtension [#7490][249] (smarterclayton)
* Update changelog. [#7500][250] (brendandburns)
* Add SyncPod() to DockerManager and use it in Kubelet [#7610][251] (vmarmol)
* Build: Push .md5 and .sha1 files for every file we push to GCS [#7602][252] (zmerlynn)
* Fix rolling update --image [#7540][253] (bprashanth)
* Update license boilerplate for docs/man/md2man-all.sh [#7636][254] (eparis)
* Include shell license boilerplate in examples/k8petstore [#7632][255] (eparis)
* Add --cgroup_parent flag to Kubelet to set the parent cgroup for pods [#7277][256] (guenter)
* change the current dir to the config dir [#7209][257] (you-n-g)
* Set Weave To 0.9.0 And Update Etcd Configuration For Azure [#7158][258] (idosh)
* Augment describe to search for matching things if it doesn't match the original resource.[#7467][259] (brendandburns)
* Add a simple cache for objects stored in etcd. [#7559][260] (fgrzadkowski)
* Rkt gc [#7549][261] (yifan-gu)
* Rkt pull [#7550][262] (yifan-gu)
* Implement Mount interface using mount(8) and umount(8) [#6400][263] (ddysher)
* Trim Fleuntd tag for Cloud Logging [#7588][264] (satnam6502)
* GCE CoreOS cluster - set master name based on variable [#7569][265] (bakins)
* Capitalization of KubeProxyVersion wrong in JSON [#7535][266] (smarterclayton)
* Make nodes report their external IP rather than the master's. [#7530][267] (mbforbes)
* Trim cluster log tags to pod name and container name [#7539][268] (satnam6502)
* Handle conversion of boolean query parameters with a value of "false" [#7541][269] (csrwng)
* Add image-related methods to Runtime interface. [#7532][270] (vmarmol)
* Test whether auto-generated conversions weren't manually edited [#7560][271] (wojtek-t)
* Mention :latest behavior for image version tag [#7484][272] (colemickens)
* readinessProbe calls livenessProbe.Exec.Command which cause "invalid memory address or nil pointer dereference". [#7487][273] (njuicsgz)
* Add RuntimeHooks to abstract Kubelet logic [#7520][274] (vmarmol)
* Expose URL() on Request to allow building URLs [#7546][275] (smarterclayton)
* Add a simple cache for objects stored in etcd [#7288][276] (fgrzadkowski)
* Prepare for chaining autogenerated conversion methods [#7431][277] (wojtek-t)
* Increase maxIdleConnection limit when creating etcd client in apiserver. [#7353][278] (wojtek-t)
* Improvements to generator of conversion methods. [#7354][279] (wojtek-t)
* Code to automatically generate conversion methods [#7107][280] (wojtek-t)
* Support recovery for anonymous roll outs [#7407][281] (brendandburns)
* Bump kube2sky to 1.2. Point it at https endpoint (3rd try). [#7527][282] (cjcullen)
* cluster/gce/coreos: Add metadata-service in node.yaml [#7526][283] (yifan-gu)
* Move ComputePodChanges to the Docker runtime [#7480][284] (vmarmol)
* Cobra rebase [#7510][285] (eparis)
* Adding system oom events from kubelet [#6718][286] (vishh)
* Move Prober to its own subpackage [#7479][287] (vmarmol)
* Fix parallel-e2e.sh to work on my macbook (bash v3.2) [#7513][288] (cjcullen)
* Move network plugin TearDown to DockerManager [#7449][289] (vmarmol)
* Fixes [#7498][290] \- CoreOS Getting Started Guide had invalid cloud config [#7499][291] (elsonrodriguez)
* Fix invalid character '"' after object key:value pair [#7504][292] (resouer)
* Fixed kubelet deleting data from volumes on stop ([#7317][293]). [#7503][294] (jsafrane)
* Fixing hooks/description to catch API fields without description tags [#7482][295] (nikhiljindal)
* cadvisor is obsoleted so kubelet service does not require it. [#7457][296] (aveshagarwal)
* Set the default namespace for events to be "default" [#7408][297] (vishh)
* Fix typo in namespace conversion [#7446][298] (liggitt)
* Convert Secret registry to use update/create strategy, allow filtering by Type [#7419][299] (liggitt)
* Use pod namespace when looking for its GlusterFS endpoints. [#7102][300] (jsafrane)
* Fixed name of kube-proxy path in deployment scripts. [#7427][301] (jsafrane)
To download, please visit https://github.com/GoogleCloudPlatform/kubernetes/releases/tag/v0.17.0
<!-- [ ![][327] ][386] -->