Edited at

kubernetes 1.10 Major Themes

More than 1 year has passed since last update.


はじめに

このエントリは、Kubernetes 1.10 の CHANGELOG から主な変更点 (Major Themes)についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。


kubernetes 1.10 Major Themes


Node

Dynamic Kubelet Configurationをベータにするあたって、たくさんの修正をしました。

あるPodのコンテナが一つのlinux PID namespaceを共有するようにすべきかの設定ができるようになりました。(alpha)

CRIもv1alpha2となりWindows Container Configurationをサポートしました。またCRI validation test suiteもベータ版としてリリースしました。

Resource Management Working Groupは3つの機能をベータとして提供します。



  • CPU ManagerこれはCPUコアを占有する要求を出せるようにするものです。


  • HugePagesは2Miか1GiのHuge Pageを使うことを許可するものです。多くのメモリを使用するアプリケーションに有用なものです。データベースやJVMのチューニングなどに利用できます。

  • 最後がDevice Plugins です。これはベンダーがkubeletのコードに手を加えることなく機能拡張するためのフレームワークです。GPU、ハイパフォーマンスNIC、FPGA、InfiniBand、そしてベンダー固有の初期化や設定が必要なコンピューティングリソースについてこの仕組みが利用することを想定しています。


Storage

今回のリリースではローカルストレージとPersistent Volumeを強化しました。

Mount namespace propagationによりコンテナはrslaveでマウントして、ホストでのマウントがコンテナでも見えるようにできたり、rsharedでマウントして、コンテナ内でのマウントがhostからも見えるようにすることができるようになりました。(これはWindowsではサポートされません。)

Local Ephemeral Storage Capacity Isolation により一時的なディスク容量を要求したり制限したりすることができるようになりました。

さらにLocal Persistent Storageにより、Persistent Volumeをネットワークボリュームだけではなく、ローカルのディスクからも作ることができるようになりました。

下記の変更によりpodが使用中のVolumeが削除されないようになりました。

local persistent volumes のためのTopology Aware Volume Scheduling (スケジューラがVolumeの制約を考慮するようになる機能)、

stableとしてDetailed storage metrics of internal state(ストレージの詳細なmetricsを取得できるようにする機能)、

betaとしてOut-of-tree CSI Volume Plugins(kubeletのプラグインとしてボリュームプラグインを利用できるようにする機能)

がリリースされました。


:pencil: rslave, rshared

ホスト側でマウントしたボリュームをコンテナから使っている状況で、ホスト側でunmount/mountした時にコンテナの再起動をしたくない。

glusterfsのようなfuseを使ったアプリケーションでマウントしたボリュームを別のコンテナから参照する。

などの要求に応えるもののようです。


Windows

下記機能を追加しました。


  • CPUの制限を設定するようにした。( #59333)

  • ファイルシステムのstatsが正しく取れていなかったバグを修正した。#59743

  • flexvolumeをサポートしました。#56921

  • kubelet, kube-proxyがWindows serviceとして起動するようにしました。#60144

  • HyperVを使ったPodの隔離をサポートしました。#58751



    • :pencil: featuregateでHyperVContainerが有効化されていてwindows.kubernetes.io/isolation-type=hypervというアノテーションをつけているとHyperVを使った隔離対象となる。また、1つのコンテナを含むPodのみをサポート対象としている。




OpenStack

新しいAPIを使うようにしました。

コミュニティコードを1つのリポジトリに統合し、クラウドプロバイダのコードをそれぞれのリポジトリに移す計画をたて、プロバイダコードのテストを改善しました。


API-machinery

API Aggregationがstableになりました。

WebHookにも下記を含む多くの改良を行いました。


:pencil: self-hosting authorizer webhook

AuthorizerWebhook先に記載するserverにKubernetesのServiceリソースに紐づくDNS名を使うことができなかった問題を解決するものです。

この名前解決をDNSに任せずにAPIServerが自分で解決するようにします。


Auth

このリリースでは、新しい認証方式の下地を用意しました。

External client-go credential providers(:pencil: AuthProvidersで独自の認証をサポートするためのout of treeのプラグイン機構)

TokenRequest API(:pencil: 期限付きのTokenや、用途を埋め込んだToken、Kubernetesのリソースに紐づいたTokenを作成できるようにするもの。より安全なServiceAccountのTokenのようなもの)

:pencil: PSP、limit node accessについて 改めて触れる文言があるが、今回のアップデートでapigroupが変わっただけで内容に関する変更は内容に見える。


Azure

cluster-autoscaler

Azure Virtual Machine Scale Sets

などをリリースしました。


CLI

kubectl get and describe should work well with extensions (クライアントで実施していたgetやdescribeの整形処理をサーバ側で実装する)

などをリリースしました。


Cluster Lifecycle

Support out-of-process and out-of-tree cloud providers (:pencil: out-of-treeのcloud providerプラグインのサポート)のbeta版などをリリースしました。


Network

下記のベータサポートをリリースしました。