Kubernetes 1.11: クラスタ内部負荷分散と CoreDNS プラグインが一般利用可能な段階に（参考訳）


[Kubernetes Blog "Kubernetes 1.11: In-Cluster Load Balancing and CoreDNS Plugin Graduate to General Availability"](https://kubernetes.io/blog/2018/06/27/kubernetes-1.11-release-announcement/)（2018年6月27日の投稿）に対する日本語での参考訳です。皆さまの理解の手助けとなるようにと公開しました。中盤の技術的な説明までの範囲で、最後は省略市営増す。参考程度にどうぞ。

## Kubernetes 1.11: クラスタ内部負荷分散と CoreDNS プラグインが一般利用可能な段階に

2018 年で２回目のリリースにあたる  kubernetes 1.11 のお届けに関する発表を嬉しく思います！

今日のリリースは Kubernetes の成熟度、拡張性（scalability：スケーラビリティ）、柔軟性（flexiblity：フレキシビリティ）を改善すべく、チームが１年以上にわたって厳しい仕事に取り組み続けたものであり、機能に対する著しい向上をもたらしました。新しいバージョンでは、主要な機能が次の段階へと移ります。ネットワーク機能（networking）に関しては  SIG-API 機構（Machinery：マシーナリー）および SIG-Nodeベータ・テストという２つの主要機能、そしてストレージ機能の継続した拡張です。これらは過去２回のリリースで注力し続けている箇所です。今回のリリースで導入された諸機能により、クラウドでもオンプレミス（物理環境）でも、あらゆる基盤（インフラストラクチャ）に Kubernetes システムを組み込めるようになる可能性が、ますます高まります。

今回のリリースで特筆すべき事項には、非常に期待されていた２つの機能が一般利用可能（general availability）なレベルに進んだことが挙げられます。それは IPVS をベースとしたクラスタ内部負荷分散（IPVS-based In-Cluster Load Balancing）と、クラスタ DNS アドオン・オプションとしての CoreDNS です。どちらも本番向けアプリケーションに対する拡張性と柔軟性を高めるのを意味します。

それでは、今回のリリースにおける重要な機能を深掘りしましょう。

### IPVS をベースとしたクラスタ内部負荷分散が一般利用可能な段階に

今回のリリースでは、 [IPVSをベースとしたクラスタ内部負荷分散](https://github.com/kubernetes/features/issues/265) が安定版（stable）となりました。IPVS（IP 仮想サーバ：IP Virtual Server）は高性能なカーネル内蔵の負荷分散を提供し、iptables よりもシンプルなプログラミング・インターフェースを提供します。この変更が Kubernetes のサービス・モデルの構成にもたらすのは、よりネットワーク処理能力（スループット）を改善し、プログラミング待ち時間（レイテンシ）を改善し、クラスタ全体にわたる分散負荷分散（ロード・バランサー）向けに拡張性の限界を高めます。IPVS はまだデフォルトではありませんが、クラスタは本番向けのトラフィックも扱い始められます。

### CoreDNS が一般利用可能(General Availability)に昇格

[CoreDNS](https://coredns.io/) が[クラスタ DNS アドオン・オプション](https://github.com/kubernetes/features/issues/427)として利用可能になりました。また、kubeadm の利用時はこちらがデフォルトになります。CoreDNS は柔軟性があり、拡張性のある信頼できる（権威がある） DNS サーバであり、Kubernetes API と直接統合されています。CoreDNS は従来の DNS サーバよりお少ないパーツで稼働するため、実行ファイルは１つであり、１つのプロセスであり、カスタム DNS エントリの作成など柔軟な利用に対応しています。また、Go 言語で書かれているため、メモリ・セーフです（訳者注：memory-safeは、メモリ上の攻撃や脆弱性に対して守られた状態のこと）。CoreDNS の詳細は [こちら](https://youtu.be/dz9S7R8r5gw) から学べます。

### 動的な Kubelet 設定（Dynamic Kubelet Configuratoin）がベータに移行

これは Kubelet の設定を、稼働しているクラスタ内への展開（ロールアウト：roll out）を可能にする機能です。Kubelet はコマンドラインのフラグを通して設定されるものです。しかし、稼働しているクラスタ内で Kubelet の設定を更新するのは大変でした。近いうちに、複数の自動転換（automatic conversions）をサポートするように拡張するつもりです。これはカスタム・リソースの作成者が「v1beta1 から v1 へ安全に変更する」ようなプロモートを可能とする機能です。そして、リソースに対して変更を加えるために、移行用のパスを作成します。

カスタム・リソース定義（Custom Resource Definition）は、監視と高可用性フレームワークと統合した ["status"と"scale"サブリソース](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/customresources-subresources.md) もサポートしました。この２つの変更は、カスタム・リソース定義を用いて、クラウド・ネイティブ・アプリケーションを本番環境でも実行可能な状態へと促すものです。

### CSI の拡張

コンテナ・ストレージ・インターフェース（CSI：Container Storage Interface）は直近の数リリースにわたり主要なトピックです。 [1.10 でベータに](https://github.com/container-storage-interface/spec/blob/master/spec.md) 移行後も、1.11 リリースで数々の機能と共に CSI の拡張が続いています。1.11 リリースでは CSI に対する raw ブロック・ボリュームのアルファ・サポートを追加しました。これは CSI と統合し、新しい kuberlet プラグイン登録メカニズムによって、CSI プラグインに対してシークレット（機密情報）を渡すのが簡単になりました。

### 新しいストレージ機能

[Persistent Volume のオンライン容量変更（online resizing：オンライン・リサイジング）](https://github.com/kubernetes/features/issues/284) のサポートがアルファ機能として導入されました。これによりユーザは PV の容量変更を、Pod の停止やボリュームを真っ先にアンマウントしなくても行えるようにします。ユーザは PVC に対する新しい容量のリクエストを更新でき、kubelet は PVC 用のファイルシステム容量を変更します。

[動的な最大ボリューム・マウント(dynamic maximum volume count)](https://github.com/kubernetes/features/issues/554) のサポートがアルファ機能として導入されました。この新機能は in-tree ボリューム・プラグインでボリューム最大数の指定を可能にします。これにより、ノードに適用できるだけでなく、ノードの種類に応じて様々な制限を設けられるようにします。以前まで、これらの制限はハード・コードするか環境変数を経由して設定しました。

StorageObjectInUseProtection 機能は安定版（stable）となり、 [永続的ボリューム（Persistent Volume）](https://github.com/kubernetes/features/issues/499) の Persistent Volume Claim と [Persistent Volume Claims](https://github.com/kubernetes/features/issues/498) が Pod で使われていれば、どちらも削除を防止します。この安全装置（セーフガード）は実行中の  Pod と密接に結びつく PV や PVC の削除を防ぐのに役立ちます。

コミュニティの各分科会（SIG）では、それぞれの専門領域において、最もリクエストのあった拡張、修正、機能性への対応を継続しています。SIG によって導入されたすべての一覧は [リリースノート](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#111-release-notes) をご覧ください。

### 入手するには

Kubernetes 1.11 は [GitHub 上でダウンロード](https://github.com/kubernetes/kubernetes/releases/tag/v1.11.0) できます。Kubernetes を始めるには [双方向チュートリアル](https://kubernetes.io/docs/tutorials/) をご確認ください。

また、Kubeadm を使って 1.11 をインストールできます。Deb と RPM パッケージがバージョン 1.11.0 で間もなく利用可能になりますし、 [Kubeadm cluster installer] を使ったインストールも7月28日までに利用可能となります。

### 4日にわたる機能ブログ・シリーズ

もしもこれら機能の詳細な調査に興味があれば、２週間後に 4 Days of Kubernetes シリーズを再確認してください。ここでは各機能のハイライト（目玉）を見渡すための詳細を扱います：

* [Day 1: IPVS をベースとするクラスタ内の負荷分散が一般利用可能に昇格](https://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/)
* [Day 2: CoreDNS が一般利用可能に昇格](https://kubernetes.io/blog/2018/07/10/coredns-ga-for-kubernetes-cluster-dns/)
* [Day 3: 動的な Kubelet 設定がベータに移行](https://kubernetes.io/blog/2018/07/11/dynamic-kubelet-configuration/)
* [Day 4: Kubernetes が使う一貫性ボリュームの容量変更](https://kubernetes.io/blog/2018/07/11/resizing-persistent-volumes-using-kubernetes/)

### リリース・チーム

今回のリリースに至ったのは、技術的および技術的な文脈の両方における、一千人もの個人の努力によってなし得ました。特に Red Hat の Kubernetes コミュニティ・マネージャである Josh Berkus 率いる [リリース・チーム](https://github.com/kubernetes/sig-release/blob/master/releases/release-1.11/release_team.md) に深く感謝します。リリースチームの 20 人は、ドキュメント化からテスト、確認、機能の完全性チェックに至るまで、リリースに関する様々な面で調整を行いました。

Kubernetes コミュニティは成長しています。私たちのリリース過程は、オープンソースのソフトウェア開発における、驚くべき共同作業を証明するものです。Kubernetes は新しいユーザを急速に取り込み続けています。この成長がもたらすのは、貢献者によるコードへのコミットが、より活力を生むエコシステムになるという、ポジティブなフィードバック・サイクルです。Kubernetes は今日まで 20,000 を越える個人の貢献者がいますし、アクティブなコミュニティの人々は 40,000 人を超えます。

### プロジェクトの勢い

CNCF は DevStats という意欲的なプロジェクトの洗練を継続しています。これをプロジェクトに導入し、無数の貢献を可視化するものです。 [K8s DevStats](https://devstats.k8s.io/) が図示するのは、主要な会社による貢献を深掘りします。
(以下省略）

## 原文

- Kubernetes 1.11: In-Cluster Load Balancing and CoreDNS Plugin Graduate to General Availability - Kubernetes
  - https://kubernetes.io/blog/2018/06/27/kubernetes-1.11-release-announcement/