k8s.io/kubernetes@v1.31.0-alpha.0.0.20240520171757-56147500dadc/CHANGELOG/CHANGELOG-1.2.md (about)

     1  <!-- BEGIN MUNGE: GENERATED_TOC -->
     2  - [v1.2.7](#v127)
     3    - [Downloads for v1.2.7](#downloads-for-v127)
     4      - [Client Binaries](#client-binaries)
     5      - [Server Binaries](#server-binaries)
     6    - [Changelog since v1.2.6](#changelog-since-v126)
     7      - [Other notable changes](#other-notable-changes)
     8  - [v1.2.6](#v126)
     9    - [Downloads for v1.2.6](#downloads-for-v126)
    10    - [Changelog since v1.2.5](#changelog-since-v125)
    11      - [Other notable changes](#other-notable-changes-1)
    12  - [v1.2.5](#v125)
    13    - [Downloads for v1.2.5](#downloads-for-v125)
    14    - [Changes since v1.2.4](#changes-since-v124)
    15      - [Other notable changes](#other-notable-changes-2)
    16  - [v1.2.4](#v124)
    17    - [Downloads for v1.2.4](#downloads-for-v124)
    18    - [Changes since v1.2.3](#changes-since-v123)
    19      - [Other notable changes](#other-notable-changes-3)
    20  - [v1.2.3](#v123)
    21    - [Downloads for v1.2.3](#downloads-for-v123)
    22    - [Changes since v1.2.2](#changes-since-v122)
    23      - [Action Required](#action-required)
    24      - [Other notable changes](#other-notable-changes-4)
    25  - [v1.2.2](#v122)
    26    - [Downloads for v1.2.2](#downloads-for-v122)
    27    - [Changes since v1.2.1](#changes-since-v121)
    28      - [Other notable changes](#other-notable-changes-5)
    29  - [v1.2.1](#v121)
    30    - [Downloads for v1.2.1](#downloads-for-v121)
    31    - [Changes since v1.2.0](#changes-since-v120)
    32      - [Other notable changes](#other-notable-changes-6)
    33  - [v1.2.0](#v120)
    34    - [Downloads for v1.2.0](#downloads-for-v120)
    35    - [Changes since v1.1.1](#changes-since-v111)
    36      - [Major Themes](#major-themes)
    37      - [Other notable improvements](#other-notable-improvements)
    38      - [Experimental Features](#experimental-features)
    39      - [Action required](#action-required-1)
    40      - [Known Issues](#known-issues)
    41        - [Docker Known Issues](#docker-known-issues)
    42          - [1.9.1](#191)
    43      - [Provider-specific Notes](#provider-specific-notes)
    44        - [Various](#various)
    45        - [AWS](#aws)
    46        - [GCE](#gce)
    47  <!-- END MUNGE: GENERATED_TOC -->
    48  
    49  <!-- NEW RELEASE NOTES ENTRY -->
    50  
    51  
    52  # v1.2.7
    53  
    54  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
    55  
    56  ## Downloads for v1.2.7
    57  
    58  
    59  filename | sha256 hash
    60  -------- | -----------
    61  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes.tar.gz) | `53db157923c17fa7a0addb3e4dfe7d1b9194b9266a87d371a251d5bb790a1832`
    62  [kubernetes-src.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-src.tar.gz) | `e6e46831706743d8263581d0575507cf5ffc265096d22e5e84cf1c3ae925db5e`
    63  
    64  ### Client Binaries
    65  
    66  filename | sha256 hash
    67  -------- | -----------
    68  [kubernetes-client-darwin-386.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-darwin-386.tar.gz) | `8418767e45c62c2ef5f9b4479ed02af64e190ce07dcbafa1920e93e71f419c55`
    69  [kubernetes-client-darwin-amd64.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-darwin-amd64.tar.gz) | `41d742c2c55e7686311978eaaddee3844b990a0fe49fa8597158bcb0ee4c05c9`
    70  [kubernetes-client-linux-386.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-linux-386.tar.gz) | `619e0a450cddf10ed1d42ed1d6330d41a75b9c1e00eb654cbe4b0422cd6099c5`
    71  [kubernetes-client-linux-amd64.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-linux-amd64.tar.gz) | `9a5fcd87514b88eb25173e574aef5b5343816c07ab5947d06787c9f12c40f54a`
    72  [kubernetes-client-linux-arm.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-linux-arm.tar.gz) | `fd6e39b4a56e03448382825f27f4f30a2e981a8d20f4a8cedbd084bbb4577d42`
    73  [kubernetes-client-windows-386.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-windows-386.tar.gz) | `862625cb3d9445cff1b09e4ebcdb60dd93b5b2dc34bb6022d2eeed7c8d8bc5d8`
    74  [kubernetes-client-windows-amd64.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-client-windows-amd64.tar.gz) | `054337e41187e39950de93e4670bc78a95b6901cc2f95c50ff437d9825ae94c5`
    75  
    76  ### Server Binaries
    77  
    78  filename | sha256 hash
    79  -------- | -----------
    80  [kubernetes-server-linux-amd64.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-server-linux-amd64.tar.gz) | `fef041e9cbe5bcf8fd708f81ee2e2783429af1ab9cfb151d645ef9be96e19b73`
    81  [kubernetes-server-linux-arm.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.7/kubernetes-server-linux-arm.tar.gz) | `ce02d7bcd75c31db4f7b9922c19ea2a3312b0ba579b0dcd96b279b661eca18a8`
    82  
    83  ## Changelog since v1.2.6
    84  
    85  ### Other notable changes
    86  
    87  * Test x509 intermediates correctly ([#34524](https://github.com/kubernetes/kubernetes/pull/34524), [@liggitt](https://github.com/liggitt))
    88  
    89  
    90  
    91  # v1.2.6
    92  
    93  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
    94  
    95  ## Downloads for v1.2.6
    96  
    97  binary | sha1 hash | md5 hash
    98  ------ | --------- | --------
    99  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.6/kubernetes.tar.gz) | `50023455d00af52c41a7158b4bd117b2dfd4a100` | `cf0411bcb620eb13b08b93578efffc43`
   100  
   101  ## Changelog since v1.2.5
   102  
   103  ### Other notable changes
   104  
   105  * Fix watch cache filtering ([#28967](https://github.com/kubernetes/kubernetes/pull/28967), [@liggitt](https://github.com/liggitt))
   106  * Fix problems with container restarts and flocker ([#25874](https://github.com/kubernetes/kubernetes/pull/25874), [@simonswine](https://github.com/simonswine))
   107  
   108  
   109  
   110  # v1.2.5
   111  
   112  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   113  
   114  ## Downloads for v1.2.5
   115  
   116  binary | sha1 hash | md5 hash
   117  ------ | --------- | --------
   118  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.5/kubernetes.tar.gz) | `ddf12d7f37dfef25308798d71ad547761d0785ac` | `69d770df8fa4eceb57167e34df3962ca`
   119  
   120  ## Changes since v1.2.4
   121  
   122  ### Other notable changes
   123  
   124  * Retry Pod/RC updates in kubectl rolling-update ([#27509](https://github.com/kubernetes/kubernetes/pull/27509), [@janetkuo](https://github.com/janetkuo))
   125  * GCE provider: Create TargetPool with 200 instances, then update with rest ([#27865](https://github.com/kubernetes/kubernetes/pull/27865), [@zmerlynn](https://github.com/zmerlynn))
   126  * GCE provider: Limit Filter calls to regexps rather than large blobs ([#27741](https://github.com/kubernetes/kubernetes/pull/27741), [@zmerlynn](https://github.com/zmerlynn))
   127  * Fix strategic merge diff list diff bug ([#26418](https://github.com/kubernetes/kubernetes/pull/26418), [@AdoHe](https://github.com/AdoHe))
   128  * AWS: Fix long-standing bug in stringSetToPointers ([#26331](https://github.com/kubernetes/kubernetes/pull/26331), [@therc](https://github.com/therc))
   129  * AWS kube-up: Increase timeout waiting for docker start ([#25405](https://github.com/kubernetes/kubernetes/pull/25405), [@justinsb](https://github.com/justinsb))
   130  * Fix hyperkube flag parsing ([#25512](https://github.com/kubernetes/kubernetes/pull/25512), [@colhom](https://github.com/colhom))
   131  * kubectl rolling-update support for same image ([#24645](https://github.com/kubernetes/kubernetes/pull/24645), [@jlowdermilk](https://github.com/jlowdermilk))
   132  * Return "410 Gone" errors via watch stream when using watch cache ([#25369](https://github.com/kubernetes/kubernetes/pull/25369), [@liggitt](https://github.com/liggitt))
   133  
   134  
   135  
   136  # v1.2.4
   137  
   138  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   139  
   140  ## Downloads for v1.2.4
   141  
   142  binary | sha1 hash | md5 hash
   143  ------ | --------- | --------
   144  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.4/kubernetes.tar.gz) | `f3aea83f8f0e16b2b41998a2edc09eb42fd8d945` | `ab0aca3a20e8eba43c8ff9d672793618`
   145  
   146  ## Changes since v1.2.3
   147  
   148  ### Other notable changes
   149  
   150  * Ensure status is not changed during an update of PV, PVC, HPA objects ([#24924](https://github.com/kubernetes/kubernetes/pull/24924), [@mqliang](https://github.com/mqliang))
   151  * GCI: Add two GCI specific metadata pairs ([#25105](https://github.com/kubernetes/kubernetes/pull/25105), [@andyzheng0831](https://github.com/andyzheng0831))
   152  * Add an entry to the salt config to allow Debian jessie on GCE. ([#25123](https://github.com/kubernetes/kubernetes/pull/25123), [@jlewi](https://github.com/jlewi))
   153      * As with the existing Wheezy image on GCE, docker is expected to already be installed in the image.
   154  * Fix DeletingLoadBalancer event generation. ([#24833](https://github.com/kubernetes/kubernetes/pull/24833), [@a-robinson](https://github.com/a-robinson))
   155  * GCE: Prefer preconfigured node tags for firewalls, if available ([#25148](https://github.com/kubernetes/kubernetes/pull/25148), [@a-robinson](https://github.com/a-robinson))
   156  * Drain pods created from ReplicaSets in 'kubectl drain' ([#23689](https://github.com/kubernetes/kubernetes/pull/23689), [@maclof](https://github.com/maclof))
   157  * GCI: Update the command to get the image ([#24987](https://github.com/kubernetes/kubernetes/pull/24987), [@andyzheng0831](https://github.com/andyzheng0831))
   158  * Validate deletion timestamp doesn't change on update ([#24839](https://github.com/kubernetes/kubernetes/pull/24839), [@liggitt](https://github.com/liggitt))
   159  * Add support for running clusters on GCI ([#24893](https://github.com/kubernetes/kubernetes/pull/24893), [@andyzheng0831](https://github.com/andyzheng0831))
   160  * Trusty: Add retry in curl commands ([#24749](https://github.com/kubernetes/kubernetes/pull/24749), [@andyzheng0831](https://github.com/andyzheng0831))
   161  
   162  
   163  
   164  # v1.2.3
   165  
   166  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   167  
   168  ## Downloads for v1.2.3
   169  
   170  binary | sha1 hash | md5 hash
   171  ------ | --------- | --------
   172  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.3/kubernetes.tar.gz) | `b2ce4e0c72562d09ba06e3c0913f0bd78da0285e` | `69e75650de30d5a52d144799e94a168d`
   173  
   174  ## Changes since v1.2.2
   175  
   176  ### Action Required
   177  
   178  * Make watch cache treat resourceVersion consistent with uncached watch ([#24008](https://github.com/kubernetes/kubernetes/pull/24008), [@liggitt](https://github.com/liggitt))
   179  
   180  ### Other notable changes
   181  
   182  * Fix unintended change of Service.spec.ports[].nodePort during kubectl apply ([#24180](https://github.com/kubernetes/kubernetes/pull/24180), [@AdoHe](https://github.com/AdoHe))
   183  * Flush conntrack state for removed/changed UDP Services ([#22573](https://github.com/kubernetes/kubernetes/pull/22573), [@freehan](https://github.com/freehan))
   184  * Allow setting the Host header in a httpGet probe ([#24292](https://github.com/kubernetes/kubernetes/pull/24292), [@errm](https://github.com/errm))
   185  * Bridge off-cluster traffic into services by masquerading. ([#24429](https://github.com/kubernetes/kubernetes/pull/24429), [@cjcullen](https://github.com/cjcullen))
   186  * Version-guard Kubectl client Guestbook application test against deployments ([#24478](https://github.com/kubernetes/kubernetes/pull/24478), [@ihmccreery](https://github.com/ihmccreery))
   187  * Fix goroutine leak in ssh-tunnel healthcheck. ([#24487](https://github.com/kubernetes/kubernetes/pull/24487), [@cjcullen](https://github.com/cjcullen))
   188  * Fixed mounting with containerized kubelet ([#23435](https://github.com/kubernetes/kubernetes/pull/23435), [@jsafrane](https://github.com/jsafrane))
   189  * Do not throw creation errors for containers that fail immediately after being started ([#23894](https://github.com/kubernetes/kubernetes/pull/23894), [@vishh](https://github.com/vishh))
   190  * Honor starting resourceVersion in watch cache ([#24208](https://github.com/kubernetes/kubernetes/pull/24208), [@ncdc](https://github.com/ncdc))
   191  * Fix TerminationMessagePath ([#23658](https://github.com/kubernetes/kubernetes/pull/23658), [@Random-Liu](https://github.com/Random-Liu))
   192  * Fix gce.getDiskByNameUnknownZone logic. ([#24452](https://github.com/kubernetes/kubernetes/pull/24452), [@a-robinson](https://github.com/a-robinson))
   193  * kubelet: add RSS memory to the summary API ([#24015](https://github.com/kubernetes/kubernetes/pull/24015), [@yujuhong](https://github.com/yujuhong))
   194  * e2e: adapt kubelet_perf.go to use the new summary metrics API ([#24003](https://github.com/kubernetes/kubernetes/pull/24003), [@yujuhong](https://github.com/yujuhong))
   195  * e2e: fix error checking in kubelet stats ([#24205](https://github.com/kubernetes/kubernetes/pull/24205), [@yujuhong](https://github.com/yujuhong))
   196  * Trusty: Avoid unnecessary in-memory temp files ([#24144](https://github.com/kubernetes/kubernetes/pull/24144), [@andyzheng0831](https://github.com/andyzheng0831))
   197  * Allowing type object in kubectl swagger validation ([#24054](https://github.com/kubernetes/kubernetes/pull/24054), [@nikhiljindal](https://github.com/nikhiljindal))
   198  * Add ClusterUpgrade tests ([#24150](https://github.com/kubernetes/kubernetes/pull/24150), [@ihmccreery](https://github.com/ihmccreery))
   199  * Trusty: Do not create the docker-daemon cgroup ([#23996](https://github.com/kubernetes/kubernetes/pull/23996), [@andyzheng0831](https://github.com/andyzheng0831))
   200  
   201  
   202  
   203  # v1.2.2
   204  
   205  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   206  
   207  ## Downloads for v1.2.2
   208  
   209  binary | sha1 hash | md5 hash
   210  ------ | --------- | --------
   211  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.2/kubernetes.tar.gz) | `8dede5833a1986434adea80749624f81a0db7bb4` | `72a5389f22827fb5133fdc3b7bfb9b3a`
   212  
   213  ## Changes since v1.2.1
   214  
   215  ### Other notable changes
   216  
   217  * Trusty: Update heapster manifest handling code ([#23434](https://github.com/kubernetes/kubernetes/pull/23434), [@andyzheng0831](https://github.com/andyzheng0831))
   218  * Support addon Deployments, make heapster a deployment with a nanny. ([#22893](https://github.com/kubernetes/kubernetes/pull/22893), [@Q-Lee](https://github.com/Q-Lee))
   219  * Create a new Deployment in kube-system for every version. ([#23512](https://github.com/kubernetes/kubernetes/pull/23512), [@Q-Lee](https://github.com/Q-Lee))
   220  * Use SCP to dump logs and parallelize a bit. ([#22835](https://github.com/kubernetes/kubernetes/pull/22835), [@spxtr](https://github.com/spxtr))
   221  * Trusty: Regional release .tar.gz support ([#23558](https://github.com/kubernetes/kubernetes/pull/23558), [@andyzheng0831](https://github.com/andyzheng0831))
   222  * Make ConfigMap volume readable as non-root ([#23793](https://github.com/kubernetes/kubernetes/pull/23793), [@pmorie](https://github.com/pmorie))
   223  * only include running and pending pods in daemonset should place calculation ([#23929](https://github.com/kubernetes/kubernetes/pull/23929), [@mikedanese](https://github.com/mikedanese))
   224  * A pod never terminated if a container image registry was unavailable ([#23746](https://github.com/kubernetes/kubernetes/pull/23746), [@derekwaynecarr](https://github.com/derekwaynecarr))
   225  * Update Dashboard UI addon to v1.0.1 ([#23724](https://github.com/kubernetes/kubernetes/pull/23724), [@maciaszczykm](https://github.com/maciaszczykm))
   226  * Ensure object returned by volume getCloudProvider incorporates cloud config ([#23769](https://github.com/kubernetes/kubernetes/pull/23769), [@saad-ali](https://github.com/saad-ali))
   227  * Add a timeout to the sshDialer to prevent indefinite hangs. ([#23843](https://github.com/kubernetes/kubernetes/pull/23843), [@cjcullen](https://github.com/cjcullen))
   228  * AWS kube-up: tolerate a lack of ephemeral volumes ([#23776](https://github.com/kubernetes/kubernetes/pull/23776), [@justinsb](https://github.com/justinsb))
   229  * Fix so setup-files don't recreate/invalidate certificates that already exist ([#23550](https://github.com/kubernetes/kubernetes/pull/23550), [@luxas](https://github.com/luxas))
   230  
   231  
   232  
   233  # v1.2.1
   234  
   235  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   236  
   237  ## Downloads for v1.2.1
   238  
   239  binary | sha1 hash | md5 hash
   240  ------ | --------- | --------
   241  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.1/kubernetes.tar.gz) | `1639807c5788e1c6b1ab51fd30b723fb5debd865` | `235a1da47972c96a560d718d3256ca4f`
   242  
   243  
   244  ## Changes since v1.2.0
   245  
   246  ### Other notable changes
   247  
   248  * AWS: Fix problems with >2 security groups ([#23340](https://github.com/kubernetes/kubernetes/pull/23340), [@justinsb](https://github.com/justinsb))
   249  * IngressTLS: allow secretName to be blank for SNI routing ([#23500](https://github.com/kubernetes/kubernetes/pull/23500), [@tam7t](https://github.com/tam7t))
   250  * Heapster patch release to 1.0.2 ([#23487](https://github.com/kubernetes/kubernetes/pull/23487), [@piosz](https://github.com/piosz))
   251  * Remove unnecessary override of /etc/init.d/docker on containervm image. ([#23593](https://github.com/kubernetes/kubernetes/pull/23593), [@dchen1107](https://github.com/dchen1107))
   252  * Change kube-proxy & fluentd CPU request to 20m/80m. ([#23646](https://github.com/kubernetes/kubernetes/pull/23646), [@cjcullen](https://github.com/cjcullen))
   253  * make docker-checker more robust ([#23662](https://github.com/kubernetes/kubernetes/pull/23662), [@ArtfulCoder](https://github.com/ArtfulCoder))
   254  * validate that daemonsets don't have empty selectors on creation ([#23530](https://github.com/kubernetes/kubernetes/pull/23530), [@mikedanese](https://github.com/mikedanese))
   255  * don't sync deployment when pod selector is empty ([#23467](https://github.com/kubernetes/kubernetes/pull/23467), [@mikedanese](https://github.com/mikedanese))
   256  * Support differentiation of OS distro in e2e tests ([#23466](https://github.com/kubernetes/kubernetes/pull/23466), [@andyzheng0831](https://github.com/andyzheng0831))
   257  * don't sync daemonsets with selectors that match all pods ([#23223](https://github.com/kubernetes/kubernetes/pull/23223), [@mikedanese](https://github.com/mikedanese))
   258  * Trusty: Avoid reaching GCE custom metadata size limit ([#22818](https://github.com/kubernetes/kubernetes/pull/22818), [@andyzheng0831](https://github.com/andyzheng0831))
   259  * Update kubectl help for 1.2 resources ([#23305](https://github.com/kubernetes/kubernetes/pull/23305), [@janetkuo](https://github.com/janetkuo))
   260  * Removing URL query param from swagger UI to fix the XSS issue ([#23234](https://github.com/kubernetes/kubernetes/pull/23234), [@nikhiljindal](https://github.com/nikhiljindal))
   261  * Fix hairpin mode ([#23325](https://github.com/kubernetes/kubernetes/pull/23325), [@MurgaNikolay](https://github.com/MurgaNikolay))
   262  * Bump to container-vm-v20160321 ([#23313](https://github.com/kubernetes/kubernetes/pull/23313), [@zmerlynn](https://github.com/zmerlynn))
   263  * Remove the restart-kube-proxy and restart-apiserver functions ([#23180](https://github.com/kubernetes/kubernetes/pull/23180), [@roberthbailey](https://github.com/roberthbailey))
   264  * Copy annotations back from RS to Deployment on rollback ([#23160](https://github.com/kubernetes/kubernetes/pull/23160), [@janetkuo](https://github.com/janetkuo))
   265  * Trusty: Support hybrid cluster with nodes on ContainerVM ([#23079](https://github.com/kubernetes/kubernetes/pull/23079), [@andyzheng0831](https://github.com/andyzheng0831))
   266  * update expose command description to add deployment ([#23246](https://github.com/kubernetes/kubernetes/pull/23246), [@AdoHe](https://github.com/AdoHe))
   267  * Add a rate limiter to the GCE cloudprovider ([#23019](https://github.com/kubernetes/kubernetes/pull/23019), [@alex-mohr](https://github.com/alex-mohr))
   268  * Add a Deployment example for kubectl expose. ([#23222](https://github.com/kubernetes/kubernetes/pull/23222), [@madhusudancs](https://github.com/madhusudancs))
   269  * Use versioned object when computing patch ([#23145](https://github.com/kubernetes/kubernetes/pull/23145), [@liggitt](https://github.com/liggitt))
   270  * kubelet: send all recevied pods in one update ([#23141](https://github.com/kubernetes/kubernetes/pull/23141), [@yujuhong](https://github.com/yujuhong))
   271  * Add a SSHKey sync check to the master's healthz (when using SSHTunnels). ([#23167](https://github.com/kubernetes/kubernetes/pull/23167), [@cjcullen](https://github.com/cjcullen))
   272  * Validate minimum CPU limits to be >= 10m ([#23143](https://github.com/kubernetes/kubernetes/pull/23143), [@vishh](https://github.com/vishh))
   273  * Fix controller-manager race condition issue which cause endpoints flush during restart ([#23035](https://github.com/kubernetes/kubernetes/pull/23035), [@xinxiaogang](https://github.com/xinxiaogang))
   274  * MESOS: forward globally declared cadvisor housekeeping flags ([#22974](https://github.com/kubernetes/kubernetes/pull/22974), [@jdef](https://github.com/jdef))
   275  * Trusty: support developer workflow on base image ([#22960](https://github.com/kubernetes/kubernetes/pull/22960), [@andyzheng0831](https://github.com/andyzheng0831))
   276  
   277  
   278  
   279  # v1.2.0
   280  
   281  [Documentation](http://kubernetes.github.io) & [Examples](http://releases.k8s.io/release-1.2/examples)
   282  
   283  ## Downloads for v1.2.0
   284  
   285  binary | sha1 hash | md5 hash
   286  ------ | --------- | --------
   287  [kubernetes.tar.gz](https://storage.googleapis.com/kubernetes-release/release/v1.2.0/kubernetes.tar.gz) | `52dd998e1191f464f581a9b87017d70ce0b058d9` | `c0ce9e6150e9d7a19455db82f3318b4c`
   288  
   289  ## Changes since v1.1.1
   290  
   291  ### Major Themes
   292  
   293    * <strong>Significant scale improvements</strong>. Increased cluster scale by 400% to 1000 nodes with 30,000 pods per cluster.
   294  Kubelet supports 100 pods per node with 4x reduced system overhead.
   295    * <strong>Simplified application deployment and management. </strong>
   296       * Dynamic Configuration (ConfigMap API in the core API group) enables application
   297  configuration to be stored as a Kubernetes API object and pulled dynamically on
   298  container startup, as an alternative to baking in command-line flags when a
   299  container is built.
   300       * Turnkey Deployments (Deployment API (Beta) in the Extensions API group)
   301  automate deployment and rolling updates of applications, specified
   302  declaratively. It handles versioning, multiple simultaneous rollouts,
   303  aggregating status across all pods, maintaining application availability, and
   304  rollback.
   305    * <strong>Automated cluster management: </strong>
   306       * Kubernetes clusters can now span zones within a cloud provider. Pods from a
   307  service will be automatically spread across zones, enabling applications to
   308  tolerate zone failure.
   309       * Simplified way to run a container on every node (DaemonSet API (Beta) in the
   310  Extensions API group): Kubernetes can schedule a service (such as a logging
   311  agent) that runs one, and only one, pod per node.
   312       * TLS and L7 support (Ingress API (Beta) in the Extensions API group): Kubernetes
   313  is now easier to integrate into custom networking environments by supporting
   314  TLS for secure communication and L7 http-based traffic routing.
   315       * Graceful Node Shutdown (aka drain) - The new “kubectl drain” command gracefully
   316  evicts pods from nodes in preparation for disruptive operations like kernel
   317  upgrades or maintenance.
   318       * Custom Metrics for Autoscaling (HorizontalPodAutoscaler API in the Autoscaling
   319  API group): The Horizontal Pod Autoscaling feature now supports custom metrics
   320  (Alpha), allowing you to specify application-level metrics and thresholds to
   321  trigger scaling up and down the number of pods in your application.
   322    * <strong>New GUI</strong> (dashboard) allows you to get started quickly and enables the same
   323  functionality found in the CLI as a more approachable and discoverable way of
   324  interacting with the system. Note: the GUI is enabled by default in 1.2 clusters.
   325  
   326  <img src="docs/images/newgui.png" width="" alt="Dashboard UI screenshot showing cards that represent applications that run inside a cluster" title="Dashboard UI apps screen">
   327  
   328  ### Other notable improvements
   329  
   330    * Job was Beta in 1.1 and is GA in 1.2 .
   331       * <code>apiVersion: batch/v1 </code>is now available.  You now do not need to specify the <code>.spec.selector</code> field — a [unique selector is automatically generated ](http://kubernetes.io/docs/user-guide/jobs/#pod-selector)for you.
   332       * The previous version, <code>apiVersion: extensions/v1beta1</code>, is still supported.  Even if you roll back to 1.1, the objects created using
   333  the new apiVersion will still be accessible, using the old version.   You can
   334  continue to use your existing JSON and YAML files until you are ready to switch
   335  to <code>batch/v1</code>.  We may remove support for Jobs with  <code>apiVersion: extensions/v1beta1 </code>in 1.3 or 1.4.
   336    *  HorizontalPodAutoscaler was Beta in 1.1 and is GA in 1.2 .
   337       * <code>apiVersion: autoscaling/v1 </code>is now available.  Changes in this version are:
   338          * Field CPUUtilization which was a nested structure CPUTargetUtilization in
   339  HorizontalPodAutoscalerSpec was replaced by TargetCPUUtilizationPercentage
   340  which is an integer.
   341          * ScaleRef of type SubresourceReference in HorizontalPodAutoscalerSpec which
   342  referred to scale subresource of the resource being scaled was replaced by
   343  ScaleTargetRef which points just to the resource being scaled.
   344          * In extensions/v1beta1 if CPUUtilization in HorizontalPodAutoscalerSpec was not
   345  specified it was set to 80 by default while in autoscaling/v1 HPA object
   346  without TargetCPUUtilizationPercentage specified is a valid object. Pod
   347  autoscaler controller will apply a default scaling policy in this case which is
   348  equivalent to the previous one but may change in the future.
   349       * The previous version, <code>apiVersion: extensions/v1beta1</code>, is still supported.  Even if you roll back to 1.1, the objects created using
   350  the new apiVersions will still be accessible, using the old version.  You can
   351  continue to use your existing JSON and YAML files until you are ready to switch
   352  to <code>autoscaling/v1</code>.  We may remove support for HorizontalPodAutoscalers with  <code>apiVersion: extensions/v1beta1 </code>in 1.3 or 1.4.
   353    * Kube-Proxy now defaults to an iptables-based proxy. If the --proxy-mode flag is
   354  specified while starting kube-proxy (‘userspace’ or ‘iptables’), the flag value
   355  will be respected. If the flag value is not specified, the kube-proxy respects
   356  the Node object annotation: ‘net.beta.kubernetes.io/proxy-mode’. If the
   357  annotation is not specified, then ‘iptables’ mode is the default. If kube-proxy
   358  is unable to start in iptables mode because system requirements are not met
   359  (kernel or iptables versions are insufficient), the kube-proxy will fall-back
   360  to userspace mode. Kube-proxy is much more performant and less
   361  resource-intensive in ‘iptables’ mode.
   362    * Node stability can be improved by reserving [resources](https://github.com/kubernetes/kubernetes/blob/release-1.2/docs/proposals/node-allocatable.md) for the base operating system using --system-reserved and --kube-reserved Kubelet flags
   363    * Liveness and readiness probes now support more configuration parameters:
   364  periodSeconds, successThreshold, failureThreshold
   365    * The new ReplicaSet API (Beta) in the Extensions API group is similar to
   366  ReplicationController, but its [selector](http://kubernetes.io/docs/user-guide/labels/#label-selectors) is more general (supports set-based selector; whereas ReplicationController
   367  only supports equality-based selector).
   368    * Scale subresource support is now expanded to ReplicaSets along with
   369  ReplicationControllers and Deployments. Scale now supports two different types
   370  of selectors to accommodate both [equality-based selectors](http://kubernetes.io/docs/user-guide/labels/#equality-based-requirement) supported by ReplicationControllers and [set-based selectors](http://kubernetes.io/docs/user-guide/labels/#set-based-requirement) supported by Deployments and ReplicaSets.
   371    * “kubectl run” now produces Deployments (instead of ReplicationControllers) and
   372  Jobs (instead of Pods) by default.
   373    * Pods can now consume Secret data in environment variables and inject those
   374  environment variables into a container’s command-line args.
   375    * Stable version of Heapster which scales up to 1000 nodes: more metrics, reduced
   376  latency, reduced cpu/memory consumption (~4mb per monitored node).
   377    * Pods now have a security context which allows users to specify:
   378       * attributes which apply to the whole pod:
   379          * User ID
   380          * Whether all containers should be non-root
   381          * Supplemental Groups
   382          * FSGroup - a special supplemental group
   383          * SELinux options
   384       * If a pod defines an FSGroup, that Pod’s system (emptyDir, secret, configMap,
   385  etc) volumes and block-device volumes will be owned by the FSGroup, and each
   386  container in the pod will run with the FSGroup as a supplemental group
   387    * Volumes that support SELinux labelling are now automatically relabeled with the
   388  Pod’s SELinux context, if specified
   389    * A stable client library release\_1\_2 is added. The library is [here](pkg/client/clientset_generated/), and detailed doc is [here](docs/devel/generating-clientset.md#released-clientsets). We will keep the interface of this go client stable.
   390    * New Azure File Service Volume Plugin enables mounting Microsoft Azure File
   391  Volumes (SMB 2.1 and 3.0) into a Pod. See [example](https://github.com/kubernetes/kubernetes/blob/release-1.2/examples/azure_file/README.md) for details.
   392    * Logs usage and root filesystem usage of a container, volumes usage of a pod and node disk usage are exposed through Kubelet new metrics API.
   393  
   394  ### Experimental Features
   395  
   396    * Dynamic Provisioning of PersistentVolumes: Kubernetes previously required all
   397  volumes to be manually provisioned by a cluster administrator before use. With
   398  this feature, volume plugins that support it (GCE PD, AWS EBS, and Cinder) can
   399  automatically provision a PersistentVolume to bind to an unfulfilled
   400  PersistentVolumeClaim.
   401    * Run multiple schedulers in parallel, e.g. one or more custom schedulers
   402  alongside the default Kubernetes scheduler, using pod annotations to select
   403  among the schedulers for each pod. Documentation is [here](http://kubernetes.io/docs/admin/multiple-schedulers.md), design doc is [here](docs/proposals/multiple-schedulers.md).
   404    * More expressive node affinity syntax, and support for “soft” node affinity.
   405  Node selectors (to constrain pods to schedule on a subset of nodes) now support
   406  the operators {<code>In, NotIn, Exists, DoesNotExist, Gt, Lt</code>}  instead of just conjunction of exact match on node label values. In
   407  addition, we’ve introduced a new “soft” kind of node selector that is just a
   408  hint to the scheduler; the scheduler will try to satisfy these requests but it
   409  does not guarantee they will be satisfied. Both the “hard” and “soft” variants
   410  of node affinity use the new syntax. Documentation is [here](http://kubernetes.io/docs/user-guide/node-selection/) (see section “Alpha feature in Kubernetes v1.2: Node Affinity“). Design doc is [here](https://github.com/kubernetes/kubernetes/blob/release-1.2/docs/design/nodeaffinity.md).
   411    * A pod can specify its own Hostname and Subdomain via annotations (<code>pod.beta.kubernetes.io/hostname, pod.beta.kubernetes.io/subdomain)</code>. If the Subdomain matches the name of a [headless service](http://kubernetes.io/docs/user-guide/services/#headless-services) in the same namespace, a DNS A record is also created for the pod’s FQDN. More
   412  details can be found in the [DNS README](https://github.com/kubernetes/kubernetes/blob/release-1.2/cluster/saltbase/salt/kube-dns/README.md#a-records-and-hostname-based-on-pod-annotations---a-beta-feature-in-kubernetes-v12). Changes were introduced in PR [#20688](https://github.com/kubernetes/kubernetes/pull/20688).
   413    * New SchedulerExtender enables users to implement custom
   414  out-of-(the-scheduler)-process scheduling predicates and priority functions,
   415  for example to schedule pods based on resources that are not directly managed
   416  by Kubernetes. Changes were introduced in PR [#13580](https://github.com/kubernetes/kubernetes/pull/13580). Example configuration and documentation is available [here](docs/design/scheduler_extender.md). This is an alpha feature and may not be supported in its current form at beta
   417  or GA.
   418    * New Flex Volume Plugin enables users to use out-of-process volume plugins that
   419  are installed to “/usr/libexec/kubernetes/kubelet-plugins/volume/exec/” on
   420  every node, instead of being compiled into the Kubernetes binary. See [example](examples/volumes/flexvolume/README.md) for details.
   421    * vendor volumes into a pod. It expects vendor drivers are installed in the
   422  volume plugin path on each kubelet node. This is an alpha feature and may
   423  change in future.
   424    * Kubelet exposes a new Alpha metrics API - /stats/summary in a user friendly format with reduced system overhead. The measurement is done in PR [#22542](https://github.com/kubernetes/kubernetes/pull/22542).
   425  
   426  ### Action required
   427  
   428    * Docker v1.9.1 is officially recommended. Docker v1.8.3 and Docker v1.10 are
   429  supported. If you are using an older release of Docker, please upgrade. Known
   430  issues with Docker 1.9.1 can be found below.
   431    * CPU hardcapping will be enabled by default for containers with CPU limit set,
   432  if supported by the kernel. You should either adjust your CPU limit, or set CPU
   433  request only, if you want to avoid hardcapping. If the kernel does not support
   434  CPU Quota, NodeStatus will contain a warning indicating that CPU Limits cannot
   435  be enforced.
   436    * The following applies only if you use the Go language client (<code>/pkg/client/unversioned</code>) to create Job by defining Go variables of type "<code>k8s.io/kubernetes/pkg/apis/extensions".Job</code>).  We think <strong>this is not common</strong>, so if you are not sure what this means, you probably aren't doing this.  If
   437  you do this, then, at the time you re-vendor the "<code>k8s.io/kubernetes/"</code> code, you will need to set <code>job.Spec.ManualSelector = true</code>, or else set <code>job.Spec.Selector = nil.  </code>Otherwise, the jobs you create may be rejected.  See [Specifying your own pod selector](http://kubernetes.io/docs/user-guide/jobs/#specifying-your-own-pod-selector).
   438    * Deployment was Alpha in 1.1 (though it had apiVersion extensions/v1beta1) and
   439  was disabled by default. Due to some non-backward-compatible API changes, any
   440  Deployment objects you created in 1.1 won’t work with in the 1.2 release.
   441       * Before upgrading to 1.2, <strong>delete all Deployment alpha-version resources</strong>, including the Replication Controllers and Pods the Deployment manages. Then
   442  create Deployment Beta resources after upgrading to 1.2. Not deleting the
   443  Deployment objects may cause the deployment controller to mistakenly match
   444  other pods and delete them, due to the selector API change.
   445       * Client (kubectl) and server versions must match (both 1.1 or both 1.2) for any
   446  Deployment-related operations.
   447       * Behavior change:
   448          * Deployment creates ReplicaSets instead of ReplicationControllers.
   449          * Scale subresource now has a new <code>targetSelector</code> field in its status. This field supports the new set-based selectors supported
   450  by Deployments, but in a serialized format.
   451       * Spec change:
   452          * Deployment’s [selector](http://kubernetes.io/docs/user-guide/labels/#label-selectors) is now more general (supports set-based selector; it only supported
   453  equality-based selector in 1.1).
   454          * .spec.uniqueLabelKey is removed -- users can’t customize unique label key --
   455  and its default value is changed from
   456  “deployment.kubernetes.io/podTemplateHash” to “pod-template-hash”.
   457          * .spec.strategy.rollingUpdate.minReadySeconds is moved to .spec.minReadySeconds
   458    * DaemonSet was Alpha in 1.1 (though it had apiVersion extensions/v1beta1) and
   459  was disabled by default. Due to some non-backward-compatible API changes, any
   460  DaemonSet objects you created in 1.1 won’t work with in the 1.2 release.
   461       * Before upgrading to 1.2, <strong>delete all DaemonSet alpha-version resources</strong>. If you do not want to disrupt the pods, use kubectl delete daemonset <name>
   462  --cascade=false. Then create DaemonSet Beta resources after upgrading to 1.2.
   463       * Client (kubectl) and server versions must match (both 1.1 or both 1.2) for any
   464  DaemonSet-related operations.
   465       * Behavior change:
   466          * DaemonSet pods will be created on nodes with .spec.unschedulable=true and will
   467  not be evicted from nodes whose Ready condition is false.
   468          * Updates to the pod template are now permitted. To perform a rolling update of a
   469  DaemonSet, update the pod template and then delete its pods one by one; they
   470  will be replaced using the updated template.
   471       * Spec change:
   472          * DaemonSet’s [selector](http://kubernetes.io/docs/user-guide/labels/#label-selectors) is now more general (supports set-based selector; it only supported
   473  equality-based selector in 1.1).
   474    * Running against a secured etcd requires these flags to be passed to
   475  kube-apiserver (instead of --etcd-config):
   476       * --etcd-certfile, --etcd-keyfile (if using client cert auth)
   477       * --etcd-cafile (if not using system roots)
   478    * As part of preparation in 1.2 for adding support for protocol buffers (and the
   479  direct YAML support in the API available today), the Content-Type and Accept
   480  headers are now properly handled as per the HTTP spec.  As a consequence, if
   481  you had a client that was sending an invalid Content-Type or Accept header to
   482  the API, in 1.2 you will either receive a 415 or 406 error.
   483  The only client
   484  this is known to affect is curl when you use -d with JSON but don't set a
   485  content type, helpfully sends "application/x-www-urlencoded", which is not
   486  correct.
   487  Other client authors should double check that you are sending proper
   488  accept and content type headers, or set no value (in which case JSON is the
   489  default).
   490  An example using curl:
   491  <code>curl -H "Content-Type: application/json" -XPOST -d
   492  '{"apiVersion":"v1","kind":"Namespace","metadata":{"name":"kube-system"}}' "[http://127.0.0.1:8080/api/v1/namespaces](http://127.0.0.1:8080/api/v1/namespaces)"</code>
   493    * The version of InfluxDB is bumped from 0.8 to 0.9 which means storage schema
   494  change. More details [here](https://docs.influxdata.com/influxdb/v0.9/administration/upgrading/).
   495    * We have renamed “minions” to “nodes”.  If you were specifying NUM\_MINIONS or
   496  MINION\_SIZE to kube-up, you should now specify NUM\_NODES or NODE\_SIZE.
   497  
   498  ### Known Issues
   499  
   500    * Paused deployments can't be resized and don't clean up old ReplicaSets.
   501    * Minimum memory limit is 4MB. This is a docker limitation
   502    * Minimum CPU limits is 10m. This is a Linux Kernel limitation
   503    * “kubectl rollout undo” (i.e. rollback) will hang on paused deployments, because
   504  paused deployments can’t be rolled back (this is expected), and the command
   505  waits for rollback events to return the result. Users should use “kubectl
   506  rollout resume” to resume a deployment before rolling back.
   507    * “kubectl edit <list>” will open the editor multiple times, once for each
   508  resource in the list.
   509    * If you create HPA object using autoscaling/v1 API without specifying
   510  targetCPUUtilizationPercentage and read it using kubectl it will print default
   511  value as specified in extensions/v1beta1 (see details in [#23196](https://github.com/kubernetes/kubernetes/issues/23196)).
   512    * If a node or kubelet crashes with a volume attached, the volume will remain
   513  attached to that node. If that volume can only be attached to one node at a
   514  time (GCE PDs attached in RW mode, for example), then the volume must be
   515  manually detached before Kubernetes can attach it to other nodes.
   516    * If a volume is already attached to a node any subsequent attempts to attach it
   517  again (due to kubelet restart, for example) will fail. The volume must either
   518  be manually detached first or the pods referencing it deleted (which would
   519  trigger automatic volume detach).
   520    * In very large clusters it may happen that a few nodes won’t register in API
   521  server in a given timeframe for whatever reasons (networking issue, machine
   522  failure, etc.). Normally when kube-up script will encounter even one NotReady
   523  node it will fail, even though the cluster most likely will be working. We
   524  added an environmental variable to kube-up ALLOWED\_NOTREADY\_NODES that
   525  defines the number of nodes that if not Ready in time won’t cause kube-up
   526  failure.
   527    * “kubectl rolling-update” only supports Replication Controllers (it doesn’t
   528  support Replica Sets). It’s recommended to use Deployment 1.2 with “kubectl
   529  rollout” commands instead, if you want to rolling update Replica Sets.
   530    * When live upgrading Kubelet to 1.2 without draining the pods running on the node,
   531  the containers will be restarted by Kubelet (see details in [#23104](https://github.com/kubernetes/kubernetes/issues/23104)).
   532  
   533  #### Docker Known Issues
   534  
   535  ##### 1.9.1
   536  
   537    * Listing containers can be slow at times which will affect kubelet performance.
   538  More information [here](https://github.com/docker/docker/issues/17720)
   539    * Docker daemon restarts can fail. Docker checkpoints have to deleted between
   540  restarts. More information [here](https://github.com/kubernetes/kubernetes/issues/20995)
   541    * Pod IP allocation-related issues. Deleting the docker checkpoint prior to
   542  restarting the daemon alleviates this issue, but hasn’t been verified to
   543  completely eliminate the IP allocation issue. More information [here](https://github.com/kubernetes/kubernetes/issues/21523#issuecomment-191498969)
   544    * Daemon becomes unresponsive (rarely) due to kernel deadlocks. More information [here](https://github.com/kubernetes/kubernetes/issues/21866#issuecomment-189492391)
   545  
   546  ### Provider-specific Notes
   547  
   548  #### Various
   549  
   550     Core changes:
   551  
   552    * Support for load balancers with source ranges
   553  
   554  #### AWS
   555  
   556  Core changes:
   557  
   558    * Support for ELBs with complex configurations: better subnet selection with
   559  multiple subnets, and internal ELBs
   560    * Support for VPCs with private dns names
   561    * Multiple fixes to EBS volume mounting code for robustness, and to support
   562  mounting the full number of AWS recommended volumes.
   563    * Multiple fixes to avoid hitting AWS rate limits, and to throttle if we do
   564    * Support for the EC2 Container Registry (currently in us-east-1 only)
   565  
   566  With kube-up:
   567  
   568    * Automatically install updates on boot & reboot
   569    * Use optimized image based on Jessie by default
   570    * Add support for Ubuntu Wily
   571    * Master is configured with automatic restart-on-failure, via CloudWatch
   572    * Bootstrap reworked to be more similar to GCE; better supports reboots/restarts
   573    * Use an elastic IP for the master by default
   574    * Experimental support for node spot instances (set NODE\_SPOT\_PRICE=0.05)
   575  
   576  #### GCE
   577  
   578    * Ubuntu Trusty support added
   579  
   580  Please see the [Releases Page](https://github.com/kubernetes/kubernetes/releases) for older releases.