LWKD logo

Last Week in Kubernetes Development

Stay up-to-date on Kubernetes development in 15 minutes a week.


View LWKD on GitHub

Week Ending January 19, 2020

Developer News

Kubernetes new Data Protection WG has been approved, and has started work. Join their list.

As part of migrating to a community-controlled, all-open source testing platform, and let the GCE staff get on with their lives, the testgrid summaries are being generated by new code. If the summaries look wonky, try the old ones by appending ?summary=old to your testgrid URLs, and report and difference to SIG-Testing.

The testing_frameworks repo has been retired.

Meeting Summary

Kubernetes had the first Community Meeting in the new Monthly format last Thursday. This included updates from SIG-Scheduling, SIG-Cloud Provider, SIG-Autoscaling, and SIG-Scalability. If you missed it, watch the video or read the notes.

Release Schedule

Next Deadline: Enhancements Freeze, Jan 28th

A failure of version-tagging with the anago build tool last week caused the project not to release 1.16.5 or 1.15.8 on time. As such, the Release Engineering team will be re-releasing the patch updates on the 21st, which will include 1.17.2. In related news they are deprecating use of anago and prioritizing work on a replacement written in go (instead of bash).

#86408: Support server-side dry-run in cli-runtime REST Helper

Up until now, the plumbing for server-side dry-run has been directly implemented in the kubectl apply command. This has now been moved into the shared k8s.io/cli-runtime library used by most kubectl commands. This makes it add server-side dry-run support to other kubectl commands where it is applicable as to third-party kubectl plugins.

#76496: Clean deprecated metrics

A fairly straightforward change, removing a set of deprecated metrics that were mostly renamed around 1.14, but as well all non-code deprecation cleanups this may catch some people unawares. To quote from the patch notes:

The following replacement metrics are available from v1.14.0:
* `rest_client_request_latency_seconds` -> `rest_client_request_duration_seconds`
* `scheduler_scheduling_latency_seconds` -> `scheduler_scheduling_duration_seconds `
* `docker_operations` -> `docker_operations_total`
* `docker_operations_latency_microseconds` -> `docker_operations_duration_seconds`
* `docker_operations_errors` -> `docker_operations_errors_total`
* `docker_operations_timeout` -> `docker_operations_timeout_total`
* `network_plugin_operations_latency_microseconds` -> `network_plugin_operations_duration_seconds`
* `kubelet_pod_worker_latency_microseconds` -> `kubelet_pod_worker_duration_seconds`
* `kubelet_pod_start_latency_microseconds` -> `kubelet_pod_start_duration_seconds`
* `kubelet_cgroup_manager_latency_microseconds` -> `kubelet_cgroup_manager_duration_seconds`
* `kubelet_pod_worker_start_latency_microseconds` -> `kubelet_pod_worker_start_duration_seconds`
* `kubelet_pleg_relist_latency_microseconds` -> `kubelet_pleg_relist_duration_seconds`
* `kubelet_pleg_relist_interval_microseconds` -> `kubelet_pleg_relist_interval_seconds`
* `kubelet_eviction_stats_age_microseconds` -> `kubelet_eviction_stats_age_seconds`
* `kubelet_runtime_operations` -> `kubelet_runtime_operations_total`
* `kubelet_runtime_operations_latency_microseconds` -> `kubelet_runtime_operations_duration_seconds`
* `kubelet_runtime_operations_errors` -> `kubelet_runtime_operations_errors_total`
* `kubelet_device_plugin_registration_count` -> `kubelet_device_plugin_registration_total`
* `kubelet_device_plugin_alloc_latency_microseconds` -> `kubelet_device_plugin_alloc_duration_seconds`
* `scheduler_e2e_scheduling_latency_microseconds` -> `scheduler_e2e_scheduling_duration_seconds`
* `scheduler_scheduling_algorithm_latency_microseconds` -> `scheduler_scheduling_algorithm_duration_seconds`
* `scheduler_scheduling_algorithm_predicate_evaluation` -> `scheduler_scheduling_algorithm_predicate_evaluation_seconds`
* `scheduler_scheduling_algorithm_priority_evaluation` -> `scheduler_scheduling_algorithm_priority_evaluation_seconds`
* `scheduler_scheduling_algorithm_preemption_evaluation` -> `scheduler_scheduling_algorithm_preemption_evaluation_seconds`
* `scheduler_binding_latency_microseconds` -> `scheduler_binding_duration_seconds`
* `kubeproxy_sync_proxy_rules_latency_microseconds` -> `kubeproxy_sync_proxy_rules_duration_seconds`
* `apiserver_request_latencies` -> `apiserver_request_duration_seconds`
* `apiserver_dropped_requests` -> `apiserver_dropped_requests_total`
* `etcd_request_latencies_summary` -> `etcd_request_duration_seconds`
* `apiserver_storage_transformation_latencies_microseconds ` -> `apiserver_storage_transformation_duration_seconds`
* `apiserver_storage_data_key_generation_latencies_microseconds` -> `apiserver_storage_data_key_generation_duration_seconds`
* `apiserver_request_count` -> `apiserver_request_total`

The following replacement metrics are available from v1.15.0:
* `apiserver_storage_transformation_failures_total` -> `apiserver_storage_transformation

The following metrics have been removes:
* `apiserver_request_latencies_summary`

Make sure to update anything using these metrics before upgrading.

#86377: API for immutable Secrets and ConfigMaps

This adds a top-level Immutable field to both v1/ConfigMap and v1/Secret. Setting this flag will ensure no data changed are allowed. This can both be used to prevent unintended in-place edits, as well as future performance improvements for ConfigMap and Secret volumes as the kubelet can assume they will never change.

Other Merges


Version Updates

Last Week In Kubernetes Development (LWKD) is a product of some members of the Kubernetes project, but is not an official publication of the Kubernetes project or the CNCF. All original content is licensed Creative Commons Share-Alike, although linked content and images may be differently licensed. LWKD does collect some information on readers, see our privacy notice for details.

You may contribute to LWKD by submitting pull requests or issues on the LWKD github repo.