Kubernetesのv1.2のmilestone にあるissue/PRと release-1.1とrelease-1.2のブランチのdiffからKubernetes 1.2に入るであろう主な変更点をまとめてみました。Kelsey HightowerさんのKubeCon2016 EUでの1.2のリリースに関するtweetによると、リリースは3月末を予定しているようです。
他の参考情報
- kubernetes-dev ML Kubernetes 1.2 Timelineスレッド
- Kubernetes GitHub Wiki Release-1.2
- GCP Podcast #16 Kubernetes 1.2 with Kelsey Hightower
変更点
全体的なもの
-
ConfigMapが実装された
- 複数の設定をまとめたオブジェクトで、volumeや環境変数としてPodに渡すことができるもの
- 公式ドキュメント Using ConfigMap
- Secretに似ているが動的にアップデートがPodに反映できるようになる?(Volumeとして使った場合)
- Designドキュメント Generic Configuration Object
- Aggregator for ConfigMap resource implementation #18455
-
JobがStableに昇格
- Jobはバッチ処理のような終わりのある処理を行うためのリソース
- 公式ドキュメント Jobs
- Job: requirements for graduation to stable #15985
-
Copy Jobs to batch/v1 group #21434
- batch/v1のグループに移動
-
Deploymentがデフォルトで有効になった(Betaに昇格)
- DeploymentはReplicationController、Podの宣言的なアップデートを可能にする機能
-
kubectl rolling-update
はクライアント側でアップデートするが、Deploymentはサーバサイドで処理され、より宣言的に書ける
-
- 公式ドキュメント Deployments
- Enable deployments by default #20517
- Deployment: requirements for graduation to "beta" #15313
- DeploymentはReplicationController、Podの宣言的なアップデートを可能にする機能
-
DaemonSetがデフォルトで有効になった(Betaに昇格)
- DaemonSetはすべてのNodeで特定のPodを動かしたい時に使える機能
- 例えばNodeごとの監視デーモンやクラスタストレージのデーモンなど
- 公式ドキュメント Daemon Sets
- Graduate DaemonSet API to v1beta1, enable it by default. #21130
- DaemonSetはすべてのNodeで特定のPodを動かしたい時に使える機能
-
Inert Deploymentが実装された
- Deploymentはconfigの変更をトリガーするすることができるが、それを一時的に停止する機能
- RFC: Inert deployments #14516
-
ReplicaSetが追加された
- 名前がわかりづらいと言われている"Replication Controller"のrename準備?
- Create ReplicaSet #3024
- Introducing ReplicaSet, a new incarnation of Replication Controller. #19042
- IngressのBasic TLSサポート
- GCEのUbernetes Liteをサポート
- Ubernetesは複数のプロバイダ、複数リージョンのクラスタを連携させる機能として提案されている
- Ubernetes Liteは同一プロバイダの複数のAvailability Zoneだけをサポートする軽量版
- 詳細はProposalのKubernetes Multi-AZ Clustersを参照
- Ubernetes Lite support for GCE #17919
-
Schedulerのパフォーマンス改善
- CoreOSがblogで紹介していたスケジューラ改善がいくつか取り込まれている模様
- CoreOS Blog: Improving Kubernetes Scheduler Performance
- scheduler: using inefficient math library causes significant slowdown #18126
- scheduler: inefficient cache operation slows down scheduler #18255
- CoreOSがblogで紹介していたスケジューラ改善がいくつか取り込まれている模様
-
SchedulerにNode Affinityという機能が追加(alpha)
- NodeSelectorに代わる、Podが動作するNodeを選択する機能(affinity=相性)
- 最終的にはNodeSelectorはdeprecatedにするとのこと
- デフォルトで以下のNodeラベルを用意しているのも気が利いている
kubernetes.io/hostname
failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region
beta.kubernetes.io/instance-type
- Designドキュメント Node affinity and NodeSelector
- Update user guide and scheduler documentation to describe node affinity #21235
- Pod Affinityという機能も提案されている
- PodのAnti-affinityを使えばPodをAvailability ZoneやNodeで分散させることができるようになる模様
- Designドキュメント Inter-pod topological affinity and anti-affinity
- PodのAnti-affinityを使えばPodをAvailability ZoneやNodeで分散させることができるようになる模様
- NodeSelectorに代わる、Podが動作するNodeを選択する機能(affinity=相性)
- 1000ノード対応?
-
Probeのliveness/readinessにいくつかのパラメータが追加された
-
Add liveness/readiness probe parameters #15967
-
PeriodSeconds
probeの間隔 -
SuccessThreshold
failureからsuccessになるまでの閾値 -
FailureThreshold
failureになるまでの閾値
-
-
Add liveness/readiness probe parameters #15967
- Node Metrics APIのsummaryが実装
-
Scheduler Extenderの追加
- WebAPIでSchedulerを拡張できる機能
- PodとNodeのリストが引数で渡されるイメージ
- Scheduler extension #13580
- Designドキュメント Scheduler extender
- WebAPIでSchedulerを拡張できる機能
-
Horizontal Pod Autoscaler(HPA)がGenerally Availableに?
-
HorizontalPodAutoscaler API: requirements for graduation to GA #18528
- HPA in GA step 2 #21577 1.3でextenions/v1beta1から正式にv1になり
-
HPA in GA step 3 #21578
1.4でextensions/v1beta1を削除の予定
-
HorizontalPodAutoscaler API: requirements for graduation to GA #18528
認証関連(Sig-Auth)
- 認可のモードにWebhookが実装された
- Secretが環境変数にも設定できるようになった
kubectl関連
-
kubectl create
- リソースをyaml/jsonなしにCLIで簡単につくれるようになる
- namespace, secret, configmapに対応
- 特にsecretはbase64で設定ファイルを書く必要があったので楽になりそう
- 例
kubectl create secret generic prod-db-password --from-literal=user=produser --from-literal=password=Y4nys7f11
- 特にsecretはbase64で設定ファイルを書く必要があったので楽になりそう
-
kubectl drain
- Nodeのメンテナンスに向けてunschedulableにし、そのNodeのPodを削除する
- Mark node to be decommissioned and act accordingly #3885
-
kubectl cordon
/kubectl uncordon
- Nodeをunschedulableにする
- Mark node to be decommissioned and act accordingly #3885
-
kubectl explain
- リソースのドキュメントを表示する
-
kubectl explain pods.spec
といった形でリソースの形式の詳細が表示されるので便利そう
-
kubectl convert
- 別バージョンのAPI間でconfigの変換をする
-
kubectl rollout
- DeploymentとDaemonSetの管理をするためのもの
- history, pause, resume, undoのサブコマンドを持つ
- Develop Deployment UX equivalent to kubectl rolling-update #17168
- --recordオプションが各種サブコマンドに追加
- deploymentのannotationsにkubectlで作った際のコマンドが記録されるようになった
-
kubectl rollout history
で見た時にわかりやすくなる
-
- Record kubectl commands (useful when viewing rollout history); copy deployment's annotations to its RC #20035
- deploymentのannotationsにkubectlで作った際のコマンドが記録されるようになった
Kubernetes 1.3?
3/3のKubernetes Community Meetingによると下記がGoogleが1.3でフォーカスするものとのこと
- PetSets
- レガシーアプリケーションのサポート
- Proposal for implementing nominal services AKA PetSets #18016
- Cluster Federation (Ubernetes)
- 大きいので1.3でも全ては実装されなそう
- Identity Managementとの統合
- Cluster Auto Scaling
- クラスタ自体のオートスケール
- Scheduled Jobの改善