Cloud Native Computing Foundation(CNCF)は,コンテナオーケストレーションおよびスケジューリングシステムKubernetesのバージョン1.5をリリースした。今回のリリースでは,ステートフルなアプリケーションのデプロイとスケーリングに関するベータ版機能を中心とした改良が行なわれており,アプリケーションを中断することのないクラスタ操作の実施が可能になる。さらにプラグイン可能なコンテナランタイム,Windows Server 2016ノード,Windows Server Containersのスケジュールといった機能が,アルファ版として追加されている。コンフィギュレーションに関わる潜在的なセキュリティ問題のため,すべてのユーザに対して,v1.5.0をスキップしてより安全なデフォルトセットを備えたv1.5.1に移行するように推奨している。
Kubernetesの最初のv1.5リリースでは,‘アルファ’および‘ベータ’と記された機能の提供に重点が置かれていた。
- StatefulSets(以前は“PetSets”という名称だった)機能がベータに昇格し,Kubernetesが生成管理する永続化ID(persistent identity)あるいはインスタンス毎のストレージを必要とするワークロードがさらに容易になった。
- PodDisruptionBudgetも同じくベータになった。アプリケーションのサービスレベル目標値(SLO)に配慮しながら,ノードを安全に廃棄することができる。
- フェデレーションのサポートが改良され,‘kubefed’のアルファリリースなど新機能が追加された。
- ‘kubeadm’コマンドがさらに改善され,クラスタのデプロイが簡略化された。
- 高可用性{HA}マスタセットアップ実行のアルファサポート。
- この機能は,‘kube-up’および‘kube-down’スクリプトによってKubernetesマスタを複製するもので,現時点ではGoogle Compute Engine(GCE)でのみ使用できる。
- Windows Server 2016ノードと,Windows ServerコンテナおよびHyper-Vコンテナのスケジューリングのアルファサポート。
- プラグイン可能なコンテナランタイムを可能にするContainer Runtime Initiative (CRI)APIをアルファ版として提供。
- テストおよびフィードバックを目的とするDocker-CRIインテグレーションの試験的導入。
- Kubernetes Container Runtime InterfaceのOCIベース実装であるcri-o。runcも使用可能だが,現時点では‘プレ・アルファ’とされている。
- この機能を試したい開発者のために,GoogleのスタッフアドボケートでKubernetesコミュニティの有名人物であるKelsey Hightower氏が,オープンソースの“cri-o Tutorial”プロジェクトをGitHub上でリリースしている。
- Kubelet APIに対する認証/認可アクセスが可能。
- ダッシュボードUIにユーザの使用する全オブジェクトと,リソースの使用状況が表示されるようになった。
12月12日にKubernetesのv1.5.0が最初にリリースされて以降,Kubernetes-announce Google Groupでの議論では,個別の機能としては問題ないものの,同時に使用するとクラスタの安全性を損なう可能性のある,コンフィギュレーションオプションの変更に伴う潜在的セキュリティ問題が取り沙汰された。Kubernetes v1.5.1はその翌日,これらの問題に対処するためにリリースされたものだ。すべてのユーザがv1.5.0をスキップして,デフォルトでより安全なv1.5.1を使用するように推奨されている。本記事のこれ以降では,最初のv1.5.0リリースで追加された新機能を取り上げる。
StatefulSetベータ版(以前は‘PetSet’であった)により,Kubernetesが生成,スケール,削除,修復する永続化IDあるいはインスタンス毎のストレージを必要とするワークロードが可能になる。重要な安全性強化のいくつかは,この機能を使って実現されている。同じIDを持ったポッドが2つ存在しないことを保証するため,Kubernetesノードコントローラは,応答のないノードに対してポッドの‘強制的削除’は行なわず,次の3つの条件のうちの1つを待機する - 1) kubeletが古いポッドの終了を確認する,2) クラスタ管理者が対応するノードを削除する,あるいは 3) 管理者がコマンドラインインターフェースから‘force delete’を使ってポッドを削除する。オペレータがPetSetsからStatefulSetsへの移行をできるように,アップグレードガイドが用意されている。
PodDisruptionBudgetのベータ版は,任意の時点で利用可能でなければならないポッドのコレクションのレプリカを,最小限数ないし最小パーセンテージで指定するAPIオブジェクトである。Kubernetesのリリースノートによると,PodDistributionBudgetが,明示的にポッドを停止するクラスタ操作によるデータ損失やサービス停止,あるいは“容認できないサービス低下”の発生を確実に防ぐことにより,組織のサービスレベル目標値(SLO)達成の保証が可能になる。
kubefedのアルファ版は,連合型(federated)クラスタの管理をアシストし,フェデレーションコントロールプレーンの新規デプロイや,既存のフェデレーションへのクラスタの追加ないし削除を容易にする,新しいコマンドラインツールである。クラスタのフェデレーションに関する新機能としては,ConfigMaps,DaemonSets,およびフェデレーションAPIへのデプロイのためのAPI機能がアルファ版として追加されており,複数のクラスタを対象としたこれらオブジェクトの生成,更新,削除が,単一のエンドポイントから可能になっている。
Windowsサーバコンテナのアルファ版では,Windows Server 2016ノードと,Windows Server ContainerおよびHyper-Vコンテナのスケジューリングに関する初期サポートが提供される。この機能の実装はApprendaを中心に,Google,Red Hat,Micrsoftの多大な協力によって実現した,マルチベンダの努力の成果だ。バージョン1.5ではkubeletとkubeproxyがWindows Server上で動作可能になったが,Kubernetesコントロールプレーン(API Server, Scheduler,Controller Managerなど)は引き続きLinux上で運用される。ネットワークにはL3ルーティングが使用されるが,Kubernetesの資料によると,サードパーティ製のプラグイン(flannelやcalicoなど)については,現時点ではWindows Server上でネイティブには動作しないため,コアなネットワーク機能の提供は,WindowsおよびLinuxオペレーティングシステム上に構築された既存のテクノロジに依存することになる。
Kubernetes 1.5はGitHubおよびget.k8s.ioから入手可能だ。今回のリリースに関する詳細情報はKubernetesのブログに掲載されている。
この記事を評価
- 編集者評
- 編集長アクション