{"id":287,"date":"2018-10-16T06:48:14","date_gmt":"2018-10-16T06:48:14","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw93\/?p=287"},"modified":"2018-10-16T09:59:52","modified_gmt":"2018-10-16T09:59:52","slug":"whats-new-in-kubernetes-1-12","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/10\/16\/whats-new-in-kubernetes-1-12\/","title":{"rendered":"What&#8217;s new in Kubernetes 1.12"},"content":{"rendered":"<h5>A Detailed Overview of Rancher&#8217;s Architecture<\/h5>\n<p>This newly-updated, in-depth guidebook provides a detailed overview of the features and functionality of the new Rancher: an open-source enterprise Kubernetes platform.<\/p>\n<p><a href=\"http:\/\/info.rancher.com\/rancher2-technical-architecture\" target=\"blank\">Get the eBook<\/a><\/p>\n<p>Kubernetes 1.12 <a href=\"https:\/\/github.com\/kubernetes\/sig-release\/blob\/master\/releases\/release-1.12\/README.md\">will be released<\/a> this week on Thursday, September 27, 2018. Version 1.12 ships just three months after Kubernetes 1.11 and marks the third major release of this year. The short cycle is inline with the quarterly release cycle the project has followed since it\u2019s GA in 2015.<\/p>\n<p>Kubernetes releases 2018<\/p>\n<p>| Kubernetes Release | Date |<br \/>\n|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br \/>\n| 1.10 | March 26, 2018 |<br \/>\n| 1.11 | June 27, 2018 |<br \/>\n| 1.12 | September 27, 2018 |<\/p>\n<p>Whether you are a developer using Kubernetes or an admin operating clusters, it\u2019s worth getting an idea about the new features and fixes that you can expect in Kubernetes 1.12.<\/p>\n<p>A total of <a href=\"https:\/\/github.com\/kubernetes\/features\/milestone\/11\">38 features<\/a> are included in this milestone. Let\u2019s have a look at some of the highlights.<\/p>\n<h3>Kubelet certificate rotation<\/h3>\n<p>Kubelet certificate rotation was promoted to <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/267\">beta status<\/a>. This functionality allows for automated renewal of key and a certificate for the kubelet API server as the current certificate approaches expiration. Until the official 1.12 docs have been published, you can read the beta documentation on this feature <a href=\"https:\/\/github.com\/kubernetes\/website\/blob\/release-1.12\/content\/en\/docs\/reference\/command-line-tools-reference\/kubelet-tls-bootstrapping.md#kubelet-configuration\">here<\/a>.<\/p>\n<h3>Network Policies: CIDR selector and egress rules<\/h3>\n<p>Two formerly beta features have now reached <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/366\">stable status<\/a>: One of them is the ipBlock selector, which allows specifying ingress\/egress rules based on network addresses in CIDR notation. The second one adds support for filtering the traffic that is leaving the pods by specifying egress rules. The below example illustrates the use of both features:<\/p>\n<p>apiVersion: networking.k8s.io\/v1<br \/>\nkind: NetworkPolicy<br \/>\nmetadata:<br \/>\nname: network-policy<br \/>\nnamespace: default<br \/>\nspec:<br \/>\npodSelector:<br \/>\nmatchLabels:<br \/>\nrole: app<br \/>\npolicyTypes:<br \/>\n&#8211; Egress<br \/>\negress:<br \/>\n&#8211; to:<br \/>\n&#8211; ipBlock:<br \/>\ncidr: 10.0.0.0\/24<br \/>\n(&#8230;)<\/p>\n<p>As previoulsy beta features, both egress and ipBlock are already described in the official <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\">network policies documentation<\/a>.<\/p>\n<h3>Mount namespace propagation<\/h3>\n<p>Mount namespace propagation, i.e. the ability to mount a volume rshared so that any mounts from inside the container are reflected in the root (= host) mount namespace, has been <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/432\">promoted to stable<\/a>. You can read more about this feature in the <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#mount-propagation\">Kubernetes volumes docs<\/a>.<\/p>\n<h3>Taint nodes by condition<\/h3>\n<p>This feature introduced in 1.8 as early alpha has been <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/382\">promoted to beta<\/a>. Enabling it\u2019s featureflag causes the node controller to create taints based on node conditions and the scheduler to filter nodes based on taints instead of conditions. The official documentation is <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/#taint-nodes-by-condition\">available here<\/a>.<\/p>\n<h3>Horizontal pod autoscaler with custom metrics<\/h3>\n<p>While support for custom metrics in HPA <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/117\">continuous to be in beta status<\/a>, version 1.12 adds various enhancements like the the ability to select metrics based on the labels available in your monitoring pipeline. If you are interested in autoscaling pods based on application-level metrics provided by monitoring systems such as Prometheus, Sysdig or Datadog, I recommend to checkout the <a href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/design-proposals\/autoscaling\/hpa-external-metrics.md\">design proposal for external metrics<\/a> in HPA.<\/p>\n<h3>RuntimeClass<\/h3>\n<p>RuntimeClass is a new cluster-scoped resource \u201cthat surfaces container runtime properties to the control plane\u201d. In other words: This <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/585\">early alpha feature<\/a> will enable users to select and configure (per pod) a specific container runtime (such as Docker, Rkt or Virtlet) by providing the runtimeClass field in the PodSpec. You can read more about it in <a href=\"https:\/\/github.com\/kubernetes\/website\/blob\/release-1.12\/content\/en\/docs\/concepts\/containers\/runtime-class.md\">these docs<\/a>.<\/p>\n<h3>Resource Quota by priority<\/h3>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\">Resource quotas<\/a> allow administrators to limit the resource consumption in namespaces. This is especially practical in scenarios where the available compute and storage resources in a cluster are shared by several tenants (users, teams). The beta feature <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/612\">Resource quota by priority<\/a> allows admins to fine-tune resource allocation within the namespace by scoping quotas based on the PriorityClass of pods. You can find more details <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/resource-quotas\/#resource-quota-per-priorityclass\">here<\/a>.<\/p>\n<h3>Volume Snapshots<\/h3>\n<p>One of the most exciting new 1.12 features for storage is the <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/177\">early alpha<\/a> implementation of persistent volume snapshots. This feature allows users to create and restore snapshots at a particular point in time backed by any CSI storage provider. As part of this implementation three new API resources have been added:<br \/>\nVolumeSnapshotClass defines how snapshots for existing volumes are provisioned. VolumeSnapshotContent represents existing snapshots and VolumeSnapshot allows users to request a new snapshot of a persistent volume like so:<\/p>\n<p>apiVersion: snapshot.storage.k8s.io\/v1alpha1<br \/>\nkind: VolumeSnapshot<br \/>\nmetadata:<br \/>\nname: new-snapshot-test<br \/>\nspec:<br \/>\nsnapshotClassName: csi-hostpath-snapclass<br \/>\nsource:<br \/>\nname: pvc-test<br \/>\nkind: PersistentVolumeClaim<\/p>\n<p>For the nitty gritty details take a look at the 1.12 <a href=\"https:\/\/GitHub.com\/kubernetes\/website\/blob\/release-1.12\/content\/en\/docs\/concepts\/storage\/volume-snapshots.md\">documentation branch<\/a> on Github.<\/p>\n<h3>Topology aware dynamic provisioning<\/h3>\n<p>Another storage related feature, topology aware dynamic provisioning, was introduced in v1.11 and has been <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/561\">promoted to beta in 1.12<\/a>. It addresses some limitations with dynamic provisioning of volumes in clusters spread across multiple zones where single-zone storage backends are not globally accessible from all nodes.<\/p>\n<h3>Enhancements for Azure Cloud provider<\/h3>\n<p>These two improvements regarding running Kubernetes in Azure are shipping in 1.12:<\/p>\n<h4>Cluster autoscaler support<\/h4>\n<p>The <a href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/cluster-autoscaler\">cluster autoscaler<\/a> support for Azure was <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/514\">promoted to stable<\/a>. This will allow for automatic scaling of the number of Azure nodes in Kubernetes clusters based on global resource usage.<\/p>\n<h4>Azure availability zone support<\/h4>\n<p>Kubernetes v1.12 adds alpha support for <a href=\"https:\/\/azure.microsoft.com\/en-us\/global-infrastructure\/availability-zones\/\">Azure availability zones (AZ)<\/a>. Nodes in an availability zone will be added with label failure-domain.beta.kubernetes.io\/zone=&lt;region&gt;-&lt;AZ&gt; , and topology-aware provisioning is added for Azure managed disks storage class.<\/p>\n<h3>Anything else?<\/h3>\n<p>Kubernetes 1.12 contains many bug fixes and improvements of internal components, clearly focusing on stabilising the core, maturing existing beta features and improving the release velocity by adding more automated tests to the projects CI pipeline. A noteworthy example for the latter is the addition of <a href=\"https:\/\/github.com\/kubernetes\/features\/issues\/288\">CI e2e conformance tests<\/a> for arm, arm64, ppc64, s390x and windows platforms to the projects test harness.<\/p>\n<p>For a full list of changes in 1.12 see the <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/blob\/master\/CHANGELOG-1.12.md\">release notes<\/a>.<\/p>\n<p><em>Rancher will support Kubernetes 1.12 on hosted clusters as soon as it becomes available on the particular provider. For RKE provisioned clusters it will be supported starting with Rancher 2.2.<\/em><\/p>\n<p><a href=\"https:\/\/rancher.com\/blog\/2018\/2018-09-24-whats-new-in-kubernetes-1.12\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Detailed Overview of Rancher&#8217;s Architecture This newly-updated, in-depth guidebook provides a detailed overview of the features and functionality of the new Rancher: an open-source enterprise Kubernetes platform. Get the eBook Kubernetes 1.12 will be released this week on Thursday, September 27, 2018. Version 1.12 ships just three months after Kubernetes 1.11 and marks the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/10\/16\/whats-new-in-kubernetes-1-12\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;What&#8217;s new in Kubernetes 1.12&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-287","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/comments?post=287"}],"version-history":[{"count":1,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/287\/revisions"}],"predecessor-version":[{"id":337,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/287\/revisions\/337"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/media?parent=287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/categories?post=287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/tags?post=287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}