You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 7, 2022. It is now read-only.
Fix kube-proxy PodSecurityPolicy binding on GCE & GKE. This was only an issue when running kube-proxy as a DaemonSet, with PodSecurityPolicy enabled. (#72761, @tallclair)
Fixes spurious 0-length API responses. (#72856, @liggitt)
client-go: restores behavior of populating the BearerToken field in rest.Config objects constructed from kubeconfig files containing tokenFile config, or from in-cluster configuration. An additional BearerTokenFile field is now populated to enable constructed clients to periodically refresh tokens. (#71713, @liggitt)
Fix AWS NLB security group updates where valid security group ports were incorrectly removed (#68422, @kellycampbell)
when updating a service or when node changes occur.
Fix scheduling starvation of pods in cluster with large number of unschedulable pods. (#72619, @everpeace)
client-go: shortens refresh period for token files to 1 minute to ensure auto-rotated projected service account tokens are read frequently enough. (#72437, @liggitt)
change azure disk host cache to ReadOnly by default (#72229, @andyzhangx)
Fixes a bug in HPA controller so HPAs are always updated every resyncPeriod (15 seconds). (#72373, @krzysztof-jastrzebski)
Fixes issue with cleaning up stale NFS subpath mounts (#71804, @msau42)
Fix device mountable volume names in DSW to prevent races in device mountable plugin, e.g. local. (#71509, @cofyc)
Fixes a bug in previous releases where a pod could be placed inside another pod's cgroup when specifying --cgroup-root (#70678, @dashpole)
Fixes issue where subpath volume content was deleted during orphaned pod cleanup for Local volumes that are directories (and not mount points) on the root filesystem. (#72291, @msau42)
Fix a race condition in the scheduler preemption logic that could cause nominatedNodeName of a pod not to be considered in one or more scheduling cycles. (#72504, @bsalamat)
Fix race condition introduced by graceful termination which can lead to a deadlock in kube-proxy (#72361, @lbernail)
Support graceful termination with IPVS when deleting a service (#71895, @lbernail)
Fixes an issue where Portworx volumes cannot be mounted if 9001 port is already in use on the host and users remap 9001 to another port. (#70392, @harsh-px)
fix race condition when attach azure disk in vmss (#71992, @andyzhangx)
Fixed kubelet reporting "resource name may not be empty" when mounting a volume very quickly after unmount. (#71074, @jsafrane)
Update to use go1.10.7 with fix for CVE-2018-16875 (#72072, @ixdy)
kube-proxy in IPVS mode will stop initiating connections to terminating pods for services with sessionAffinity set. (#71834, @lbernail)
ACTION REQUIRED: The Node.Status.Volumes.Attached.DevicePath fields is deprecated for CSI volumes and will be unset in a future release (#71095, @msau42)
fix issue: vm sku restriction policy does not work in azure disk attach/detach (#71941, @andyzhangx)
Scheduler only activates unschedulable pods if node's scheduling related properties change. (#71551, @mlmhl)
UDP connections now support graceful termination in IPVS mode (#71515, @lbernail)
Fixes an issue where Azure VMSS instances not existing in Azure were not being deleted by the Cloud Controller Manager. (#71597, @marc-sensenich)
Include CRD for BGPConfigurations, needed for calico 2.x to 3.x upgrade. (#71868, @satyasm)
On GCI, NPD starts to monitor kubelet, docker, containerd crashlooping, read-only filesystem and corrupt docker overlay2 issues. (#71522, @wangzhen127)
Only use the first IP address got from instance metadata. This is because Azure CNI would set up a list of IP addresses in instance metadata, while only the first one is the Node's IP. (#71736, @feiskyer)
kube-controller-manager: fixed issue display help for the deprecated insecure --port flag (#71601, @liggitt)
Fix a potential bug that scheduler preempts unnecessary pods. (#70898, @Huang-Wei)
The kube-apiserver's healthz now takes in an optional query parameter which allows you to disable health checks from causing healthz failures. (#70676, @logicalhan)
Fix scheduling starvation of pods in cluster with large number of unschedulable pods. (#71488, @bsalamat)
Upgrade Stackdriver Logging Agent addon image to 0.6-1.6.0-1 to use Fluentd v1.2. This provides nanoseconds timestamp granularity for logs. (#70954, @qingling128)
fix detach azure disk issue due to dirty cache (#71495, @andyzhangx)
Fixes ability for admin/edit/view users to see controller revisions, needed for kubectl rollout commands (#70699, @liggitt)
Upgrade golang.org/x/net image to release-branch.go1.10 (#70663, @wenjiaswe)
[GCE] Filter out spammy audit logs from cluster autoscaler. (#70696, @loburm)
Correctly default Audience in the kubelet for TokenRequestProjections. (#71007, @mikedanese)
fix azure disk attach/detach failed forever issue (#71377, @andyzhangx)
Fix a scheduler panic due to internal cache inconsistency (#71063, @Huang-Wei)
apiserver: fixes handling and logging of panics in REST handlers to prevent crashes (#71076, @liggitt)
Fixes an issue with stuck connections handling error responses (#71419, @liggitt)
Scheduling conformance tests related to daemonsets should set the annotation that relaxes node selection restrictions, if any are set. This ensures conformance tests can run on a wider array of clusters. (#68793, @aveshagarwal)
Disabled ScheduleDaemonSetPods if kubelet version less than 1.11; and ScheduleDaemonSetPods is not supported on a 1.13 control plane / 1.10 kubelet split. (#69566, @k82cn)
kubeadm: fix an issue where 'config view' did not return a config in case of a 1.12 cluster (#69969, @neolit123)
Restrict redirect following from the apiserver to same-host redirects, and ignore redirects in some cases. (#66516, @tallclair)
Enable insertId generation, and update Stackdriver Logging Agent image to 0.5-1.5.36-1-k8s. This help reduce log duplication and guarantee log order. (#68920, @qingling128)
Fix cluster autoscaler addon permissions so it can access batch/job. (#69858, @losipiuk)
Add tolerations for Stackdriver Logging and Metadata Agents. (#69737, @qingling128)
change default azure file mount permission to 0777 (#69854, @andyzhangx)
Fix a bug in the scheduler that could cause the scheduler to go to an infinite loop when all nodes in a zone are removed. (#69758, @bsalamat)
kubeadm now allows mixing of init/cluster and join configuration in a single YAML file (although a warning gets printed in this case). (#69426, @rosti)
Pod disruption budgets shouldn't be checked for terminal pods while evicting (#68892, @ravisantoshgudimetla)
Feature #566 enabling CoreDNS as the default for kube-up deployments was dropped from the release due to a scalability memory resource consumption issue observed. If a cluster operator is considering using CoreDNS on a cluster greater than 2000 nodes, it may be necessary to give more consideration to CoreDNS pod memory resource limits and experimentally measure that memory usage versus cluster resource availability.
kube-controller-manager currently needs a writable --cert-dir (default is /var/run/kubernetes) for generating self-signed certificates, when no --tls-cert-file or --tls-private-key-file are provided.
The system:kube-controller-manager ClusterRole lacks permission to get the configmap extension-apiserver-authentication. kube-controller-manager errors if run with a service account bound to the clusterrole.
Runtime handler and Windows npipe protocol are not supported yet in crictl v1.11.x. Those features will be supported in crictl v1.12.0, together with Kubernetes v1.12.1.
Major Themes
SIG API Machinery
SIG API work this cycle involved development of the "dry run" functionality, which enables users to see the results of a particular command without persisting those changes.
SIG-autoscaling
SIG Autoscaling focused on improving the Horizontal Pod Autoscaling API and algorithm:
We released autoscaling/v2beta2, which cleans up and unifies the API
We improved readiness detection and smoothing to work well in a larger variety or use cases
SIG-Azure
Sig Azure was focused on two primary new alpha features:
Adding Azure Availability Zones support to cloud provider.
Supporting Cross RG resources (disks, Azure File and node [Experimental]
Besides the above new features, support for Azure Virtual Machine Scale Sets (VMSS) and Cluster-Autoscaler is now stable and considered GA:
Azure virtual machine scale sets (VMSS) allow you to create and manage identical load balanced VMs that automatically increase or decrease based on demand or a set schedule.
With this new stable feature, Kubernetes supports the scaling of containerized applications with Azure VMSS, including the ability to integrate it with cluster-autoscaler to automatically adjust the size of the Kubernetes clusters based on the same conditions.
SIG-cli
SIG CLI focused on implementing the new plugin mechanism, providing a library with common CLI tooling for plugin authors and further refactorings of the code.
SIG-cloud-provider
This is the first Kubernetes release for this SIG! In v1.12, SIG Cloud Provider focused on building the processes and infrastructure to better support existing and new cloud providers. Some of these initiatives (many of which are still in progress) are:
Reporting E2E conformance test results to TestGrid from every cloud provider (in collaboration with SIG Testing & SIG Release)
Defining minimum required documentation from each cloud provider which includes (in collaboration with SIG Docs):
example manifests for the kube-apiserver, kube-controller-manager, kube-schedule, kubelet, and the cloud-controller-manager
labels/annotations that are consumed by any cloud specific controllers
In addition to the above, SIG Cloud Provider has been focusing on a long running effort to remove cloud provider code from kubernetes/kubernetes.
SIG-cluster-lifecycle
In 1.12, SIG Cluster lifecycle has focused on improving the user experience in kubeadm, by fixing a number of bugs and adding some new important features.
Here is a list of some of the changes that have been made to kubeadm:
Kubeadm internal config has been promoted to v1alpha3:
v1alpha1 has been removed.
v1alpha3 has split apart MasterConfiguration into separate components; InitConfiguration, ClusterConfiguration, JoinConfiguration, KubeletConfiguration, and KubeProxyConfiguration
Different configuration types can be supplied all in the same file separated by ---.
Improved CRI handling
crictl is no longer required in docker-only setups.
Better detection of installed CRI.
Better output for image pull errors.
Improved air-gapped and offline support
kubeadm now handles air-gapped environments by using the local client version as a fallback.
Some kubeadm commands are now allowed to work in a completely offline mode.
Certificate handling improvements:
Renew certs as part of upgrade.
New kubeadm alpha phase certs renew command for renewing certificates.
Certificates created with kubeadm now have improved uniqueness of Distinguished Name fields.
HA improvements:
kubeadm join --experimental-control-plane can now be used to join control plane instances to an existing cluster.
kubeadm upgrade node experimental-control-plane can now be used for upgrading secondary control plane instances created with kubeadm join --experimental-control-plane.
Multi-arch support (EXPERIMENTAL):
kubeadm now adds support for docker “schema 2” manifest lists. This is preliminary part of the process of making kubeadm based k8s deployments to support multiple architectures.
Deprecating features:
The Alpha feature-gates HighAvailability, SelfHosting, CertsInSecrets are now deprecated, and will be removed in k8s v1.13.0.
SIG-ibmcloud
As a newly created SIG, the SIG-ibmcloud has mainly focused on SIG set up, sharing IBM Clouds ongoing Kubernetes work like scalability tests, Kubernetes upgrade strategy etc. with the SIG members and start working on processes to move cloud provider code to a public GitHub repo.
SIG-instrumentation
No feature work, but a large refactoring of metrics-server as well as a number of bug fixes.
SIG-node
SIG-node graduated the PodShareProcessNamespace feature from alpha to beta. This feature allows a pod spec to request that all containers in a pod share a common process namespaces.
Two alpha features were also added in this release.
The RuntimeClass alpha feature enables a node to surface multiple runtime options to support a variety of workload types. Examples include native linux containers, and “sandboxed” containers that isolate the container from the host kernel.
The CustomCFSQuotaPeriod alpha feature enables node administrators to change the default period used to enforce CFS quota on a node. This can improve performance for some workloads that experience latency while using CFS quota with the default measurement period. Finally, the SIG continues to focus on improving reliability by fixing bugs while working out design and implementation of future features.
SIG-OpenStack
SIG-OpenStack development was primarily focused on fixing bugs and improving feature parity with OpenStack resources. New features were primarily limited to the external provider in an effort to drive adoption of the OpenStack external provider over the in-tree provider.
In-tree bug fixes and improvements included:
Fix load balancer status without VIP.
Fix filtering of server status.
Fix resizing PVC of Cinder volume.
Disable load balancer configuration if it is not defined in cloud config.
Add support for node shutdown taint.
The external provider includes all of the above with the additional fixes and features:
Fix bug to prevent allocation of existing floating IP.
Fix Cinder authentication bug when OS_DOMAIN_NAME not specified.
Fix Keystone authentication errors by skipping synchronization for unscoped tokens.
Fix authentication error for client-auth-plugin
Fix dependency references from in-tree-provider to point to external provider.
Add shutdown instance by Provider ID.
Add annotation to preserve floating IP after service delete.
Add conformance testing to stable and development branches.
Add support support to Manilla for trustee authentication and supplying custom CAs.
Add and update documentation.
Add support to Manilla for provisioning existing shares.
Add cluster name to load balancer description
Add synchronization between Kubernetes and Keystone projects
Add use internal DNS name for 'hostname' of nodes.
Add support for CSI spec v0.3.0 for both Cinder and Manilla
Add 'cascade delete' support for Octavia load balancers to improve performance.
Add improved load balancer naming.
SIG-scheduling
SIG Scheduling development efforts have been primarily focused on improving performance and reliability of the scheduler.
Performance of the inter-pod affinity/anti-affinity feature is improved over 100X via algorithmic optimization.
DaemonSet pods, which used to be scheduled by the DaemonSet controller, will be scheduled by the default scheduler in 1.12. This change allows DaemonSet pods to enjoy all the scheduling features of the default scheduler.
The Image Locality priority function of the scheduler has been improved and is now enabled by default. With this feature enabled, nodes that have all or a partial set of images required for running a pod are preferred over other nodes, which improves pod start-up time.
TaintNodeByCondition has been moved to Beta and is enabled by default.
Scheduler throughput has been improved by ~50% in large clusters (>2000 nodes).
SIG-service-catalog
The Originating Identity feature, which lets the broker know which user that performed an action, is now GA.
Namespaced Brokers, which enable operators to install a broker into a namespace instead of the cluster level, reached GA.
The Service Plan Defaults feature is in alpha and is under active development. This feature gives operators the ability to define defaults for when someone provisions a service.
We have also Improved the CLI experience both for kubectl and svcat by improving the output formatting, and by adding more commands.
SIG-storage
SIG Storage promoted the Kubernetes volume topology feature to beta. This enables Kubernetes to understand and act intelligently on volume accessibility information (such as the “zone” a cloud volume is provisioned in, the “rack” that a SAN array is accessible from, and so on).
The dynamic maximum volume count feature was also moved to beta. This enables a volume plugin to specify the maximum number of a given volume type per node as a function of the node characteristics (for example, a larger limit for larger nodes, a smaller limit for smaller nodes).
SIG Storage also worked on a number of Container Storage Interface (CSI) features this quarter in anticipation of moving support for CSI from beta to GA in the next Kubernetes release. This includes graduating the dependent “mount namespace propagation” feature to GA, moving the Kubelet plugin registration mechanism to beta, adding alpha support for a new CSI driver registry as well as for topology, and adding a number of alpha features to support the use of CSI for “local ephemeral volumes” (that is, volumes that exist for the lifecycle of a pod and contain some injected information, like a token or secret).
With Kubernetes v1.12, SIG Storage also introduced alpha support for volume snapshotting. This feature introduces the ability to create/delete volume snapshots and create new volumes from a snapshot using the Kubernetes API.
SIG-vmware
SIG-VMware development was primarily focused on fixing bugs for the in-tree cloud provider, starting the development of the external cloud provider and taking ownership of the cluster-api provider for vSphere.
In-tree cloud provider bug fixes and improvements included:
Adding initial Zones support to the provider using vSphere Tags
Improving the testing harness for the cloud provider by introducing vcsim for automated testing
Fixing a bug that was preventing updates from 1.10 to 1.11
The external cloud provider was established and reached feature parity with in-tree, and we expect to stabilize it and have it as preferred deployment model by 1.13. We are also getting started on externalizing the vSphere volume functionalities in a CSI plugin to fully reproduce the current in-tree storage functionality.
The Cluster API effort is currently undergoing a complete rehaul of the existing codebase, moving off Terraform and into using govmomi directly.
SIG-windows
SIG Windows focused on stability and reliability of our existing feature set. We primarily fixed bugs as we march towards a near future stable release.
Action Required
etcd2 as a backend is deprecated and support will be removed in Kubernetes 1.13.
The --storage-versions flag of kube-apiserver is now deprecated. This flag should be omitted to ensure the default storage versions are used. Otherwise the cluster is not safe to upgrade to a version newer than 1.12. This flag will be removed in 1.13. (#68080, @caesarxuchao) Courtesy of SIG API Machinery
Volume dynamic provisioning scheduling has been moved to beta, which means that the DynamicProvisioningScheduling alpha feature gate has been removed but the VolumeScheduling beta feature gate is still required for this feature. (#67432, @lichuqiang) Courtesy of SIG Apps, SIG Architecture, SIG Storage, and SIG Testing
The API server and client-go libraries have been fixed to support additional non-alpha-numeric characters in UserInfo "extra" data keys. Both should be updated in order to properly support extra data containing "/" characters or other characters disallowed in HTTP headers. (#65799, @dekkagaijin) Courtesy of SIG Auth
The NodeConfiguration kind in the kubeadm v1alpha2 API has been renamed JoinConfiguration in v1alpha3 (#65951, @luxas) Courtesy of SIG Cluster Lifecycle
The MasterConfiguration kind in the kubeadm v1alpha2 API has been renamed InitConfiguration in v1alpha3 (#65945, @luxas) Courtesy of SIG Cluster Lifecycle
The formerly publicly-available cAdvisor web UI that the kubelet started using --cadvisor-port has been entirely removed in 1.12. The recommended way to run cAdvisor if you still need it, is via a DaemonSet. (#65707, @dims)
kubeadm: The v1alpha1 config API has been removed. (#65628, @luxas) Courtesy of SIG Cluster Lifecycle
kube-apiserver: When using --enable-admission-plugins the Priority admission plugin is now enabled by default (matching changes in 1.11.1+). If using --admission-control to fully specify the set of admission plugins, it is now necessary to add the Priority admission plugin for the PodPriority feature to work properly. (#65739, @liggitt) Courtesy of SIG Scheduling
The system-node-critical and system-cluster-critical priority classes are now limited to the kube-system namespace by the PodPriority admission plugin (matching changes in 1.11.1+). (#65593, @bsalamat) Courtesy of SIG Scheduling
kubeadm: Control plane images (etcd, kube-apiserver, kube-proxy, etc.) no longer use arch suffixes. Arch suffixes are kept for kube-dns only. (#66960,
@rosti) Courtesy of SIG Cluster Lifecycle, SIG Release, and SIG Testing
kubeadm - Feature-gates HighAvailability, SelfHosting, CertsInSecrets are now deprecated and can no longer be used for new clusters. Cluster updates using above feature-gates flag is not supported. (#67786, @fabriziopandini) Courtesy of SIG Cluster Lifecycle
'KubeSchedulerConfiguration' which used to be under GroupVersion 'componentconfig/v1alpha1',
is now under 'kubescheduler.config.k8s.io/v1alpha1'. (#66916, @dixudx) Courtesy of SIG Cluster Lifecycle, SIG Scheduling, and SIG Testing
The flag --skip-preflight-checks of kubeadm has been removed. Please use --ignore-preflight-errors instead. (#62727, @xiangpengzhao)
If Openstack LoadBalancer is not defined in cloud config, the loadbalancer will no longer beis not initialized. any more in openstack. All setups must have some setting under that section for the OpenStack provider. (#65781, @zetaab)
Deprecations and removals
Kubeadm: The Alpha feature-gates HighAvailability, SelfHosting, CertsInSecrets are now deprecated, and will be removed in k8s v1.13.0.
The cloudstack and ovirt controllers have been deprecated and will be removed in a future version. (#68199, @dims)
All kubectl run generators have been deprecated except for run-pod/v1. This is part of a move to make kubectl run simpler, enabling it create only pods; if additional resources are needed, you should use kubectl create instead. (#68132, @soltysh)
The deprecated --interactive flag has been removed from kubectl logs. (#65420, @jsoref)
-The deprecated shorthand flag -c has been removed from kubectl version (--client). (#66817, @charrywanganthony)
The --pod flag (-p shorthand) of the kubectl exec command has been marked as deprecated, and will be removed in a future version. This flag is currently optional. (#66558, @quasoft)
kubectl: --use-openapi-print-columns has been deprecated in favor of --server-print, and will be removed in a future version. (#65601, @liggitt)
The watch API endpoints prefixed with /watch are deprecated and will be removed in a future release. These standard method for watching resources (supported since v1.0) is to use the list API endpoints with a ?watch=true parameter. All client-go clients have used the parameter method since v1.6.0. (#65147, @liggitt)
Using the Horizontal Pod Autoscaler with metrics from Heapster is now deprecated and will be disabled in a future version. (#68089, @DirectXMan12)
The watch API endpoints prefixed with /watch are deprecated and will be removed in a future release. These standard method for watching resources (supported since v1.0) is to use the list API endpoints with a ?watch=true parameter. All client-go clients have used the parameter method since v1.6.0. (#65147, @liggitt)
New Features
Kubernetes now registers volume topology information reported by a node-level Container Storage Interface (CSI) driver. This enables Kubernetes support of CSI topology mechanisms. (#67684, @verult) Courtesy of SIG API Machinery, SIG Node, SIG Storage, and SIG Testing
Addon-manager has been bumped to v8.7 (#68299, @MrHohn) Courtesy of SIG Cluster Lifecycle, and SIG Testing
The CSI volume plugin no longer needs an external attacher for non-attachable CSI volumes. (#67955, @jsafrane) Courtesy of SIG API Machinery, SIG Node, SIG Storage, and SIG Testing
KubeletPluginsWatcher feature graduated to beta. (#68200, @RenaudWasTaken) Courtesy of SIG Node, SIG Storage, and SIG Testing
A TTL mechanism has been added to clean up Jobs after they finish. (#66840, @janetkuo) Courtesy of SIG API Machinery, SIG Apps, SIG Architecture, and SIG Testing
The scheduler is now optimized to throttle computational tasks involved with node selection. (#67555, @wgliang) Courtesy of SIG API Machinery, and SIG Scheduling
The performance of Pod affinity/anti-affinity in the scheduler has been improved. (#67788, @ahmad-diaa) Courtesy of SIG Scalability, and SIG Scheduling
A kubelet parameter and config option has been added to change the CFS quota period from the default 100ms to some other value between 1µs and 1s. This was done to improve response latencies for workloads running in clusters with guaranteed and burstable QoS classes. (#63437, @szuecs) Courtesy of SIG API Machinery, SIG Apps, SIG Architecture, SIG CLI,, SIG Node, and SIG Scheduling
Secure serving on port 10258 to cloud-controller-manager (configurable via --secure-port) is now enabled. Delegated authentication and authorization are to be configured using the same flags as for aggregated API servers. Without configuration, the secure port will only allow access to /healthz. (#67069, @sttts) Courtesy of SIG Auth, and SIG Cloud Provider
The commands kubeadm alpha phases renew <cert-name> have been added. (#67910, @liztio) Courtesy of SIG API Machinery, and SIG Cluster Lifecycle
ProcMount has been added to SecurityContext and AllowedProcMounts has been added to PodSecurityPolicy to allow paths in the container's /proc to not be masked. (#64283, @jessfraz) Courtesy of SIG API Machinery, SIG Apps, SIG Architecture, and SIG Node
Secure serving on port 10257 to kube-controller-manager (configurable via --secure-port) is now enabled. Delegated authentication and authorization are to be configured using the same flags as for aggregated API servers. Without configuration, the secure port will only allow access to /healthz. (#64149, @sttts) Courtesy of SIG API Machinery, SIG Auth, SIG Cloud Provider, SIG Scheduling, and SIG Testing
Azure cloud provider now supports unmanaged nodes (such as on-prem) that are labeled with kubernetes.azure.com/managed=false and alpha.service-controller.kubernetes.io/exclude-balancer=true (#67984, @feiskyer) Courtesy of SIG Azure, and SIG Cloud Provider
SCTP is now supported as an additional protocol (alpha) alongside TCP and UDP in Pod, Service, Endpoint, and NetworkPolicy. (#64973, @janosi) Courtesy of SIG API Machinery, SIG Apps, SIG Architecture, SIG CLI, SIG Cloud Provider, SIG Cluster Lifecycle, SIG Network, SIG Node, and SIG Scheduling
Autoscaling/v2beta2 and custom_metrics/v1beta2 have been introduced, which implement metric selectors for Object and Pods metrics, as well as allowing AverageValue targets on Objects, similar to External metrics. (#64097, @damemi) Courtesy of SIG API Machinery, SIG Architecture, SIG Autoscaling, SIG CLI, and SIG Testing
kubelet: Users can now enable the alpha NodeLease feature gate to have the Kubelet create and periodically renew a Lease in the kube-node-lease namespace. The lease duration defaults to 40s, and can be configured via the kubelet.config.k8s.io/v1beta1.KubeletConfiguration's NodeLeaseDurationSeconds field. (#66257, @mtaufen) Courtesy of SIG API Machinery, SIG Apps, SIG Architecture, SIG Cluster Lifecycle, SIG Node, and SIG Testing
PodReadinessGate is now turned on by default. (#67406, @freehan) Courtesy of SIG Node
Azure cloud provider now supports cross resource group nodes that are labeled with kubernetes.azure.com/resource-group=<rg-name> and alpha.service-controller.kubernetes.io/exclude-balancer=true (#67604, @feiskyer) Courtesy of SIG Azure, SIG Cloud Provider, and SIG Storage
Annotations are now supported for remote admission webhooks. (#58679, @CaoShuFeng) Courtesy of SIG API Machinery, and SIG Auth
The scheduler now scores fewer than all nodes in every scheduling cycle. This can improve performance of the scheduler in large clusters. (#66733, @bsalamat) Courtesy of SIG Scheduling
Node affinity for Azure unzoned managed disks has been added. (#67229, @feiskyer) Courtesy of SIG Azure
The Attacher/Detacher interfaces for local storage have been refactored (#66884, @NickrenREN) Courtesy of SIG Storage
DynamicProvisioningScheduling and VolumeScheduling is now supported for Azure managed disks. Feature gates DynamicProvisioningScheduling and VolumeScheduling should be enabled before using this feature. (#67121, @feiskyer) Courtesy of SIG Azure, and SIG Storage
The audit.k8s.io api group has been upgraded from v1beta1 to v1. (#65891, @CaoShuFeng) Courtesy of SIG API Machinery
The quota admission configuration API graduated to v1beta1. (#66156, @vikaschoudhary16) Courtesy of SIG Node, and SIG Scheduling
Kube-apiserver --help flag help is now printed in sections. (#64517, @sttts)
Azure managed disks now support availability zones and new parameters zoned, zone and zones are added for AzureDisk storage class. (#66553, @feiskyer) Courtesy of SIG Azure
Kubectl create job command has been added. (#60316, @soltysh) Courtesy of SIG CLI
Kubelet serving certificate bootstrapping and rotation has been promoted to beta status. (#66726, @liggitt) Courtesy of SIG Auth, and SIG Node
Azure nodes with availability zone will now have label failure-domain.beta.kubernetes.io/zone=<region>-<zoneID>. (#66242, @feiskyer) Courtesy of SIG Azure
kubeadm: Default component configs are now printable via kubeadm config print-default (#66074, @rosti) Courtesy of SIG Cluster Lifecycle
Mount propagation has been promoted to GA. The MountPropagation feature gate is deprecated and will be removed in 1.13. (#67255, @bertinatto) Courtesy of SIG Apps, SIG Architecture, SIG Node, and SIG Storage
Ubuntu 18.04 (Bionic) series has been added to Juju charms (#65644, @tvansteenburgh)
kubeadm: The kubeadm configuration now supports the definition of more than one control plane instances with their own APIEndpoint. The APIEndpoint for the "bootstrap" control plane instance should be defined using InitConfiguration.APIEndpoint, while the APIEndpoints for additional control plane instances should be added using JoinConfiguration.APIEndpoint. (#67832, @fabriziopandini)
Add new --server-dry-run flag to kubectl apply so that the request will be sent to the server with the dry-run flag (alpha), which means that changes won't be persisted. (#68069, @apelisse)
Introduce CSI Cluster Registration mechanism to ease CSI plugin discovery and allow CSI drivers to customize Kubernetes' interaction with them. (#67803, @saad-ali)
The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. (#66507, @verb)
API Changes
kubeadm now supports the phase command "alpha phase kubelet config annotate-cri". (#68449, @fabriziopandini)
kubeadm: --cri-socket now defaults to tcp://localhost:2375 when running on Windows. (#67447, @benmoss)
kubeadm now includes a new EXPERIMENTAL --rootfs, which (if specified) causes kubeadm to chroot before performing any file operations. This is expected to be useful when setting up kubernetes on a different filesystem, such as invoking kubeadm from docker. (#54935, @anguslees)
The command line option --cri-socket-path of the kubeadm subcommand "kubeadm config images pull" has been renamed to --cri-socket to be consistent with the rest of kubeadm subcommands.
kubeadm: The ControlPlaneEndpoint was moved from the API config struct to ClusterConfiguration (#67830, @fabriziopandini)
kubeadm: InitConfiguration now consists of two structs: InitConfiguration and ClusterConfiguration (#67441, @rosti)
The RuntimeClass API has been added. This feature is in alpha, and the RuntimeClass feature gate must be enabled in order to use it. The RuntimeClass API resource defines different classes of runtimes that may be used to run containers in the cluster. Pods can select a RuntimeClass to use via the RuntimeClassName field. (#67737, @tallclair)
To address the possibility of dry-run requests overwhelming admission webhooks that rely on side effects and a reconciliation mechanism, a new field is being added to admissionregistration.k8s.io/v1beta1.ValidatingWebhookConfiguration and admissionregistration.k8s.io/v1beta1.MutatingWebhookConfiguration so that webhooks can explicitly register as having dry-run support. If a dry-run request is made on a resource that triggers a non dry-run supporting webhook, the request will be completely rejected, with "400: Bad Request". Additionally, a new field is being added to the admission.k8s.io/v1beta1.AdmissionReview API object, exposing to webhooks whether or not the request being reviewed is a dry-run. (#66936, @jennybuckley)
CRI now supports a "runtime_handler" field for RunPodSandboxRequest, used for selecting the runtime configuration to run the sandbox with (alpha feature). (#67518, @tallclair)
More fields are allowed at the root of the CRD validation schema when the status subresource is enabled. (#65357, @nikhita)
The --docker-disable-shared-pid kubelet flag has been removed. PID namespace sharing can instead be enable per-pod using the ShareProcessNamespace option. (#66506, @verb)
Added the --dns-loop-detect option to dnsmasq, which is run by kube-dns. (#67302, @dixudx)
Kubernetes now supports extra --prune-whitelist resources in kube-addon-manager. (#67743, @Random-Liu)
Graduate Resource Quota ScopeSelectors to beta, and enable it by default. (#67077, @vikaschoudhary16)
The OpenAPI spec and documentation now reflect the 202 Accepted response path for delete requests. Note that this change in the openapi spec may affect some clients that depend on the error paths. (#63418, @roycaihw)
The alpha Initializers admission plugin is no longer enabled by default. This matches the off-by-default behavior of the alpha API which drives initializer behavior. (#66039, @liggitt)
Adding validation to kube-scheduler at the API level (#66799, @noqcks)
DisruptedPods field in PodDisruptionBudget is optional instead of required. (#63757, @nak3)
Other Notable Changes
SIG API Machinery
kubectl get apiservice now shows the target service and whether the service is available (#67747, @smarterclayton)
Apiserver panics will now be returned as 500 errors rather than terminating the apiserver process. (#68001, @sttts)
API paging is now enabled for custom resource definitions, custom resources and APIService objects. (#67861, @liggitt)
To address the possibility dry-run requests overwhelming admission webhooks that rely on side effects and a reconciliation mechanism, a new field is being added to admissionregistration.k8s.io/v1beta1.ValidatingWebhookConfiguration and admissionregistration.k8s.io/v1beta1.MutatingWebhookConfiguration so that webhooks can explicitly register as having dry-run support. If a dry-run request is made on a resource that triggers a non dry-run supporting webhook, the request will be completely rejected, with "400: Bad Request". Additionally, a new field is being added to the admission.k8s.io/v1beta1.AdmissionReview API object, exposing to webhooks whether or not the request being reviewed is a dry-run. (#66936, @jennybuckley)
kube-apiserver now includes all registered API groups in discovery, including registered extension API group/versions for unavailable extension API servers. (#66932, @nilebox)
kube-apiserver: setting a dryRun query parameter on a CONNECT request will now cause the request to be rejected, consistent with behavior of other mutating API requests. Examples of CONNECT APIs are the nodes/proxy, services/proxy, pods/proxy, pods/exec, and pods/attach subresources. Note that this prevents sending a dryRun parameter to backends via {nodes,services,pods}/proxy subresources. (#66083, @jennybuckley)
In clusters where the DryRun feature is enabled, dry-run requests will go through the normal admission chain. Because of this, ImagePolicyWebhook authors should especially make sure that their webhooks do not rely on side effects. (#66391, @jennybuckley)
Added etcd_object_count metrics for CustomResources. (#65983, @sttts)
The OpenAPI version field will now be properly autopopulated without needing other OpenAPI fields present in generic API server code. (#66411, @DirectXMan12)
TLS timeouts have been extended to work around slow arm64 math/big functions. (#66264, @joejulian)
Kubernetes now checks CREATE admission for create-on-update requests instead of UPDATE admission. (#65572, @yue9944882)
kube- and cloud-controller-manager can now listen on ports up to 65535 rather than 32768, solving problems with operating systems that request these higher ports.. (#65860, @sttts)
LimitRange and Endpoints resources can be created via an update API call if the object does not already exist. When this occurs, an authorization check is now made to ensure the user making the API call is authorized to create the object. In previous releases, only an update authorization check was performed. (#65150, @jennybuckley)
More fields are allowed at the root of the CRD validation schema when the status subresource is enabled. (#65357, @nikhita)
api-machinery utility functions SetTransportDefaults and DialerFor once again respect custom Dial functions set on transports (#65547, @liggitt)
AdvancedAuditing has been promoted to GA, replacing the previous (legacy) audit logging mechanisms. (#65862, @loburm)
Added --authorization-always-allow-paths to components doing delegated authorization to exclude certain HTTP paths like /healthz from authorization. (#67543, @sttts)
Allow ImageReview backend to return annotations to be added to the created pod. (#64597, @wteiken)
Upon receiving a LIST request with an expired continue token, the apiserver now returns a continue token together with the 410 "the from parameter is too old" error. If the client does not care about getting a list from a consistent snapshot, the client can use this token to continue listing from the next key, but the returned chunk will be from the latest snapshot. (#67284, @caesarxuchao)
SIG Apps
The service controller will now retry creating the load balancer when persistUpdate fails due to conflict. (#68087, @grayluck)
The latent controller caches no longer cause repeating deletion messages for deleted pods. (#67826, @deads2k)
SIG Auth
TokenRequest and TokenRequestProjection are now beta features. To enable these feature, the API server needs to be started with the --service-account-issuer, --service-account-signing-key-file, and --service-account-api-audiences flags.
(#67349, @mikedanese)
The admin RBAC role now aggregates edit and view. The edit RBAC role now aggregates view. (#66684, @deads2k)
UserInfo derived from service account tokens created from the TokenRequest API now include the pod name and UID in the Extra field. (#61858, @mikedanese)
The extension API server can now dynamically discover the requestheader CA certificate when the core API server doesn't use certificate based authentication for it's clients. (#66394, @rtripat)
SIG Autoscaling
Horizontal Pod Autoscaler default update interval has been increased from 30s to 15s, improving HPA reaction time for metric changes. (#68021, @krzysztof-jastrzebski)
To avoid soft-deleted pods incorrectly affecting scale up replica count calculations, the HPA controller will stop counting soft-deleted pods for scaling purposes. (#67067, @moonek)
HPA reaction to metric changes has been spend up by removing the scale up forbidden window. (#66615, @jbartosik)
SIG AWS
AWS LoadBalancer security group ICMP rules now match the documentation of spec.loadBalancerSourceRanges (#63572, @haz-mat)
The aws cloud provider now reports a Hostname address type for nodes based on the local-hostname metadata key. (#67715, @liggitt)
SIG Azure
\API calls for Azure instance metadata have been reduced to help avoid "too many requests" errors.. (#67478, @feiskyer)
Azure Go SDK has been upgraded to v19.0.0 and VirtualMachineScaleSetVM now supports availability zones. (#66648, @feiskyer)
The Azure load balancer idle connection timeout for services is now configurable.(#66045, @cpuguy83)
When provisioning workloads, Kubernetes will now skip nodes that have a primary NIC in a 'Failed' provisioningState. (#65412, @yastij)
The NodeShutdown taint is now supported for Azure. (#68033, @yastij)
SIG CLI
Added a sample-cli-plugin staging repository and cli-runtime staging repository to help showcase the new kubectl plugins mechanism. (#67938, #67658, @soltysh)
The plugin mechanism functionality now closely follows the git plugin design (#66876, @juanvallejo)
kubectl: When an object can't be updated and must be deleted by force, kubectl will now recreating resources for immutable fields.(#66602, @dixudx)
kubectl create {clusterrole,role}'s --resources flag now supports asterisk to specify all resources. (#62945, @nak3)
kubectl: the wait command now prints an error message and exits with the code 1, if there is no resources matching selectors (#66692, @m1kola)
Kubectl now handles newlines for command, args, env, and annotations in kubectl describe wrapping. (#66841, @smarterclayton)
The kubectl patch command no longer exits with exit code 1 when a redundant patch results in a no-op (#66725, @juanvallejo)
The output of kubectl get events has been improved to prioritize showing the message, and to move some fields to -o wide. (#66643, @smarterclayton)
kubectl config set-context can now set attributes of the current context, such as the current namespace, by passing --current instead of a specific context name (#66140, @liggitt)
"kubectl delete" no longer waits for dependent objects to be deleted when removing parent resources (#65908, @juanvallejo)
A new flag, --keepalive, has been introduced, for kubectl proxy to allow setting keep-alive period for long-running request. (#63793, @hzxuzhonghu)
kubectl: fixed a regression with --use-openapi-print-columns that would not print object contents (#65600, @liggitt)
The display of jobs in kubectl get and kubectl describe has been improved to emphasize progress and duration. (#65463, @smarterclayton)
CSI volume attributes have been added to kubectl describe pv`. (#65074, @wgliang)
Running kubectl describe pvc now shows which pods are mounted to the pvc being described with the Mounted By field (#65837, @clandry94)
kubectl create secret tls can now read certificate and key files from process substitution arguments (#67713, @liggitt)
kubectl rollout status now works for unlimited timeouts. (#67817, @tnozicka)
SIG Cloud Provider
The cloudstack cloud provider now reports a Hostname address type for nodes based on the local-hostname metadata key. (#67719, @liggitt)
The OpenStack cloud provider now reports a Hostname address type for nodes (#67748, @FengyunPan2)
The vSphere cloud provider now suppoerts zones. (#66795, @jiatongw)
SIG Cluster Lifecycle
External CAs can now be used for kubeadm with only a certificate, as long as all required certificates already exist. (#68296, @liztio)
kubeadm now works better when not connected to the Internet. In addition, common kubeadm commands will now work without an available networking interface. (#67397, @neolit123)
Scrape frequency of metrics-server has been increased to 30s.(#68127, @serathius)
Kubeadm nodes will no longer be able to run with an empty or invalid hostname in /proc/sys/kernel/hostname (#64815, @dixudx)
kubeadm now can join the cluster with pre-existing client certificate if provided (#66482, @dixudx)
(#66382, @bart0sh)
kubeadm will no longer hang indefinitely if there is no Internet connection and --kubernetes-version is not specified.(#65676, @dkoshkin)
kubeadm: kube-proxy will now run on all nodes, and not just master nodes.(#65931, @neolit123)
kubeadm now uses separate YAML documents for the kubelet and kube-proxy ComponentConfigs. (#65787, @luxas)
kubeadm will now print required flags when running kubeadm upgrade plan.(#65802, @xlgao-zju)
Unix support for ZFS as a valid graph driver has been added for Docker, enabling users to use Kubeadm with ZFS. (#65635, @neolit123)
SIG GCP
GCE: decrease cpu requests on master node, to allow more components to fit on one core machine. (#67504, @loburm)
Kubernetes 1.12 includes a large number of metadata agent improvements, including expanding the metadata agent's access to all API groups and removing metadata agent config maps in favor of command line flags. It also includes improvements to the logging agent, such as multiple fixes and adjustments.
(#66485, @bmoyles0117)
cluster/gce: Kubernetes now generates consistent key sizes in config-default.sh using /dev/urandom instead of /dev/random (#67139, @yogi-sagar)
SIG Instrumentation
The etcdv3 client can now be monitored by Prometheus. (#64741, @wgliang)
SIG Network
The ip-masq-agent will now be scheduled in all nodes except master due to NoSchedule/NoExecute tolerations. (#66260, @tanshanshan)
The CoreDNS service can now be monitored by Prometheus. (#65589, @rajansandeep)
Traffic shaping is now supported for the CNI network driver. (#63194, @m1093782566)
The dockershim now sets the "bandwidth" and "ipRanges" CNI capabilities (dynamic parameters). Plugin authors and administrators can now take advantage of this by updating their CNI configuration file. For more information, see the CNI docs (#64445, @squeed)
SIG Node
RuntimeClass is a new API resource for defining different classes of runtimes that may be used to run containers in the cluster. Pods can select a RunitmeClass to use via the RuntimeClassName field. This feature is in alpha, and the RuntimeClass feature gate must be enabled in order to use it. (#67737, @tallclair)
Sped up kubelet start time by executing an immediate runtime and node status update when the Kubelet sees that it has a CIDR. (#67031, @krzysztof-jastrzebski)
cpumanager will now rollback state if updateContainerCPUSet failed, indicating that the container start failed. This change will prevent CPU leaks. (#67430, @choury)
[CRI] RunPodSandboxRequest now has a runtime_handler field for selecting the runtime configuration to run the sandbox with. This feature is in alpha for 1.12.. (#67518, @tallclair)
If a container's requested device plugin resource hasn't registered after Kubelet restart, the container start will now fail.(#67145, @jiayingz)
Upgraded TaintNodesByCondition to beta. (#62111, @k82cn)
The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. (#66507, @verb)
The CPU Manager will now validate the state of the node, enabling Kubernetes to maintain the CPU topology even if resources change. (#66718, @ipuustin)
Added support kubelet plugin watcher in device manager, as part of the new plugin system. (#58755, @vikaschoudhary16)
Expose docker registry config for addons used in Juju deployments (#66092, @kwmonroe)
RunAsGroup which has been broken since 1.10, now works. (#65926, @Random-Liu)
The systemd config files are now reloaded before kubelet starts, so changes can take effect(#65702, @mborsz)
Hostnames are now converted to lowercase before being used for node lookups in the kubernetes-worker charm. (#65487, @dshcherb)
kubelets that specify --cloud-provider now only report addresses in Node status as determined by the cloud provider (unless --hostname-override is used to force reporting of the specified hostname) (#65594, @liggitt)
Kubelet now exposes /debug/flags/v to allow dynamically setting glog logging level. For example, to change glog level to 3, you only have to send a PUT request like curl -X PUT http://127.0.0.1:8080/debug/flags/v -d "3". (#64601, @hzxuzhonghu)
SIG OpenStack
Openstack now supports the node shutdown taint. The taint is added when an instance is shutdown in openstack. (#67982, @zetaab)
SIG Scheduling
The equivalence class cache has been redesigned to be a two level cache, resulting in a significant increase in scheduling throughput and performance. (#65714, @resouer)
kube-scheduler can now listen on ports up to 65535, correcting a problem with certain operating systems that request ports greater than 32768. (#65833, @sttts)
Performance of the anti-affinity predicate of the default scheduler has been improved. (#66948, @mohamed-mehany)
The unreachable taint gets applied to a node when it loses its network connection. (#67734, @Huang-Wei)
If TaintNodesByCondition is enabled, add node.kubernetes.io/unschedulable and node.kubernetes.io/network-unavailable automatically to DaemonSet pods. (#64954, @k82cn)
SIG Storage
The AllowedTopologies field inside StorageClass is now validated against set and map semantics. Specifically, there cannot be duplicate TopologySelectorTerms, MatchLabelExpressions keys, or TopologySelectorLabelRequirement Values. (#66843, @verult)
A PersistentVolumeClaim may not have been synced to the controller local cache in time if the PersistentVolumeis bound by an external PV binder (such as kube-scheduler), so Kubernetes will now double check if PVC is not found in order to prevent the volume from being incorrectly reclaimed. (#67062, @cofyc)
Filesystems will now be properly unmounted when a backend is not reachable and returns EIO. (#67097, @chakri-nelluri)
The logic for attaching volumes has been changed so that attachdetach controller attaches volumes immediately when a Pod's PVCs are bound, preventing a problem that caused pods to have extremely long startup times. (#66863, @cofyc)
Dynamic provisions that create iSCSI PVs can now ensure that multipath is used by specifying 2 or more target portals in the PV, which will cause kubelet to wait up to 10 seconds for the multipath device. PVs with just one portal continue to work as before, with kubelet not waiting for the multipath device and just using the first disk it finds. (#67140, @bswartz)
ScaleIO volumes can now be provisioned without having to first manually create /dev/disk/by-id path on each kubernetes node (if not already present). (#66174, @ddebroy)
Multi-line annotations injected via downward API files will no longer be sorted, scrambling their information. (#65992, @liggitt)
The constructed volume spec for the CSI plugin now includes a volume mode field. (#65456, @wenlxie)
Kubernetes now includes a metric that reports the number of PVCs that are in-use,with plugin and node name as dimensions, making it possible to figure out how many PVCs each node is using when troubleshooting attach/detach issues.
(#64527, @gnufied)
Added support to restore a volume from a volume snapshot data source. (#67087, @xing-yang)
When attaching iSCSI volumes, kubelet now scans only the specific LUNs being attached, and also deletes them after detaching. This avoids dangling references to LUNs that no longer exist, which used to be the cause of random I/O errors/timeouts in kernel logs, slowdowns during block-device related operations, and very rare cases of data corruption.
(#63176, @bswartz)
Both directory and block devices are now supported for local volume plugin FileSystem VolumeMode. (#63011, @NickrenREN)
CSI NodePublish call can optionally contain information about the pod that requested the CSI volume. (#67945, @jsafrane)
Added support for volume attach limits for CSI volumes. (#67731, @gnufied)
SIG VMWare
The vmUUID is now preserved when renewing nodeinfo in the vSphere cloud provider. (#66007, @w-leads)
You can now configure the vsphere cloud provider with a trusted Root-CA, enabling you to take advantage of TLS certificate rotation. (#64758, @mariantalla)
SIG Windows
Kubelet no longer attempts to sync iptables on non-Linux systems.. (#67690, @feiskyer)
Kubelet no longer applies default hard evictions of nodefs.inodesFree on non-Linux systems. (#67709, @feiskyer)
Windows system container "pods" now support kubelet stats. (#66427, @feiskyer)
Other Notable Changes
Bug Fixes
Update debian-iptables and hyperkube-base images to include CVE fixes. (#67365, @ixdy)
Fix for resourcepool-path configuration in the vsphere.conf file. (#66261, @divyenpatel)
This fix prevents a GCE PD volume from being mounted if the udev device link is stale and tries to correct the link. (#66832, @msau42)
Fix controller-manager crashes when flex plugin is removed from flex plugin directory (#65536, @gnufied)
Fix local volume directory can't be deleted because of volumeMode error (#65310, @wenlxie)
bugfix: Do not print feature gates in the generic apiserver code for glog level 0 (#65584, @neolit123)
Fix an issue that pods using hostNetwork keep increasing. (#67456, @Huang-Wei)
fixes an out of range panic in the NoExecuteTaintManager controller when running a non-64-bit build (#65596, @liggitt)
Fix kubelet to not leak goroutines/intofiy watchers on an inactive connection if it's closed (#67285, @yujuhong)
Fix pod launch by kubelet when --cgroups-per-qos=false and --cgroup-driver="systemd" (#66617, @pravisankar)
Fixed a panic in the node status update logic when existing node has nil labels. (#66307, @guoshimin)
Fix the bug where image garbage collection is disabled by mistake. (#66051, @jiaxuanzhou)
Fix a bug that preempting a pod may block forever. (#65987, @Random-Liu)
Fix an issue with dropped audit logs, when truncating and batch backends enabled at the same time. (#65823, @loburm)
DaemonSet: Fix bug- daemonset didn't create pod after node have enough resource (#67337, @linyouchong)
DaemonSet controller is now using backoff algorithm to avoid hot loops fighting with kubelet on pod recreation when a particular DaemonSet is misconfigured. (#65309, @tnozicka)
Avoid creating new controller revisions for statefulsets when cache is stale (#67039, @mortent)
Fixes issue when updating a DaemonSet causes a hash collision. (#66476, @mortent)
fixes a panic when using a mutating webhook admission plugin with a DELETE operation (#66425, @liggitt)
Fix creation of custom resources when the CRD contains non-conventional pluralization and subresources (#66249, @deads2k)
Aadjusted http/2 buffer sizes for apiservers to prevent starvation issues between concurrent streams (#67902, @liggitt)
Fixed a bug that was blocking extensible error handling when serializing API responses error out. Previously, serialization failures always resulted in the status code of the original response being returned. Now, the following behavior occurs: (#67041, @tristanburgess)
Fixes issue where pod scheduling may fail when using local PVs and pod affinity and anti-affinity without the default StatefulSet OrderedReady pod management policy (#67556, @msau42)
Fix panic when processing Azure HTTP response. (#68210, @feiskyer)
Fix volume limit for EBS on m5 and c5 instance types (#66397, @gnufied)
Fix a bug on GCE that /etc/crictl.yaml is not generated when crictl is preloaded. (#66877, @Random-Liu)
Revert #63905: Setup dns servers and search domains for Windows Pods. DNS for Windows containers will be set by CNI plugins. (#66587, @feiskyer)
Fix validation for HealthzBindAddress in kube-proxy when --healthz-port is set to 0 (#66138, @wsong)
Fixes issue #68899 where pods might schedule on an unschedulable node. (#68984, @k82cn)
Not Very Notable (that is, non-user-facing)
Unit tests have been added for scopes and scope selectors in the quota spec (#66351, @vikaschoudhary16) Courtesy of SIG Node, and SIG Scheduling
kubelet v1beta1 external ComponentConfig types are now available in the k8s.io/kubelet repo (#67263, @luxas) Courtesy of SIG Cluster Lifecycle, SIG Node, SIG Scheduling, and SIG Testing
kubeadm: Pull sidecar and dnsmasq-nanny images when using kube-dns (#66499, @rosti)
kubeadm: Fix pause image to not use architecture, as it is a manifest list (#65920, @dims)
kubeadm: Remove usage of PersistentVolumeLabel (#65827, @xlgao-zju)
kubeadm: Add a v1alpha3 API. This change creates a v1alpha3 API that is initially a duplicate of v1alpha2. (#65629, @luxas)
Improved error message when checking the rollout status of StatefulSet with OnDelete strategy type. (#66983, @mortent)
Defaults for file audit logging backend in batch mode changed: (#67223, @tallclair)
Role, ClusterRole and their bindings for cloud-provider is put under system namespace. Their addonmanager mode switches to EnsureExists. (#67224, @grayluck)
Don't let aggregated apiservers fail to launch if the external-apiserver-authentication configmap is not found in the cluster. (#67836, @sttts)
Always create configmaps/extensions-apiserver-authentication from kube-apiserver. (#67694, @sttts)
Switched certificate data replacement from "REDACTED" to "DATA+OMITTED" (#66023, @ibrasho)
Decrease the amount of time it takes to modify kubeconfig files with large amounts of contexts (#67093, @juanvallejo)
Remove unused binary and container image for kube-aggregator. The functionality is already integrated into the kube-apiserver. (#67157, @dims)
kube-controller-manager now uses the informer cache instead of active pod gets in HPA controller (#68241, @krzysztof-jastrzebski)
Replace scale down forbidden window with scale down stabilization window. Rather than waiting a fixed period of time between scale downs HPA now scales down to the highest recommendation it during the scale down stabilization window. (#68122, @krzysztof-jastrzebski)
Improve CPU sample sanitization in HPA by taking metric's freshness into account. (#68068, @krzysztof-jastrzebski)
Replace scale up forbidden window with disregarding CPU samples collected when pod was initializing. (#67252, @jbartosik)
[e2e] verifying LimitRange update is effective before creating new pod (#68171, @dixudx)
Port 31337 will be used by fluentd (#68051, @Szetty)
Fix flexvolume in containarized kubelets (#65549, @gnufied)
The check for unsupported plugins during volume resize has been moved from the admission controller to the two controllers that handle volume resize. (#66780, @kangarlou)
kubeadm: remove redundant flags settings for kubelet (#64682, @dixudx)
Set “priorityClassName: system-node-critical” on kube-proxy manifest by default. (#60150, @MrHohn)
kube-proxy v1beta1 external ComponentConfig types are now available in the k8s.io/kube-proxy repo (#67688, @Lion-Wei)
add missing LastTransitionTime of ContainerReady condition (#64867, @dixudx)
External Dependencies
Default etcd server was updated to v3.2.24. (#68318)
Rescheduler is unchanged from v1.11: v0.4.0. (#65454)
The list of validated docker versions was updated to 1.11.1, 1.12.1, 1.13.1, 17.03, 17.06, 17.09, 18.06. (#68495)
The default Go version was updated to 1.10.4. (68802)
The minimum supported Go version was updated to 1.10.2 (#63412)
hcsshim is unchanged from v1.11, at v0.11 (#64272)
gitRepo volumes in pods no longer require git 1.8.5 or newer; older git versions are now supported. (#62394)
Upgraded crictl on GCE to v1.11.1, up from 1.11.0 on v1.11. (#66152)
CoreDNS has been updated to v1.2.2, up from v1.1.3 in v1.11 (#68076)
Setup dns servers and search domains for Windows Pods in dockershim. Docker EE version >= 17.10.0 is required for propagating DNS to containers. (#63905)
kube-proxy restores the *filter table when running in ipvs mode. (#68786, @alexjx)
New kubeDNS image fixes an issue where SRV records were incorrectly being compressed. Added manifest file for multiple arch images. (#68430, @prameshj)
Upgrade kubeadm's version of docker support (#68495, @yuansisi)
fix a bug that overwhelming number of prometheus metrics are generated because $NAMESPACE is not replaced by string "{namespace}" (#68530, @wenjiaswe)
The feature gates ReadOnlyAPIDataVolumes and ServiceProxyAllowExternalIPs, deprecated since 1.10, have been removed and any references must be removed from command-line invocations. (#67951, @liggitt)
Verify invalid secret/configmap/projected volumes before calling setup (#68691, @gnufied)
Fix bug that caused kubectl commands to sometimes fail to refresh access token when running against GKE clusters. (#66314, @jlowdermilk)
Use KubeDNS by default in GCE setups, as CoreDNS has significantly higher memory usage in large clusters. (#68629, @shyamjvs)
Fix PodAntiAffinity issues in case of multiple affinityTerms. (#68173, @Huang-Wei)
Make APIGroup field in TypedLocalObjectReference optional. (#68419, @xing-yang)
Fix potential panic when getting azure load balancer status (#68609, @feiskyer)
Fix kubelet panics when RuntimeClass is enabled. (#68521, @yujuhong)
Action required: The --storage-versions flag of kube-apiserver is deprecated. Please omit this flag to ensure the default storage versions are used. Otherwise the cluster is not safe to upgrade to a version newer than 1.12. This flag will be removed in 1.13. (#68080, @caesarxuchao)
Other notable changes
kubeadm: add mandatory "--config" flag to "kubeadm alpha phase preflight" (#68446, @neolit123)
Apply user configurations for local etcd (#68334, @SataQiu)
If TaintNodesByCondition is enabled, add node.kubernetes.io/unschedulable and (#64954, @k82cn)
node.kubernetes.io/network-unavailable automatically to DaemonSet pods.
Deprecate cloudstack and ovirt controllers (#68199, @dims)
add missing LastTransitionTime of ContainerReady condition (#64867, @dixudx)
kube-controller-manager: use informer cache instead of active pod gets in HPA controller (#68241, @krzysztof-jastrzebski)
Support NodeShutdown taint for azure (#68033, @yastij)
Registers volume topology information reported by a node-level Container Storage Interface (CSI) driver. This enables Kubernetes support of CSI topology mechanisms. (#67684, @verult)
Update default etcd server to 3.2.24 for kubernetes 1.12 (#68318, @timothysc)
External CAs can now be used for kubeadm with only a certificate, as long as all required certificates already exist. (#68296, @liztio)
Update etcd client to 3.2.24 for latest release (#68147, @timothysc)
[fluentd-gcp-scaler addon] Bump fluentd-gcp-scaler to 0.4 to pick up security fixes. (#67691, @loburm)
[prometheus-to-sd addon] Bump prometheus-to-sd to 0.3.1 to pick up security fixes, bug fixes and new features.
[event-exporter addon] Bump event-exporter to 0.2.3 to pick up security fixes.
Fixes issue where pod scheduling may fail when using local PVs and pod affinity and anti-affinity without the default StatefulSet OrderedReady pod management policy (#67556, @msau42)
Kubelet only applies default hard evictions of nodefs.inodesFree on Linux (#67709, @feiskyer)
Add kubelet stats for windows system container "pods" (#66427, @feiskyer)
Add a TTL machenism to clean up Jobs after they finish. (#66840, @janetkuo)
Move volume dynamic provisioning scheduling to beta (ACTION REQUIRED: The DynamicProvisioningScheduling alpha feature gate has been removed. The VolumeScheduling beta feature gate is still required for this feature) (#67432, @lichuqiang)
Other notable changes
Not split nodes when searching for nodes but doing it all at once. (#67555, @wgliang)
Deprecate kubectl run generators, except for run-pod/v1 (#68132, @soltysh)
Using the Horizontal Pod Autoscaler with metrics from Heapster is now deprecated. (#68089, @DirectXMan12)
Support both directory and block device for local volume plugin FileSystem VolumeMode (#63011, @NickrenREN)
Add CSI volume attributes for kubectl describe pv. (#65074, @wgliang)
kubectl rollout status now works for unlimited timeouts. (#67817, @tnozicka)
Fix panic when processing Azure HTTP response. (#68210, @feiskyer)
add mixed protocol support for azure load balancer (#67986, @andyzhangx)
Replace scale down forbidden window with scale down stabilization window. Rather than waiting a fixed period of time between scale downs HPA now scales down to the highest recommendation it during the scale down stabilization window. (#68122, @krzysztof-jastrzebski)
Adding validation to kube-scheduler at the API level (#66799, @noqcks)
Improve performance of Pod affinity/anti-affinity in the scheduler (#67788, @ahmad-diaa)
kubeadm: fix air-gapped support and also allow some kubeadm commands to work without an available networking interface (#67397, @neolit123)
Increase Horizontal Pod Autoscaler default update interval (30s -> 15s). It will improve HPA reaction time for metric changes. (#68021, @krzysztof-jastrzebski)
Increase scrape frequency of metrics-server to 30s (#68127, @serathius)
Add new --server-dry-run flag to kubectl apply so that the request will be sent to the server with the dry-run flag (alpha), which means that changes won't be persisted. (#68069, @apelisse)
kubelet v1beta1 external ComponentConfig types are now available in the k8s.io/kubelet repo (#67263, @luxas)
Adds a kubelet parameter and config option to change CFS quota period from the default 100ms to some other value between 1µs and 1s. This was done to improve response latencies for workloads running in clusters with guaranteed and burstable QoS classes. (#63437, @szuecs)
Enable secure serving on port 10258 to cloud-controller-manager (configurable via --secure-port). Delegated authentication and authorization have to be configured like for aggregated API servers. (#67069, @sttts)
Support extra --prune-whitelist resources in kube-addon-manager. (#67743, @Random-Liu)
Upon receiving a LIST request with expired continue token, the apiserver now returns a continue token together with the 410 "the from parameter is too old " error. If the client does not care about getting a list from a consistent snapshot, the client can use this token to continue listing from the next key, but the returned chunk will be from the latest snapshot. (#67284, @caesarxuchao)
Role, ClusterRole and their bindings for cloud-provider is put under system namespace. Their addonmanager mode switches to EnsureExists. (#67224, @grayluck)
Mount propagation has promoted to GA. The MountPropagation feature gate is deprecated and will be removed in 1.13. (#67255, @bertinatto)
Introduce CSI Cluster Registration mechanism to ease CSI plugin discovery and allow CSI drivers to customize Kubernetes' interaction with them. (#67803, @saad-ali)
Adds the commands kubeadm alpha phases renew <cert-name> (#67910, @liztio)
ProcMount added to SecurityContext and AllowedProcMounts added to PodSecurityPolicy to allow paths in the container's /proc to not be masked. (#64283, @jessfraz)
Enable secure serving on port 10257 to kube-controller-manager (configurable via --secure-port). Delegated authentication and authorization have to be configured like for aggregated API servers. (#64149, @sttts)
TokenRequest and TokenRequestProjection are now beta features. To enable these feature, the API server needs to be started with the following flags: (#67349, @mikedanese)
* --service-account-issuer
* --service-account-signing-key-file
* --service-account-api-audiences
Don't let aggregated apiservers fail to launch if the external-apiserver-authentication configmap is not found in the cluster. (#67836, @sttts)
Promote AdvancedAuditing to GA, replacing the previous (legacy) audit logging mechanisms. (#65862, @loburm)
Azure cloud provider now supports unmanaged nodes (such as on-prem) that are labeled with kubernetes.azure.com/managed=false and alpha.service-controller.kubernetes.io/exclude-balancer=true (#67984, @feiskyer)
kubectl get apiservice now shows the target service and whether the service is available (#67747, @smarterclayton)
Openstack supports now node shutdown taint. Taint is added when instance is shutdown in openstack. (#67982, @zetaab)
Return apiserver panics as 500 errors instead terminating the apiserver process. (#68001, @sttts)
Change chain name to IP-MASQ to be compatible with the
pre-injected masquerade rules.
AllowedTopologies field inside StorageClass is now validated against set and map semantics. Specifically, there cannot be duplicate TopologySelectorTerms, MatchLabelExpressions keys, and TopologySelectorLabelRequirement Values. (#66843, @verult)
Introduces autoscaling/v2beta2 and custom_metrics/v1beta2, which implement metric selectors for Object and Pods metrics, as well as allowing AverageValue targets on Objects, similar to External metrics. (#64097, @damemi)
The cloudstack cloud provider now reports a Hostname address type for nodes based on the local-hostname metadata key. (#67719, @liggitt)
kubeadm: --cri-socket now defaults to tcp://localhost:2375 when running on Windows (#67447, @benmoss)
kubeadm: The kubeadm configuration now support definition of more than one control plane instances with their own APIEndpoint. The APIEndpoint for the "bootstrap" control plane instance should be defined using InitConfiguration.APIEndpoint, while the APIEndpoints for additional control plane instances should be added using JoinConfiguration.APIEndpoint. (#67832, @fabriziopandini)
kubelet: Users can now enable the alpha NodeLease feature gate to have the Kubelet create and periodically renew a Lease in the kube-node-lease namespace. The lease duration defaults to 40s, and can be configured via the kubelet.config.k8s.io/v1beta1.KubeletConfiguration's NodeLeaseDurationSeconds field. (#66257, @mtaufen)
latent controller caches no longer cause repeating deletion messages for deleted pods (#67826, @deads2k)
API paging is now enabled for custom resource definitions, custom resources and APIService objects (#67861, @liggitt)
kubeadm: ControlPlaneEndpoint was moved from the API config struct to ClusterConfiguration (#67830, @fabriziopandini)
kubeadm - feature-gates HighAvailability, SelfHosting, CertsInSecrets are now deprecated and can't be used anymore for new clusters. Update of cluster using above feature-gates flag is not supported (#67786, @fabriziopandini)
Replace scale up forbidden window with disregarding CPU samples collected when pod was initializing. (#67252, @jbartosik)
Moving KubeSchedulerConfiguration from ComponentConfig API types to staging repos (#66916, @dixudx)
Improved error message when checking the rollout status of StatefulSet with OnDelete strategy type (#66983, @mortent)
RuntimeClass is a new API resource for defining different classes of runtimes that may be used to run containers in the cluster. Pods can select a RunitmeClass to use via the RuntimeClassName field. This feature is in alpha, and the RuntimeClass feature gate must be enabled in order to use it. (#67737, @tallclair)
Remove rescheduler since scheduling DS pods by default scheduler is moving to beta. (#67687, @Lion-Wei)
Speed up kubelet start time by executing an immediate runtime and node status update when the Kubelet sees that it has a CIDR. (#67031, @krzysztof-jastrzebski)
The OpenStack cloud provider now reports a Hostname address type for nodes (#67748, @FengyunPan2)
The aws cloud provider now reports a Hostname address type for nodes based on the local-hostname metadata key. (#67715, @liggitt)
Azure cloud provider now supports cross resource group nodes that are labeled with kubernetes.azure.com/resource-group=<rg-name> and alpha.service-controller.kubernetes.io/exclude-balancer=true (#67604, @feiskyer)
Reduce API calls for Azure instance metadata. (#67478, @feiskyer)
kubectl create secret tls can now read certificate and key files from process substitution arguments (#67713, @liggitt)
To address the possibility dry-run requests overwhelming admission webhooks that rely on side effects and a reconciliation mechanism, a new field is being added to admissionregistration.k8s.io/v1beta1.ValidatingWebhookConfiguration and admissionregistration.k8s.io/v1beta1.MutatingWebhookConfiguration so that webhooks can explicitly register as having dry-run support. If a dry-run request is made on a resource that triggers a non dry-run supporting webhook, the request will be completely rejected, with "400: Bad Request". Additionally, a new field is being added to the admission.k8s.io/v1beta1.AdmissionReview API object, exposing to webhooks whether or not the request being reviewed is a dry-run. (#66936, @jennybuckley)
cpumanager: rollback state if updateContainerCPUSet failed (#67430, @choury)
[CRI] Adds a "runtime_handler" field to RunPodSandboxRequest, for selecting the runtime configuration to run the sandbox with (alpha feature). (#67518, @tallclair)
fixes json logging in fluentd-elasticsearch image by downgrading fluent-plugin-kubernetes_metadata_filter plugin to version 2.0.0 (#67544, @monotek)
add --dns-loop-detect option to dnsmasq run by kube-dns (#67302, @dixudx)
Switched certificate data replacement from "REDACTED" to "DATA+OMITTED" (#66023, @ibrasho)
improve performance of anti-affinity predicate of default scheduler. (#66948, @mohamed-mehany)
Fixed a bug that was blocking extensible error handling when serializing API responses error out. Previously, serialization failures always resulted in the status code of the original response being returned. Now, the following behavior occurs: (#67041, @tristanburgess)
If the serialization type is application/vnd.kubernetes.protobuf, and protobuf marshaling is not implemented for the requested API resource type, a '406 Not Acceptable is returned'.
If the serialization type is 'application/json':
- If serialization fails, and the original status code was an failure (e.g. 4xx or 5xx), the original status code will be returned.
- If serialization fails, and the original status code was not a failure (e.g. 2xx), the status code of the serialization failure will be returned. By default, this is '500 Internal Server Error', because JSON serialization is our default, and not supposed to be implemented on a type-by-type basis.
Add a feature to the scheduler to score fewer than all nodes in every scheduling cycle. This can improve performance of the scheduler in large clusters. (#66733, @bsalamat)
kube-controller-manager can now start the quota controller when discovery results can only be partially determined. (#67433, @deads2k)
The plugin mechanism functionality now closely follows the git plugin design (#66876, @juanvallejo)
GCE: decrease cpu requests on master node, to allow more components to fit on one core machine. (#67504, @loburm)
PVC may not be synced to controller local cache in time if PV is bound by external PV binder (e.g. kube-scheduler), double check if PVC is not found to prevent reclaiming PV wrongly. (#67062, @cofyc)
add more storage account sku support for azure disk (#67528, @andyzhangx)
updates es-image to elasticsearch 6.3.2 (#67484, @monotek)
updates fluentd in fluentd-elasticsearch to version 1.2.4 (#67434, @monotek)
* also updates activesupport, fluent-plugin-elasticsearch & oj gems
The dockershim now sets the "bandwidth" and "ipRanges" CNI capabilities (dynamic parameters). Plugin authors and administrators can now take advantage of this by updating their CNI configuration file. For more information, see the CNI docs (#64445, @squeed)
Expose /debug/flags/v to allow kubelet dynamically set glog logging level. If want to change glog level to 3, you only have to send a PUT request like curl -X PUT http://127.0.0.1:8080/debug/flags/v -d "3". (#64601, @hzxuzhonghu)
Fix an issue that pods using hostNetwork keep increasing. (#67456, @Huang-Wei)
DaemonSet controller is now using backoff algorithm to avoid hot loops fighting with kubelet on pod recreation when a particular DaemonSet is misconfigured. (#65309, @tnozicka)
Add node affinity for Azure unzoned managed disks (#67229, @feiskyer)
Remove unused binary and container image for kube-aggregator. The functionality is already integrated into the kube-apiserver. (#67157, @dims)
Avoid creating new controller revisions for statefulsets when cache is stale (#67039, @mortent)
Revert #63905: Setup dns servers and search domains for Windows Pods. DNS for Windows containers will be set by CNI plugins. (#66587, @feiskyer)
attachdetach controller attaches volumes immediately when Pod's PVCs are bound (#66863, @cofyc)
The check for unsupported plugins during volume resize has been moved from the admission controller to the two controllers that handle volume resize. (#66780, @kangarlou)
Fix kubelet to not leak goroutines/intofiy watchers on an inactive connection if it's closed (#67285, @yujuhong)
fix azure disk create failure due to sdk upgrade (#67236, @andyzhangx)
Dynamic provisions that create iSCSI PVs can ensure that multipath is used by specifying 2 or more target portals in the PV, which will cause kubelet to wait up to 10 seconds for the multipath device. PVs with just one portal continue to work as before, with kubelet not waiting for the multipath device and just using the first disk it finds. (#67140, @bswartz)
kubectl: recreating resources for immutable fields when force is applied (#66602, @dixudx)
Remove deprecated --interactive flag from kubectl logs. (#65420, @jsoref)
The PodShareProcessNamespace feature to configure PID namespace sharing within a pod has been promoted to beta. (#66507, @verb)
kubectl create {clusterrole,role}'s --resources flag supports asterisk to specify all resources. (#62945, @nak3)
Bump up version number of debian-base, debian-hyperkube-base and debian-iptables. (#67026, @satyasm)
Also updates dependencies of users of debian-base.
debian-base version 0.3.1 is already available.
DynamicProvisioningScheduling and VolumeScheduling is now supported for Azure managed disks. Feature gates DynamicProvisioningScheduling and VolumeScheduling should be enabled before using this feature. (#67121, @feiskyer)
kube-apiserver now includes all registered API groups in discovery, including registered extension API group/versions for unavailable extension API servers. (#66932, @nilebox)
Allows extension API server to dynamically discover the requestheader CA certificate when the core API server doesn't use certificate based authentication for it's clients (#66394, @rtripat)
audit.k8s.io api group is upgraded from v1beta1 to v1. (#65891, @CaoShuFeng)
Deprecated element metav1.ObjectMeta and Timestamp are removed from audit Events in v1 version.
Default value of option --audit-webhook-version and --audit-log-version will be changed from audit.k8s.io/v1beta1 to audit.k8s.io/v1 in release 1.13
scope AWS LoadBalancer security group ICMP rules to spec.loadBalancerSourceRanges (#63572, @haz-mat)
Add NoSchedule/NoExecute tolerations to ip-masq-agent, ensuring it to be scheduled in all nodes except master. (#66260, @tanshanshan)
The flag --skip-preflight-checks of kubeadm has been removed. Please use --ignore-preflight-errors instead. (#62727, @xiangpengzhao)
The watch API endpoints prefixed with /watch are deprecated and will be removed in a future release. These standard method for watching resources (supported since v1.0) is to use the list API endpoints with a ?watch=true parameter. All client-go clients have used the parameter method since v1.6.0. (#65147, @liggitt)
kube-apiserver: setting a dryRun query parameter on a CONNECT request will now cause the request to be rejected, consistent with behavior of other mutating API requests. Examples of CONNECT APIs are the nodes/proxy, services/proxy, pods/proxy, pods/exec, and pods/attach subresources. Note that this prevents sending a dryRun parameter to backends via {nodes,services,pods}/proxy subresources. (#66083, @jennybuckley)
In clusters where the DryRun feature is enabled, dry-run requests will go through the normal admission chain. Because of this, ImagePolicyWebhook authors should especially make sure that their webhooks do not rely on side effects. (#66391, @jennybuckley)
action required: the API server and client-go libraries have been fixed to support additional non-alpha-numeric characters in UserInfo "extra" data keys. Both should be updated in order to properly support extra data containing "/" characters or other characters disallowed in HTTP headers. (#65799, @dekkagaijin)
[action required] The NodeConfiguration kind in the kubeadm v1alpha2 API has been renamed JoinConfiguration in v1alpha3 (#65951, @luxas)
ACTION REQUIRED: Removes defaulting of CSI file system type to ext4. All the production drivers listed under https://kubernetes-csi.github.io/docs/Drivers.html were inspected and should not be impacted after this change. If you are using a driver not in that list, please test the drivers on an updated test cluster first. ``` (#65499, @krunaljain)
[action required] The MasterConfiguration kind in the kubeadm v1alpha2 API has been renamed InitConfiguration in v1alpha3 (#65945, @luxas)
[action required] The formerly publicly-available cAdvisor web UI that the kubelet started using --cadvisor-port is now entirely removed in 1.12. The recommended way to run cAdvisor if you still need it, is via a DaemonSet. (#65707, @dims)
Default value for expendable pod priority cutoff in GCP deployment of Cluster Autoscaler changed from 0 to -10.
action required: users deploying workloads with priority lower than 0 may want to use priority lower than -10 to avoid triggering scale-up.
[action required] kubeadm: The v1alpha1 config API has been removed. (#65628, @luxas)
Please convert your v1alpha1 configuration files to v1alpha2 using the
kubeadm config migrate command of kubeadm v1.11.x
kube-apiserver: the Priority admission plugin is now enabled by default when using --enable-admission-plugins. If using --admission-control to fully specify the set of admission plugins, the Priority admission plugin should be added if using the PodPriority feature, which is enabled by default in 1.11. (#65739, @liggitt)
The system-node-critical and system-cluster-critical priority classes are now limited to the kube-system namespace by the PodPriority admission plugin. (#65593, @bsalamat)
kubernetes-worker juju charm: Added support for setting the --enable-ssl-chain-completion option on the ingress proxy. "action required": if your installation relies on supplying incomplete certificate chains and using OCSP to fill them in, you must set "ingress-ssl-chain-completion" to "true" in your juju configuration. (#63845, @paulgear)
In anticipation of CSI 1.0 in the next release, Kubernetes 1.12 calls the CSI NodeGetInfo RPC instead of NodeGetId RPC. Ensure your CSI Driver implements NodeGetInfo(...) before upgrading to 1.12. @saad-ali
Kubernetes 1.12 also enables Kubelet device plugin registration feature by default. Before upgrading to 1.12, ensure the driver-registrar CSI sidecar container for your CSI driver is configured to handle plugin registration (set the --kubelet-registration-path parameter on driver-registrar to expose a new unix domain socket to handle Kubelet Plugin Registration).
Other notable changes
admin RBAC role now aggregates edit and view. edit RBAC role now aggregates view. (#66684, @deads2k)
Speed up HPA reaction to metric changes by removing scale up forbidden window. (#66615, @jbartosik)
Scale up forbidden window was protecting HPA against making decision to scale up based on metrics gathered during pod initialisation (which may be invalid, for example pod may be using a lot of CPU despite not doing any "actual" work).
To avoid that negative effect only use per pod metrics from pods that are:
ready (so metrics about them should be valid), or
unready but creation and last readiness change timestamps are apart more than 10s (pods that have formerly been ready and so metrics are in at least some cases (pod becoming unready because of overload) very useful).
The kubectl patch command no longer exits with exit code 1 when a redundant patch results in a no-op (#66725, @juanvallejo)
Improved the output of kubectl get events to prioritize showing the message, and move some fields to -o wide. (#66643, @smarterclayton)
Added CPU Manager state validation in case of changed CPU topology. (#66718, @ipuustin)
Fix Stackdriver integration based on node annotation container.googleapis.com/instance_id. (#66676, @kawych)
Fix kubelet startup failure when using ExecPlugin in kubeconfig (#66395, @awly)
When attaching iSCSI volumes, kubelet now scans only the specific (#63176, @bswartz)
LUNs being attached, and also deletes them after detaching. This avoids
dangling references to LUNs that no longer exist, which used to be the
cause of random I/O errors/timeouts in kernel logs, slowdowns during
block-device related operations, and very rare cases of data corruption.
kubeadm: Pull sidecar and dnsmasq-nanny images when using kube-dns (#66499, @rosti)
Extender preemption should respect IsInterested() (#66291, @resouer)
Properly autopopulate OpenAPI version field without needing other OpenAPI fields present in generic API server code. (#66411, @DirectXMan12)
renamed command line option --cri-socket-path of the kubeadm subcommand "kubeadm config images pull" to --cri-socket to be consistent with the rest of kubeadm subcommands. (#66382, @bart0sh)
The --docker-disable-shared-pid kubelet flag has been removed. PID namespace sharing can instead be enable per-pod using the ShareProcessNamespace option. (#66506, @verb)
Bump event-exporter to 0.2.2 to pick up security fixes. (#66157, @loburm)
Allow ScaleIO volumes to be provisioned without having to first manually create /dev/disk/by-id path on each kubernetes node (if not already present) (#66174, @ddebroy)
Fix for resourcepool-path configuration in the vsphere.conf file. (#66261, @divyenpatel)
OpenAPI spec and documentation reflect 202 Accepted response path for delete request (#63418, @roycaihw)
fixes a validation error that could prevent updates to StatefulSet objects containing non-normalized resource requests (#66165, @liggitt)
Fix validation for HealthzBindAddress in kube-proxy when --healthz-port is set to 0 (#66138, @wsong)
kubeadm: use an HTTP request timeout when fetching the latest version of Kubernetes from dl.k8s.io (#65676, @dkoshkin)
Support configuring the Azure load balancer idle connection timeout for services (#66045, @cpuguy83)
kubectl config set-context can now set attributes of the current context, like the current namespace, by passing --current instead of a specific context name (#66140, @liggitt)
The alpha Initializers admission plugin is no longer enabled by default. This matches the off-by-default behavior of the alpha API which drives initializer behavior. (#66039, @liggitt)
kubeadm: Default component configs are printable via kubeadm config print-default (#66074, @rosti)
prevents infinite CLI wait on delete when item is recreated (#66136, @deads2k)
Preserve vmUUID when renewing nodeinfo in vSphere cloud provider (#66007, @w-leads)
Expose docker registry config for addons used in Juju deployments (#66092, @kwmonroe)
kubelets that specify --cloud-provider now only report addresses in Node status as determined by the cloud provider (#65594, @liggitt)
* kubelet serving certificate rotation now reacts to changes in reported node addresses, and will request certificates for addresses set by an external cloud provider
Fix the bug where image garbage collection is disabled by mistake. (#66051, @jiaxuanzhou)
fixes an issue with multi-line annotations injected via downward API files getting scrambled (#65992, @liggitt)
kubeadm: run kube-proxy on non-master tainted nodes (#65931, @neolit123)
"kubectl delete" no longer waits for dependent objects to be deleted when removing parent resources (#65908, @juanvallejo)
Introduce a new flag --keepalive for kubectl proxy to allow setting keep-alive period for long-running request. (#63793, @hzxuzhonghu)
If Openstack LoadBalancer is not defined in cloud config, the loadbalancer is not initialized any more in openstack. All setups must have some setting under that section (#65781, @zetaab)
Re-adds pkg/generated/bindata.go to the repository to allow some parts of k8s.io/kubernetes to be go-vendorable. (#65985, @ixdy)
Fix a bug that preempting a pod may block forever. (#65987, @Random-Liu)
Fix flexvolume in containarized kubelets (#65549, @gnufied)
Add volume mode filed to constructed volume spec for CSI plugin (#65456, @wenlxie)
Fix an issue with dropped audit logs, when truncating and batch backends enabled at the same time. (#65823, @loburm)
LimitRange and Endpoints resources can be created via an update API call if the object does not already exist. When this occurs, an authorization check is now made to ensure the user making the API call is authorized to create the object. In previous releases, only an update authorization check was performed. (#65150, @jennybuckley)
Fix 'kubectl cp' with no arguments causes a panic (#65482, @wgliang)
bazel deb package bugfix: The kubeadm deb package now reloads the kubelet after installation (#65554, @rdodev)
api-machinery utility functions SetTransportDefaults and DialerFor once again respect custom Dial functions set on transports (#65547, @liggitt)
Improve the display of jobs in kubectl get and kubectl describe to emphasize progress and duration. (#65463, @smarterclayton)
kubectl convert previous created a list inside of a list. Now it is only wrapped once. (#65489, @deads2k)
fix azure disk creation issue when specifying external resource group (#65516, @andyzhangx)
fixes a regression in kube-scheduler to properly load client connection information from a --config file that references a kubeconfig file (#65507, @liggitt)
Using kubectl describe on CRDs that use underscores will be prettier. (#65391, @smarterclayton)
Improve scheduler's performance by eliminating sorting of nodes by their score. (#65396, @bsalamat)
Add more conditions to the list of predicate failures that won't be resolved by preemption. (#64995, @bsalamat)
Allow access to ClusterIP from the host network namespace when kube-proxy is started in IPVS mode without either masqueradeAll or clusterCIDR flags (#65388, @lbernail)
Don't watch .mount cgroups to reduce number of inotify watches
Fix NVML initialization race condition
Fix brtfs disk metrics when using a subdirectory of a subvolume
Change Azure ARM Rate limiting error message. (#65292, @wgliang)
AWS now checks for validity of ecryption key when creating encrypted volumes. Dynamic provisioning of encrypted volume may get slower due to these checks. (#65223, @jsafrane)
Report accurate status for kubernetes-master and -worker charms. (#65187, @kwmonroe)
Fixed issue 63608, which is that under rare circumstances the ResourceQuota admission controller could lose track of an request in progress and time out after waiting 10 seconds for a decision to be made. (#64598, @MikeSpreitzer)
In the vSphere cloud provider the Global.vm-uuid configuration option is not deprecated anymore, it can be used to overwrite the VMUUID on the controller-manager (#65152, @alvaroaleman)
fluentd-gcp grace termination period increased to 60s. (#65084, @x13n)
Pass cluster_location argument to Heapster (#65176, @kawych)
Fix a scalability issue where high rates of event writes degraded etcd performance. (#64539, @ccding)
Corrected a mistake in the documentation for wait.PollImmediate(...) (#65026, @spew)
Fixes missing nodes lines when kubectl top nodes (#64389, @yue9944882)
keep pod state consistent when scheduler cache UpdatePod (#64692, @adohe)
add external resource group support for azure disk (#64427, @andyzhangx)
Increase the gRPC max message size to 16MB in the remote container runtime. (#64672, @mcluseau)
The new default value for the --allow-privileged parameter of the Kubernetes-worker charm has been set to true based on changes which went into the Kubernetes 1.10 release. Before this change the default value was set to false. If you're installing Canonical Kubernetes you should expect this value to now be true by default and you should now look to use PSP (pod security policies). (#64104, @CalvinHartwell)
The --remove-extra-subjects and --remove-extra-permissions flags have been enabled for kubectl auth reconcile (#64541, @mrogers950)
Fix kubectl drain --timeout option when eviction is used. (#64378, @wrdls)
This PR will leverage subtests on the existing table tests for the scheduler units. (#63659, @xchapter7x)
Some refactoring of error/status messages and functions to align with new approach.