7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kubernetes 1.14: Urgent Upgrade Notes, Deprecations, Removed and deprecated metrics, API Changes

Last updated at Posted at 2019-04-09

Kubernetes 1.14 の Changelog の Urgent Upgrade Notes, Deprecations, Removed and deprecated metrics, API Changes についてまとめました。

Urgent Upgrade Notes

アップグレード前に読むべきもの

kube-apiserver

  • デフォルトの RBAC ポリシーで、未認証 (unauthenticated) ユーザに対してディスカバリとパーミッションチェックの API (kubectl auth can-i で利用)のアクセスを許可しなくなりました。アップグレードされたクラスタは以前の許可設定が引き継がれますが、新クラスタで設定でも引き続きアクセス許可を行いたい場合、以下のコマンドで設定できます。
    • kubectl create clusterrolebinding anonymous-discovery --clusterrole=system:discovery --group=system:unauthenticated
    • kubectl create clusterrolebinding anonymous-access-review --clusterrole=system:basic-user --group=system:unauthenticated
    • :pencil: CVE-2018-1002105 の脆弱性の post-mortem で RBAC の Discovery ロールを見直す という話が出たようです
  • deprecated だった --storage-versions フラグが削除されました。ストレージバージョンは常に kube-apiserver バイナリにビルトインされたものが使われます (#67678, @caesarxuchao)
  • deprecated だった --repair-malformed-updates フラグが削除されました。 (#73663, @danielqsj)
  • /openapi/v2 スキーマ によって置き換えられたため、1.7 から deprecated となっていた /swaggerapi/* のスキーマは削除されました (#72924, @liggitt)
  • /openapi/v2 スキーマ によって置き換えられたため、v1.10 から deprecated になっていた /swagger.json/swagger-2.0.0.pb-v1 のスキーマは削除されました (#73148, @liggitt)
  • kube-apiserveraggregated された API サーバー/openapi/v2 エンドポイントの openapi スキーマのみを集約するようになりました。 /swagger.json にフォールバックして集約する仕組みは削除されました。aggregated された API サーバーがスキーマを /openapi/v2 (v1.10 から使える) で提供していることを確認してください (#73441, @roycaihw)
  • 1.9 から deprecated となっている "io.k8s.kubernetes.pkg" のプレフィクスで始まる OpenAPI の定義が削除されました。 (#74596, @sttts)
  • ValidateProxyRedirects 機能はベータとなりデフォルトで有効になりました。この機能は API サーバーが同じ host に対してのリダイレクトだけを許可するように制限するものです。もし、ノードが API サーバーがリクエストしたホストのインタフェースと別のインタフェースから CRI のストリーミングリクエストに返答するようになっていた場合はうまく動作しません(ビルトインの dockershim を利用せずに、kubelet の --redirect-container-streaming=true を設定したときのみ起こり得る)。その場合、ノードの設定を修正するまで、この機能を一時的に無効にすることができます。問題を避けるため kubelet では --redirect-container-streaming=false の設定をいれると良いでしょう (#72552, @tallclair)

kubectl

  • deprecated だった kubectl get--show-all フラグが削除されました (#69255, @Pingan2017)

kubelet

  • deprecated だった --experimental-fail-swap-on フラグが削除されました (#69552, @Pingan2017)
    • :pencil:--fail-swap-on" という正式版のフラグで引き続き設定できます。ノードの swap が有効のときに kubelet を起動させないフラグで、デフォルトで有効になっています。
  • HTTPGetAction を指定したヘルスチェック(liveness & readiness) の probe は異なるホスト名のリダイレクトを処理しないようになりました。代わりにローカルでないリダイレクトは成功として扱われます(ドキュメントに記載されている挙動)。この場合、"ProbeWarning" という reason のイベントが生成され、リダイレクトが無視されたことが示されます。もし別のエンドポイントへのリダイレクトに依存していた場合、リダイレクトではなくプロクシーするような kubelet の外でヘルスチェックをするためのロジックが必要となります (#75416, @tallclair)

client-go

  • deprecated だったバージョンなしの API グループのアクセッサ (例えば clientset.Apps())は削除されました。明示的なバージョンの方 (例えば clientset.AppsV1()) を利用してください。(#74422, @liggitt)
  • disk-cached discovery のクライアントが k8s.io/client-go/discovery から k8s.io/client-go/discovery/cached/disk に移動しました。memory-cached discovery のクライアントが k8s.io/client-go/discovery/cached から k8s.io/client-go/discovery/cached/memory に移動しました (#72214, @caesarxuchao)

kubeadm

  • kubeadm alpha preflightkubeadm alpha preflight node が削除されました。代わりに kubeadm join phase preflight を利用してください (#73718, @fabriziopandini)

その他

  • deprecated だった taint node.alpha.kubernetes.io/notReadynode.alpha.kubernetes.io/unreachable はサポートされなくなりました。代わりに node.kubernetes.io/not-readynode.kubernetes.io/unreachable を利用してください。 (#73001, @shivnagarajan)
  • Prometheus のクエリで pod_namecontainer_name のラベル(cadvisor か kubelet probe のメトリクス) を使っているものは、代わりに podcontainer を使うようにしてください。pod_namecontainer_name ラベルは pod and container ラベルとともに移行期間は存在しますが、将来的に削除されます。(#69099, @ehashman)
    • :pencil: Kubernetes Metrics Overhaul というメトリクス見直しの一貫で、一貫性をもったラベル名に統一されました。いままではメトリクスによって pod_namepod 別のラベルが使われており、同時に使う場合は label_replace を使った workaround が必要でした。

Deprecations

kubectl

  • kubectl convert が deprecated になり、v1.17 で削除予定です
  • kubectl get--exportフラグ が deprecated になり、 v1.18 で削除予定です (#73787, @soltysh)

kubelet

  • OS とアーキテクチャの情報が Node の kubernetes.io/oskubernetes.io/arch ラベルに記録されるようになりました。以前までのラベル (beta.kubernetes.io/os and beta.kubernetes.io/arch) はまだ記録されますが、deprecated となり v1.18 で削除されます (#73333, @yujuhong)
    • --containerized フラグが deprecated になり将来のリリースで削除されます (#74267, @dims)

hyperkube

  • --make-symlinks フラグが deprecated になり将来のリリースで削除されます (#74975, @dims)

API

  • Ingress リソースが networking.k8s.io/v1beta1 で有効になりました。extensions/v1beta1 の Ingress リソースは deprecated となり v1.18 以降は提供されなくなります。既存の永続化されたデータは 新しい API グループ/バージョンでも取得できます (#74057, @liggitt)
  • v1.16 から NetworkPolicy リソースは extensions/v1beta1 では提供されなくなります。v1.8 からある networking.k8s.io/v1 を利用するように変更してください。既存の永続化されたデータは networking.k8s.io/v1 からも取得できます。
  • v1.16 から PodSecurityPolicy リソースは extensions/v1beta1 では提供されなくなります。v1.10 からある policy/v1beta1 を利用するように変更してください。既存の永続化されたデータは policy/v1beta1 からも取得できます。
  • v1.16 から DaemonSet, Deployment, ReplicaSet リソースは extensions/v1beta1, apps/v1beta1, apps/v1beta2 では提供されなくります。v1.9 からある apps/v1 に以降してください。既存の永続化されたデータは apps/v1 からも取得できます。
  • PriorityClass リソースが scheduling.k8s.io/v1 に昇格しました。 scheduling.k8s.io/v1beta1scheduling.k8s.io/v1alpha1 は deprecated になり、v1.17 から無効になります。 (#73555, #74465, @bsalamat)
  • list API コールの export クエリパラメタは deprecated になり v1.18 で削除されます (#73783, @deads2k)

:pencil: リソースバージョンのまとめ

旧バージョンのカッコは提供されなくなる Kubernetes のバージョンです。

リソース | 新バージョン | 旧バージョン
--- | --- | --- | ---
Ingress | networking.k8s.io/v1beta1 | extensions/v1beta1 (v1.18)
NetworkPolicy | networking.k8s.io/v1 | extensions/v1beta1 (v1.16)
PodSecurityPolicy | policy/v1beta1 | extensions/v1beta1 (v1.16)
DaemonSet | apps/v1 | extensions/v1beta1, apps/v1beta1, apps/v1beta2 (v1.16)
Deployment | apps/v1 | extensions/v1beta1, apps/v1beta1, apps/v1beta2 (v1.16)
ReplicaSet | apps/v1 | extensions/v1beta1, apps/v1beta1, apps/v1beta2 (v1.16)
PriorityClass | scheduling.k8s.io/v1 | scheduling.k8s.io/v1beta1, scheduling.k8s.io/v1alpha1 (v1.17)

その他

  • 以下の機能が GA になりました。関連する feature gate は deprecated となり v1.15 で削除されます
    • CustomPodDNS
    • HugePages
    • MountPropagation
    • PersistentLocalVolumes
  • CoreDNS: 以下のディレクティブまたはキーワードは deprecated となり、v1.15 で削除されます
    • kubernetes プラグインの upstream オプション。v1.15 ではデフォルトの挙動になります
    • proxy プラグイン。forward プラグインに置き換えられます

削除または deprecated となったメトリクス

削除されたメトリクス

  • reflector_items_per_list
  • reflector_items_per_watch
  • reflector_last_resource_version
  • reflector_list_duration_seconds
  • reflector_lists_total
  • reflector_short_watches_total
  • reflector_watch_duration_seconds
  • reflector_watches_total

:pencil: これらのメトリクス(reflector metrrics)はラベルが動的に生成されるため、kubelet のメモリリークの原因となっていました。このメトリクスをモニタリングに使うのは難しかったという理由もあり削除されました。
参考: Remove reflector metrics since they are causing a memory leak #74636

deprecated となったメトリクス

  • rest_client_request_latency_seconds -> rest_client_request_duration_seconds
  • apiserver_proxy_tunnel_sync_latency_secs -> apiserver_proxy_tunnel_sync_duration_seconds
  • scheduler_scheduling_latency_seconds -> scheduler_scheduling_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
  • docker_operations -> docker_operations_total
  • docker_operations_latency_microseconds -> docker_operations_latency_seconds
  • docker_operations_errors -> docker_operations_errors_total
  • docker_operations_timeout -> docker_operations_timeout_total
  • network_plugin_operations_latency_microseconds -> network_plugin_operations_latency_seconds
  • sync_proxy_rules_latency_microseconds -> sync_proxy_rules_latency_seconds
  • apiserver_request_count -> apiserver_request_total
  • apiserver_request_latencies -> apiserver_request_latency_seconds
  • apiserver_request_latencies_summary -> apiserver_request_latency_seconds
  • apiserver_dropped_requests -> apiserver_dropped_requests_total
  • etcd_helper_cache_hit_count -> etcd_helper_cache_hit_total
  • etcd_helper_cache_miss_count -> etcd_helper_cache_miss_total
  • etcd_helper_cache_entry_count -> etcd_helper_cache_entry_total
  • etcd_request_cache_get_latencies_summary -> etcd_request_cache_get_latency_seconds
  • etcd_request_cache_add_latencies_summary -> etcd_request_cache_add_latency_seconds
  • etcd_request_latencies_summary -> etcd_request_latency_seconds
  • transformation_latencies_microseconds -> transformation_latencies_seconds
  • data_key_generation_latencies_microseconds -> data_key_generation_latencies_seconds

:pencil: Kubernetes Metrics Overhaul という Kubernetes のメトリクスの見直しがあり、一貫性を持ったメトリクス名に変更されました。

API Changes

  • [CRI] PodSandboxPodSandboxStatusruntime_handler という Pod の RuntimeClass の情報をトラックするためのフィールドが追加されました (#73833, @haiyanmeng)
7
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?