はじめに
このエントリは、Kubernetes 1.10 の CHANGELOG から主な変更点 (Major Themes)についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。
- Kubernetes 1.10: 主な変更点 (Major Themes)
- Kubernetes 1.10: Before Upgrading
- Kubernetes 1.10: 既知の問題 (Known Issues) と廃止予定の機能 (Deprecations)
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が削除されないようになりました。
- Prevent deletion of Persistent Volume Claims that are used by a pod
- Prevent deletion of Persistent Volume that is bound to a Persistent Volume Claim
local persistent volumes のための[Topology Aware Volume Scheduling] (https://github.com/kubernetes/features/issues/490) (スケジューラがVolumeの制約を考慮するようになる機能)、
stableとしてDetailed storage metrics of internal state(ストレージの詳細なmetricsを取得できるようにする機能)、
betaとしてOut-of-tree CSI Volume Plugins(kubeletのプラグインとしてボリュームプラグインを利用できるようにする機能)
がリリースされました。
rslave, rshared
ホスト側でマウントしたボリュームをコンテナから使っている状況で、ホスト側でunmount/mountした時にコンテナの再起動をしたくない。
glusterfsのようなfuseを使ったアプリケーションでマウントしたボリュームを別のコンテナから参照する。
などの要求に応えるもののようです。
Windows
下記機能を追加しました。
- CPUの制限を設定するようにした。( #59333)
- ファイルシステムのstatsが正しく取れていなかったバグを修正した。#59743
- flexvolumeをサポートしました。#56921
- kubelet, kube-proxyがWindows serviceとして起動するようにしました。#60144
- HyperVを使ったPodの隔離をサポートしました。#58751
-
featuregateでHyperVContainerが有効化されていて
windows.kubernetes.io/isolation-type=hyperv
というアノテーションをつけているとHyperVを使った隔離対象となる。また、1つのコンテナを含むPodのみをサポート対象としている。
-
featuregateでHyperVContainerが有効化されていて
OpenStack
新しいAPIを使うようにしました。
コミュニティコードを1つのリポジトリに統合し、クラウドプロバイダのコードをそれぞれのリポジトリに移す計画をたて、プロバイダコードのテストを改善しました。
API-machinery
API Aggregationがstableになりました。
WebHookにも下記を含む多くの改良を行いました。
- self-hosting authorizer webhookをalphaサポートしました。
self-hosting authorizer webhook
AuthorizerWebhook先に記載するserverにKubernetesのServiceリソースに紐づくDNS名を使うことができなかった問題を解決するものです。
この名前解決をDNSに任せずにAPIServerが自分で解決するようにします。
Auth
このリリースでは、新しい認証方式の下地を用意しました。
External client-go credential providers( AuthProvidersで独自の認証をサポートするためのout of treeのプラグイン機構)
TokenRequest API( 期限付きのTokenや、用途を埋め込んだToken、Kubernetesのリソースに紐づいたTokenを作成できるようにするもの。より安全なServiceAccountのTokenのようなもの)
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 ( out-of-treeのcloud providerプラグインのサポート)のbeta版などをリリースしました。
Network
下記のベータサポートをリリースしました。
- configurable pod resolv.conf(resolv.confの内容をmanifestで設定できる機能)のベータ版
- configuring the NodePort IP address (nodePortで受け付けるIP元を指定できるようにする機能)
- Switch default DNS plugin to CoreDNS (デフォルトのDNSをCoreDNSにする)