Kubernetes 1.13: 主な変更点 (Major Themes)

## はじめに
このエントリは、[Kubernetes 1.13 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md) からKubernetes 1.13: 主な変更点 (Major Themes) についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。

- [Kubernetes 1.13: Urgent Upgrade Notes](https://qiita.com/yuanying/items/8ae975137b01ea77b089)
- [Kubernetes 1.13: 既知の問題 (Known Issues) と 廃止予定の機能 (Deprecations)](https://qiita.com/yuanying/items/1dcac3ef3085700dd99b)
- Kubernetes 1.13: 主な変更点 (Major Themes)
- [Kubernetes 1.13: 新機能 (New features)](https://qiita.com/shmurata/items/a7d5652ed929675b6e28)

## SIG API Machinery

1.13 のリリースでは、[dry-run](https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/0015-dry-run.md) 機能がベータになったことを発表しました。

## SIG Auth

このリリースではいくつかの重要な機能拡張を加えました。認可カテゴリではノード自身のラベルの更新のみホワイトリストに加えることによって、Node オブジェクトの削除権限を不許可にできるようになり、kubelet の特権を更に減らしました。認証カテゴリでは Projected volume を通して自動的にマウントする機能が Alpha レベルで追加されました。また、TokenReview に新たなトークンのスコープの改善のため audience 検証が有効になりました。audit ログでは、audit イベントのストリームをつけつけるための Webhook を動的に登録するために dynamic audit configuration が新たに alpha レベルで追加されました。最後にシークレットの暗号化機能は実験から卒業し、強化されました。

## SIG AWS

v1.13では、Kubernetes APIオブジェクトとAWSサービスとの緊密な統合に取り組みました。 これらには、3つのアウトオブツリーアルファ機能リリースが含まれています。

:memo: アウトオブツリーというのは以前は Kubernetes のリポジトリで管理されていたものをインツリーと呼んでいるようで、そのインツリーで管理していないものを指しています

1. AWS ALB（Application Load Balancer）と Kubernetes Ingress リソースの統合
1. CSI 0.3 に準拠した AWS EBS（Elastic Block Store）への統合
1. cloudprovider-awsクラウドコントローラマネージャバイナリのアルファ。 さらに、kubetest のデプロイのインターフェースである aws-k8s-tester を test-infra リポジトリに追加しました。 このプラグインにより、Prowを上記の3つのサブプロジェクトに統合して、3つの機能すべてにCIのシグナルを提供します。 CIのシグナルはSIG-AWSの下に表示されます。

SIG AWSの3つのアルファ機能に関するリリースノートの詳細については、以下の変更履歴を参照してください。

[aws-alb-ingress-controller v1.0.0](https://github.com/kubernetes-sigs/aws-alb-ingress-controller/releases/tag/v1.0.0)
[aws-ebs-csi-driver v0.1](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/CHANGELOG-0.1.md)
[cloudprovider-aws external v0.1.0](https://github.com/kubernetes/cloud-provider-aws/blob/master/changelogs/CHANGELOG-0.1.md)

## SIG Azure

1.13 では、Azure は、Ultra SSD、Standard SSD、Premium Azure ファイル用の Azure Disk の追加サポートに重点を置いていました。 Azure の Availability ゾーンと cross resource group node も 1.13 で Alpha から Beta に移行しました。

## SIG Big Data

1.13 のリリースサイクルで、SIG Big Data は Kubernetes とのサードパーティのプロジェクト統合に関するコミュニティの取り組みに注力しています。 1.13 のリリースでは影響のある変更は含まれていません。

## SIG CLI

https://qiita.com/superbrothers/items/39c4449b5da084b02e5d#sig-cli-%E3%81%AE%E4%B8%BB%E3%81%AA%E5%8F%96%E3%82%8A%E7%B5%84%E3%81%BF を参照してください。

## SIG Cloud Provider

v1.13では、SIG Cloud Provider はクラウドプロバイダが利用する共通のAPIとインターフェースの安定化に注力しました。これには、変更を加える必要があるものや廃止されたクラウドプロバイダのAPIの監査を含みます。さらに、SIG Cloud Provider は、ノードやロードバランサのようなリソースを扱う共通のクラウドプロバイダの機能をテストするために使用できる cloud provider e2e test suite といった試験的な試みを開始しました。

我々は k8s.io/kubernetes に存在するすべてのクラウドプロバイダをそれらの独自リポジトリに展開させるためにこの試みを続けています。この移行に伴い、kube-controller-manager の代わりにクラウドプロバイダ機能を cloud-controller-manager に使用するようにユーザーを徐々に移行しています。

## SIG Cluster Lifecycle

1.13 では、SIG Cluster Lifecycle は、待望の kubeadm の安定版 GA への昇格が行われ、  kubeadm の configuration API が v1beta1 に昇格しました。 今回のリリースでは、SIG はクラスター作成のユーザーエクスペリエンスをさらに向上させることに重点を置いており、多数のバグやその他のさまざまな改善を修正しました。

kubeadm の Kubernetes 1.12 からの主な変更点:

- kubeadm の congifuration API が v1beta1 になりました。この新しい configurration の形式ではいくつかの改善が行われています(イメージリポジトリの管理、アドオンの設定、その他のエリア）。v1alpha3 を利用しているユーザはこの configuration API を使った設定に移行することを推奨します。v1alpha3 は 1.14 で削除される予定です。v1beta1 のドキュメントは[こちら](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1)です。
- `kubeadm alpha phase` のコマンドを `kubeadm init phase` に段階的に移行します。これは マスターノード(control-plane node)の作成のフェーズに init コマンドの一部が統合されることを意味します。 GAの準備がまだ整っていないアルファ機能は、まだ kubeadm alpha の下に置かれています。
- 公式 Kubernetes リポジトリに接続できない環境での利用のために `kubeadm init` と `kubeadm init phase` に `--image-repository` フラグを追加しました
- DynamicKubeletConfig と SelfHosting の機能は `kubeadm init` から `kubeadm alpha` に移動されました
- `kubeadm init phase certs` にカスタム CA を指定するための `--csr-only` オプションが追加されました
- `kubeadm join --experimental-control-plane` local etcd モード用の 新しい etcd member の追加を自動化し、HAクラスタセットアップに必要なタスクをさらに簡素化しました
- etcd に関する kubeadm のリセットが改善され、ユーザーに iptables の状態について通知されました。
- `kubeadm` コマンドで YAML のファイルを入力として与えたときに未定義や重複のフィールドが合った場合警告を表示するようになりました
- kubeadm は Docker 18.09.0 以上のバージョンで動作すると思われますが、まだデフォルトのサポートバージョンは 18.06 としています。
- kubeadm は kubelet を起動するときに自動的に `--pod-infra-container-image` フラグを設定するようになりました

## SIG IBM Cloud

SIG IBM Cloud は、Kubernetes 1.14のリリース・サイクルの終わりまでにこの作業を完了することを目標として、クラウド・プロバイダーのコードを外部リポジトリーに移行することに重点を置いていました。 SIG ミーティングでは、IBM Cloud の最新の Kubernetes 開発に関する最新情報を、IBM Cloud Kubernetes Service（IKS） の Kubernetes v1.12.2 の可用性のように確実に共有しました。 SIG のアップデートは、Kubernetes community weekly と KubeCon China 2018 で提供されました。

## SIG Multicluster

Federation の v2 を Alpha から Beta に移行することは、過去四半期にわたる私たちの努力の焦点でした。 この目的のために、私たちはエンドユーザーと協力し、IBM、Amadeus、Ciscoなどの企業からの追加のコントリビュータを募集しました。 Federation v2は、マルチクラスタコントロールプレーンを構築するために、分離されたAPIのセットと再使用可能なコンポーネントを提供します。 2018年後半には Beta 版のリリースを開始する予定です。さらに、クラスタレジストリおよびマルチクラスタ Ingress サブプロジェクトのマイナーアップデートが行われました。

## SIG Network

1.13 では、IPv6、DNS の改良、いくつかの小項目に焦点を当てていました。CoreDNS は scale/resource usage test をすべてパスし、デフォルトのクラスタ DNS になりました。また、ノードローカル DNS キャッシュ機能は Alpha として追加されました。 この機能は、conntrack　を回避し、UDP からのクエリをより信頼性の高い TCP に変換する軽量 DNS キャッシングDaemonset を展開します。 PodReady++の機能に kubectl CLI のサポートが追加されました。

IPv6 デュアルスタックサポート KEP の完成とサービスのトポロジカルルーティングのサポートに向けて進展がありました。

## SIG Node

SIG Node は、1.13 では安定性とパフォーマンスの向上に重点を置いていました。 ノードがハートビートを制御プレーンに戻すメカニズムを改善するために、新しいアルファ機能が導入されています。 NodeLease 機能により、定期的に更新される kube-node-lease 名前空間内の Lease リソースが使用されます。以前にコントロールプレーンにハートビートバックするために使用された NodeStatus は、変更されたときにのみ更新されます。 これにより、大規模クラスタのコントロールプレーンへの負荷が軽減されます。 外部のプラグイン（CSIやデバイスプラグインを含む）の自動発見を可能にする Kubelet プラグイン登録メカニズムは、このリリースでは Stable に昇格しています（1.11でアルファとして導入され、1.12でベータに昇格）。

## SIG Openstack

SIG OpenStack の主なテーマは、in-tree のプロバイダを削除するための作業をすることでした。 この作業は、SIG Cloud Provider と連携して行われ、OpenStack （および他のプロバイダ）が依存する内部 API を、API の安定性を保証するためにステージングにすることにフォーカスしています。 この作業には、in-tree の Cinder API を抽象化し、追加の Cinder ボリュームプロバイダコードを削除するために external Cinder provider をリファクタリングすることも含まれていました。

SIG Cluster Lifecycle によって Cluster API のための OpenStack ドライバの実装も行われました。 外部の Cloud-Provider-OpenStack コードのために SIG は主に K8s 1.13 の開発に対応するためのバグ修正と更新に重点を置いていました。

## SIG Scalability

SIG Scalability は、テストの安定性に注力しました。2018年末までにすべてのテスト移行することを目標にスケーラビリティテストを作成するためのフレームワーク（ClusterLoader v2）に投資し、よりよいユーザフレンドリーな SLI/SLO を提供することによって Kubernetes スケーラビリティの定義を拡張する作業を行いました。

## SIG Scheduling

SIG Scheduling は主に 1.13 の安定性に重点を置いており、次のバージョンの主要機能のいくつかを延期しました。それでもなお2つの顕著な変更があります：

1. TaintBasedEviction は Beta に移動され、デフォルトで有効になります。 この機能を有効にすると、条件 Taint が自動的にノードに追加され、必要に応じて Pod に tolerations が追加されます。
2. Pod の critical annotation は推奨されていません。 Pod は、 annotation の代わりに PodPriority を使用する必要があります。

1.13 では kube-scheduler の設定ファイルの apiversion は `componentconfig/v1alpha1` の代わりに `kubescheduler.config.k8s.io/v1alpha1` になりました。

## SIG Service Catalog

サービスプランのデフォルト機能はまだアクティブな開発中です。 新しい名前空間サービスブローカ機能のギャップを埋めるために、svcat CLIのUXを引き続き改善しています。

## SIG Storage

https://qiita.com/ysakashita/items/f759d7c375fe71c8772a を参照してください。

## SIG UI

Angular の最新バージョンへの移行は、現時点ではロードマップ上で最も重要なことであり、まだ積極的な開発中です。私たちは新しいリリースに近づいています。私たちはバグの修正やその他の改善を続けています。

## SIG VMWare

このリリースの SIG VMware の主な焦点は、vSphere プロバイダが依存している内部 API をステージングに移行して API の安定性を保証する作業です。この作業は SIG Cloud Provider と連携して行われており、in-tree にある現在のボリューム機能を置き換えるための新しい vsphere-csi プラグインの作成も含まれています。

SIG Cluster Lifecycle によって進められている Cluster API への対応のため vSphere プロバイダを実装するための追加作業も行われました。 out-tree の vSphere クラウドプロバイダのために、SIG は主に、1.13 の開発に対応するためのバグ修正と更新に注力しました。

## SIG Windows

SIG Windows は Windows と Kubernetes のサポートの信頼性向上に注力しました。