KubeWeekly #196

KubeWeeklyは毎週Kubernetesに関する興味深いニュースを提供しています。（https://kubeweekly.io/ ）この記事は 2019/12/06に発行された [Kube Weekly #196](https://kubeweekly.io/2019/12/13/kubeweekly-196/)を読んで、感じたことをメモ的にまとめたものです。
私の勘違いや説明不足による誤解もあるかと思いますので、この記事読んで「おっ」と思ったらURLを辿って本文を確認してください。

(過去のKubeWeekly読書メモは[こちら](https://qiita.com/tags/kubeweekly))

※この記事は、[Z Lab](https://qiita.com/organizations/zlab)の業務の一環として作成したものです。

# The Headlines

## Kubernetes 1.17: Stability
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/12/09/kubernetes-1-17-release-announcement/">Kubernetes 1.17: Stability</a></td>
</tr>
<tr>
  
  <td>Authors: Kubernetes 1.17 Release Team
We’re pleased to announce the delivery of Kubernetes 1.17, our fourth and final release of 2019! Kubernetes v1.17 consists of 22 enhancements: 14 enhancements have graduated to stable, 4 enhancements are moving to beta, and 4 enhancements are entering alpha.
Major Themes Cloud Provider Labels reach General Availability Added as a beta feature way back in v1.2, v1.17 sees the general availability of cloud provider labels.</td>
</tr>
</table>


Kubernetesの1.17がリリースされました。このリリースの目玉は安定性の向上のようです

とくに下記トピックについて紹介しています。

- Cloud Provider LabelsがGA
- Volume SnapshotがGA
- CSI Migration が Beta

## Kubernetes 1.17 Feature: Kubernetes Volume Snapshot Moves to Beta
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/12/09/kubernetes-1-17-feature-cis-volume-snapshot-beta/">Kubernetes 1.17 Feature: Kubernetes Volume Snapshot Moves to Beta</a></td>
</tr>
<tr>
  
  <td>Authors: Xing Yang, VMware & Xiangqian Yu, Google
The Kubernetes Volume Snapshot feature is now beta in Kubernetes v1.17. It was introduced as alpha in Kubernetes v1.12, with a second alpha with breaking changes in Kubernetes v1.13. This post summarizes the changes in the beta release.
What is a Volume Snapshot? Many storage systems (like Google Cloud Persistent Disks, Amazon Elastic Block Storage, and many on-premise storage systems) provide the ability to create a “snapshot” of a persistent volume.</td>
</tr>
</table>

Kuberenetes1.17でベータになった Volume Snapshotについて紹介しています。
使い方について丁寧に解説されています。

まだできない機能としてはSnapshotの時点にボリュームを戻す機能（現在はSnapshotを元に新しいボリュームを作ることしかできない)、スナップショットのVolume間の一貫性の担保というのがあるようです。

## Kubernetes 1.17 Feature: Kubernetes In-Tree to CSI Volume Migration Moves to Beta
<table>
<tr>
  <td colspan="2"><a href="https://kubernetes.io/blog/2019/12/09/kubernetes-1-17-feature-csi-migration-beta/">Kubernetes 1.17 Feature: Kubernetes In-Tree to CSI Volume Migration Moves to Beta</a></td>
</tr>
<tr>
  
  <td>Authors: David Zhu, Software Engineer, Google
The Kubernetes in-tree storage plugin to Container Storage Interface (CSI) migration infrastructure is now beta in Kubernetes v1.17. CSI migration was introduced as alpha in Kubernetes v1.14.
Kubernetes features are generally introduced as alpha and moved to beta (and eventually to stable/GA) over subsequent Kubernetes releases. This process allows Kubernetes developers to get feedback, discover and fix issues, iterate on the designs, and deliver high quality, production grade features.</td>
</tr>
</table>

1.17でBetaとなったIn-Tree to CSI Volume Migration について紹介しています。

この機能はDriverごとにサポート状況が異なるので注意が必要です。現時点ではAWS EBS, GCE PDがBetaとなっています。またこの機能はベータですがデフォルトでは有効になっていないという点にも注意が必要です。

## Kubernetes 1.17, with Guinevere Saenger
<table>
<tr>
  <td colspan="2"><a href="https://kubernetespodcast.com/episode/083-kubernetes-1.17/">Kubernetes 1.17, with Guinevere Saenger</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
</tr>
</table>

Kubernetes Podcast。今回のテーマはKubernetes 1.17でゲストは1.17のリリースマネージャである  Guinevere Saenger です。

# The Technical

## What’s New in Kubernetes 1.17: A Deeper Look at New Features · StackRox: Cloud-Native, Container, and Kubernetes Security
<table>
<tr>
  <td colspan="2"><a href="https://www.stackrox.com/post/2019/12/whats-new-in-kubernetes-1.17-a-deeper-look-at-new-features/">What’s New in Kubernetes 1.17: A Deeper Look at New Features · StackRox: Cloud-Native, Container, and Kubernetes Security</a></td>
</tr>
<tr>
  <td><img src="https://res.cloudinary.com/stackrox/v1575659475/kubernetes-1.17-release-blog-banner_raydbv.png"></td>
  <td>The release of Kubernetes 1.17 introduces several new features and sees others maturing. This recap provides a rundown of the most notable changes</td>
</tr>
</table>

Kubernetes 1.17の新機能について詳しく解説。

- EndpointSlice API (Beta)
- IPv4/IPv6 Dual-Stack Support (Alpha)
  - これは1.16からAlphaだが、少しずつ機能が追加されているらしい
    - IPv6 netmask
    - Pod IP address validation
- PersistentVolume Snapshot Backup/Restore Support in CSI (Beta)
- Topology-Aware Service Routing (Alpha)
- Node Taints by Condition (Stable/GA)
- API Defaulting for Custom Resources (Stable/GA)
- Finalizer Protection for Service Load Balancers (Stable/GA)
- Process Namespace Sharing in Pods (Stable/GA)

## How to Export Kubernetes Events for Observability and Alerting
<table>
<tr>
  <td colspan="2"><a href="https://engineering.opsgenie.com/how-to-export-kubernetes-events-for-observability-and-alerting-a9b4a953363d">How to Export Kubernetes Events for Observability and Alerting</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/1*4qm8fQbuZ3EX0hzn9cJ7HA.jpeg"></td>
  <td>A hidden gem in Kubernetes might be holding a lot of information</td>
</tr>
</table>

KubernetesのEventをうまくフィルタ・ルーティングする[kubernetes-event-exporter](https://github.com/opsgenie/kubernetes-event-exporter)の紹介。

対応しているルーティング先はElasticSearch, Opsgenie, Webhook, Slack, AWS SNS, SQS, Kinesisなどなど。

## Security release of Envoy 1.12.2 is now available

<table>
<tr>
  <td colspan="2"><a href="https://groups.google.com/forum/#!topic/envoy-announce/BjgUTDTKAu8">Security release of Envoy 1.12.2 is now available
</a></td>
</tr>
</table>

Envoyの1.12.2のりリースについて。
これはCriticalを含むいくつかのCVEを修正したものとなっています。

## Week Ending December 8, 2019
<table>
<tr>
  <td colspan="2"><a href="http://lwkd.info/2019/20191209">Week Ending December 8, 2019</a></td>
</tr>
<tr>
  <td><img src="http://lwkd.info//images/logo.png"></td>
  <td>Developer News</td>
</tr>
</table>

2019/12/08週のKubernetesの開発状況

ちょうど1.17がリリースされたタイミングです。
また、すでに開発が進められている1.18に向けてマージされた機能についても紹介しています。

## Creating Custom Kubernetes Operators
<table>
<tr>
  <td colspan="2"><a href="https://www.magalix.com/blog/creating-custom-kubernetes-operators">Creating Custom Kubernetes Operators</a></td>
</tr>
<tr>
  <td><img src="https://www.magalix.com/hubfs/custom%20operators%201.png#keepProtocol"></td>
  <td>An operator is a program that runs on a Pod and remains in constant connection with the API server. An operator deals with Custom Resource Definitions.</td>
</tr>
</table>

KubernetesのOperatorを実際に作るチュートリアル。
作るのはあらかじめ登録されたConfigMapの変更を検知し、これまた登録されたPodを再生成するという便利そうなオペレータです。

Kubernetesのクライアントライブラリを使わず、kubectl proxyをサイドカーで動作させ、それをPyhtonのプログラムから呼び出す形でオペレータを作成しているというちょっと珍しい記事です。

ライブラリを使わなくともシンプルに実装ができるという良い例だと思いました。

## KubeCon US 2019 Recap
<table>
<tr>
  <td colspan="2"><a href="https://blog.openpolicyagent.org/kubecon-us-2019-recap-3e60c70d633a">KubeCon US 2019 Recap</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1200/0*CVvTKKFFkrxzaCqI"></td>
  <td>A few weeks ago San Diego hosted the largest KubeCon ever with nearly 12,000 attendees. Let’s take a look at some OPA highlights!</td>
</tr>
</table>

KubeCon NA 2019のco-located eventとしてDay-0に開催された OPA Summitについて。

セッションは本番環境でOPAを使っている事例をメインに採択したそうです。
Pinterest, Chef, Atlassian, Trip Advisor, Capital Oneなど、名だたる本番でのOPAの活用事例を紹介したそうです。

さらにKueCon本セッションでもYelp, Goldman Sacs, Reddit, Adove, Google, Microsoftなどの企業が本番でOPAを使っていると言っていました。

この記事は上記の活用例のセッションの簡単な紹介とリンク集となっています。

## Demystifying Kubernetes as a Service - How Alibaba Cloud Manages 10,000s of Kubernetes Clusters - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/12/12/demystifying-kubernetes-as-a-service-how-does-alibaba-cloud-manage-10000s-of-kubernetes-clusters/">Demystifying Kubernetes as a Service - How Alibaba Cloud Manages 10,000s of Kubernetes Clusters - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/12/image9-300x162.png"></td>
  <td>Guest post by Zhimin Tang, Xiang Li and Fei Guo of Alibaba Abstract Since 2015, the Alibaba Cloud Container Service for Kubernetes (ACK) has been one of the fastest growing...</td>
</tr>
</table>

Alibaba Cloudで10,000台で構成されるクラスタをどのように管理しているか？という話。　
Alibaba Cloudでは様々なサイズ、バージョン、のクラスタを大量に管理しています。
そのためのアーキテクチャについて紹介しています。

クラスタはkube-on-kubeと呼ばれるアーキテクチャで構成されており、meta clusterと呼ばれるクラスタに複数のクラスタのマスタコンポーネントをデプロイし、ワーカーノードをそのマスタコンポーネントに登録する方式を採用しています。
メタクラスタはクラスタ数に応じて柔軟にその大きさや個数を調整します。
またメタクラスタ内のマスタコンポーネントについてもそのクラスタの大きさなどにより柔軟に個数が調整されます。

さらにクラスタを構成するマシンのコンポーネントを最新版にアップグレードするためにBroadcastJobという独自のリソースを作成したそうです。
これらは[OpenKruiseプロジェクト](https://github.com/openkruise)としてオープンソース化されています。

また複数のリージョンに展開されているメタクラスタのメトリクスを中央の一つのPrometheusに集約するためにfederationを駆使しているようです。
（しかしすごいデータ量になりそうです・・・）

# The Editorial

## Building Large Kubernetes Clusters - LINE ENGINEERING
<table>
<tr>
  <td colspan="2"><a href="https://engineering.linecorp.com/en/blog/building-large-kubernetes-clusters/">Building Large Kubernetes Clusters - LINE ENGINEERING</a></td>
</tr>
<tr>
  <td><img src="https://engineering-org.line-apps.com/wp-content/uploads/2019/08/BuildingLargeK8s1-1024x992.png"></td>
  <td>Introduction LINE supports its developers so that they can fully focus on development. This was the background of implementing Nucleo, LINE's in-house</td>
</tr>
</table>

LINEを支えるKubernetesサービスNucleoの紹介と、そのNucleoを用いたクラスタスケーリングテストの結果について。
NucleoでKubernetesを管理しているコンポーネントCaravanの歴史。初めはRancherを使っていたが、これはNodeが増えた時にRancher側の負荷が増大してしまう問題があったそうです。
そこで、CRD, kubeadm, terraform ansibleを組み合わせた自前のKuberntesクラスタ管理の仕組みを作ったようです。

スケーリングテストでは、Master NodeにEtcdを同居させるstacked etcd topologyではetcdをMasterNodeと別にスケジュールさせることができないということでパフォーマンスの問題が生じたようで、external etcd topologyに変更したようです。

またCilliumが利用するEtcdについてもパフォーマンスの問題が発生し、enable-k8s-event-handover のオプションを有効にすることで解決したそうです。

## Primer: Understanding Software and System Architecture - The New Stack
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/primer-understanding-software-and-system-architecture/">Primer: Understanding Software and System Architecture - The New Stack</a></td>
</tr>
</table>

ビジネスリーダーに向けたITコンセプトの説明シリーズ記事。

ソフトウェアアーキテクチャとしてレイヤー型、オブジェクト・SOA・Microservices・Mesh型、REST/Restful、Pub/Subなどを紹介している。
またシステムアーキテクチャとしては、中央集権的なものとPeer-to-Peer型について紹介している。

## Primer: Understanding the Cloud Native Impact on Architecture
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/primer-understanding-the-cloud-native-impact-on-architecture/">Primer: Understanding the Cloud Native Impact on Architecture</a></td>
</tr>
</table>

上記記事の続き。
クラウドネイティブによりあえてベンダーロックインする製品を使う必要性が薄れてきていることや、クラウドネイティブなソリューションの選択方法について紹介している。

## How Enterprises Could One Day Use Their Data Centers to Be Their Own 5G Providers
<table>
<tr>
  <td colspan="2"><a href="https://www.datacenterknowledge.com/networks/how-enterprises-could-one-day-use-their-data-centers-be-their-own-5g-providers">How Enterprises Could One Day Use Their Data Centers to Be Their Own 5G Providers</a></td>
</tr>
<tr>
  <td><img src="https://www.datacenterknowledge.com/sites/datacenterknowledge.com/files/lenovo%20edge%20cluster%20KubeCon.jpg"></td>
  <td>A demo shows feasibility of 5G and LTE edge with containers, Kubernetes, and no NFV.</td>
</tr>
</table>

一般的なデータセンターを使い5Gを行う手法が整ってきたという記事。
KubeConでの5Gのデモについても触れている。

(後半の部分はよく理解できていないです；)

## The Top 3 Service Mesh Developments in 2020 - The New Stack
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/the-top-3-service-mesh-developments-in-2020/">The Top 3 Service Mesh Developments in 2020 - The New Stack</a></td>
</tr>
</table>

サービスメッシュ界隈の2020年の発展について

- 需要がますます急増する
- Istioの人気は続きそう
- 様々なユースケースの登場

## Introduction to Kuma - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/kuma-service-mesh-164281.html">Introduction to Kuma - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2019/11/shutterstock_740633893.jpg"></td>
  <td>Kuma is a universal open source control plane for service mesh and microservices. It is built upon Envoy and can operate natively across modern Kubernetes.</td>
</tr>
</table>

Envoyを利用したサービスメッシュの実装である[Kuma](https://kuma.io/)の紹介
サービスメッシュとは？という説明から、Kumaのアーキテクチャまで簡潔に紹介されている。

他のサービスメッシュとの違いは、VMなどKubernetesの外のサービスでも利用できるというところのようです。

## Key Drivers for Migrating from Data-Centre to the Cloud
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/key-drivers-migrating-from-data-centre-to-cloud">Key Drivers for Migrating from Data-Centre to the Cloud</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/bltc4aa59c9a4631dd5/cloud-migration.jpeg"></td>
  <td>Everyone who works in tech is familiar with the benefits of migrating from on-premises data centers to the cloud. When you actually undertake a migration to the cloud, you quickly realize that achieving the advantages that the cloud offers requires some work. The cloud is complex, and navigating the available services, configurations and architectures can be tricky.</td>
</tr>
</table>

オンプレ環境からクラウドに移行するための方針の紹介。
まず、クラウド化により受けたい恩恵を整理し、それらの程度・優先順位などをしっかり定めることが必要だと述べています。

それに応じて下記の観点で設計・移行することを紹介しています。

- クラウドコンピューティングアーキテクチャ
  - 耐障害性、コストなどがトレードオフの関係になっている
  - マルチリージョン？マルチテナント？マルチクラスタ？オンプレとのハイブリッド？
- ワークロードの隔離
  - セキュリティに配慮し適切なワークロードの分離が必要です
  - アカウント、ネットワーク
  - インターネットからアクセスできるワークロード
- 耐障害性戦略
  - Geo-replicating
  - マルチクラウド
  - 災害復旧計画
- コスト最適化
  - ITガバナンスの整備（不要なリソースの削除ポリシーの策定など）
  - コストモニタリング

## FIDEKS - GitOps driven “Augmented K8S Platform for Enterprise”
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/gitops-driven-fidelity-fideks">FIDEKS - GitOps driven “Augmented K8S Platform for Enterprise”</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt4033351372a9cc71/FIDEKS-platform.png"></td>
  <td>Rajarajan Pudupatti, Cloud Platforms Architect at Fidelity Investments and Alexis Richardson, CEO of Weaveworks delivered a practical use case and explanation on how Kubernetes and GitOps was successfully implemented into a large financial organization.</td>
</tr>
</table>

証券会社でのKubernetes・GitOpsの利用事例。
Kubernetes上で動くFIDEKSというプラットフォームを作成し、Developper Experienceを向上している。

## Kubernetes: It's Not Easy but What's to Come? - The New Stack
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/kubernetes-its-not-easy-but-whats-to-come/">Kubernetes: It's Not Easy but What's to Come? - The New Stack</a></td>
</tr>
</table>

KubeCon NA 2019にて録画されたインタビューの要約。

現状のKubernetesの課題として下記を挙げている

- アプリケーションプラットフォームの不在
  - Kubernetesはインフラであり、直接アプリケーションをデプロイするためには手順が多すぎ、学習曲線が急になりすぎる
- 開発者と管理者の境界が曖昧
  - 全てがKubernetesから操作できるが故に境界が曖昧になっている

## AutoTiKV: TiKV Tuning Made Easy by AI and Machine Learning - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://pingcap.com/blog-cn/autotikv/">AutoTiKV: TiKV Tuning Made Easy by AI and Machine Learning - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/12/Screen-Shot-2019-12-11-at-8.10.38-AM-300x131.png"></td>
  <td>Guest post originally published in Chinese by Yuanli Wang, PingCap TL;DR Modern database management systems (DBMS) are notorious for being complicated and having too many configuration options—or “knobs”— that mostly...</td>
</tr>
</table>

[Auto TiKV](https://github.com/tikv/auto-tikv)というNewSQLのプロダクトである[TiKV](https://github.com/tikv/tikv)のパラメータを機械学習でいい感じに設定してくれるツールの紹介。

どのようなアルゴリズムを採用しているか？といったことや、様々な実験結果が紹介されている。(KubeWeekly記事には珍しく数学用語がたくさんの記事でした。)
旧来DBAの仕事の多くは経験と勘により成り立っていたが、このような技術が普及すると状況が変わるかもしれないと感じました。