KubeWeekly #187

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

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

# The Headlines

## Scalability Tuning on a Tess.IO Cluster
<table>
<tr>
  <td colspan="2"><a href="https://tech.ebayinc.com/engineering/scalability-tuning-on-tess-io-cluster/">Scalability Tuning on a Tess.IO Cluster</a></td>
</tr>
<tr>
  <td><img src="https://static.ebayinc.com/static/assets/Uploads/Blog/Posts/draft-Scalability-Tuning-on-TESS.IO-Cluster-1.png"></td>
  <td>Tess.IO is eBay’s new unified cloud infrastructure based on Kubernetes. With more and more applications being deployed on the Tess cluster, the requirements for scalability and capability of the cluster are growing. This article describes how to achieve 5000-node scalability for the tess.IO cluster.</td>
</tr>
</table>

Tess.IO と呼ばれるeBay 5000ノード級のKubernetesクラスタについての話。
この規模になるとKubernetesの内部の挙動に手を加えないとまともに動作しないとのこと。

具体的にまともに動作しない事例を挙げて、その解決策を解説している。

- DaemonSet周りで直接etcdへのアクセスにつながる動作の修正
- GetAttrsの処理をキャッシュする
- PodとNodeの格納されるetcdを分ける
- Etcdのバックアップとデータのディスクを分ける

などなど、の対策を施し5000ノード級のクラスタを実現しているようです。

## A Practical Guide to Setting Kubernetes Requests and Limits
<table>
<tr>
  <td colspan="2"><a href="http://blog.kubecost.com/blog/requests-and-limits/">A Practical Guide to Setting Kubernetes Requests and Limits</a></td>
</tr>
<tr>
  <td><img src="http://blog.kubecost.com//assets/images/kubecost-icon.png"></td>
  <td>Setting Kubernetes requests and limits effectively has a major impact on application performance, stability, and cost. And yet working with many teams over the past year has shown us that determining the right values for these parameters is hard. For this reason, we have created this short guide and are launching a new product to help teams more accurately set Kubernetes requests and limits for their applications.</td>
</tr>
</table>

Limit, Requestをどのように設定すべきかという指標と、そのオススメの値を提示してくれるツールの紹介。VPAに対する期待などが書かれたドキュメント。

アプリケーションの重要度を3種類に分類し、そのそれぞれで、どの程度のRequest,Limitを設定すべきかが示されている。

# The Technical

## Annotations in Kubernetes  | Blog | CloudYuga
<table>
<tr>
  <td colspan="2"><a href="https://cloudyuga.guru/blog/annotations-k8s">Annotations in Kubernetes  | Blog | CloudYuga</a></td>
</tr>
<tr>
  <td><img src="https://raw.githubusercontent.com/cloudyuga/site-images/master/cloudyuga-cover.jpg"></td>
  <td>In this blog post we'll explore Annotations in general and how K8s uses it !</td>
</tr>
</table>

Kubernetesのオブジェクトの"annotation"についての説明。

## Monitoring blocked and passthrough external service traffic
<table>
<tr>
  <td colspan="2"><a href="https://istio.io/blog/2019/monitoring-external-service-traffic/">Monitoring blocked and passthrough external service traffic</a></td>
</tr>
<tr>
  <td><img src="https://istio.io/img/istio-whitelogo-bluebackground-framed.svg"></td>
  <td>How can you use Istio to monitor blocked and passthrough external traffic.</td>
</tr>
</table>

Istio1.3の新機能である、external serviceへのモニタリング機能に関する紹介。
これによりサービスメッシュによりブロックされた通信や、許可されて通信したコネクションの情報を知ることができます。

## Liveness Probes are Dangerous
<table>
<tr>
  <td colspan="2"><a href="https://srcco.de/posts/kubernetes-liveness-probes-are-dangerous.html">Liveness Probes are Dangerous</a></td>
</tr>
<tr>
  <td><img src="https://srcco.de/galleries/kubernetes-logo.png"></td>
  <td>Kubernetes livenessProbe can be dangerous. I recommend to avoid them unless you have a clear use case and understand the consequences.
This post looks at both Liveness and Readiness Probes and describ</td>
</tr>
</table>

Readiness Probe, Liveness Probeを使う際は注意が必要　という記事。
誤った設定をすると、1つの障害によりクラスタ全体が崩壊しかねないということを述べています。
そのため、ほとんどのケースにおいてReadiness Probeは必要だがLiveness Probeは設定するべきではないと主張しています。

## Protecting Kubernetes API Against CVE-2019-11253 (Billion Laughs Attack) and Other Vulnerabilities · StackRox: Security for Containers and Kubernetes
<table>
<tr>
  <td colspan="2"><a href="https://www.stackrox.com/post/2019/09/protecting-kubernetes-api-against-cve-2019-11253-billion-laughs-attack/">Protecting Kubernetes API Against CVE-2019-11253 (Billion Laughs Attack) and Other Vulnerabilities · StackRox: Security for Containers and Kubernetes</a></td>
</tr>
<tr>
  <td><img src="https://res.cloudinary.com/stackrox/v1569870842/cve-2019-11253-stackrox-blog-banner_nisncq.jpg"></td>
  <td>The parsing of YAML manifests by the Kubernetes API server could lead to a DOS attack against a cluster’s Kubernetes API service, leading to a “billion laughs” attack</td>
</tr>
</table>

CVE-2019-11253についての紹介。

これは “billion laughs” attackと呼ばれる種類の脆弱性で、参照を定義できるデータ記述言語のパーサーに攻撃を仕掛ける典型的な方法のようです。
悪意のあるYAMLをパースさせることでパーサーが許容できないほどのリソースを消費するというものです。

現在のところこの問題を修正するパッチは出ていません。
一方で、APIサーバへのアクセスできるユーザや権限を最小限に絞ることで、この問題の影響を小さくすることができます。

## Multitenancy on kubernetes with Istio, External Authentication Server and OpenID Connect (Part 1 — Authentication)
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/hal24k-techblog/multitenancy-on-kubernetes-with-istio-external-authentication-server-and-openid-connect-33e02544e0db">Multitenancy on kubernetes with Istio, External Authentication Server and OpenID Connect (Part 1 — Authentication)</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/max/1115/1*qVvCKsTqMRrwj8BPdCUDkw.png"></td>
  <td>Part 1 — Authentication</td>
</tr>
</table>


Kubernetesクラスタ上に複数のサービスを立ち上げて、利用者ごとに認証・認可を設定したい、いわゆるマルチテナントとしての使い方のチュートリアルです。
複数回に分かれて説明されており、今回は認証部分です。

[External Authentication Server](https://github.com/travisghansen/external-auth-server)という認証を抽象化してくれるアプリケーションと、リバースプロキシ（この記事ではEnvoy）を組み合わせて、コードを書かずに認証によりそれぞれのアプリケーションへのログインを実現しています。

## Beyond Pods: how to orchestrate stateless apps in Kubernetes?
<table>
<tr>
  <td colspan="2"><a href="https://itnext.io/stateless-apps-in-kubernetes-beyond-pods-f0f584eda91b">Beyond Pods: how to orchestrate stateless apps in Kubernetes?</a></td>
</tr>
<tr>
  <td><img src="https://miro.medium.com/freeze/max/480/0*zGQfdIwvexM9wzx4.gif"></td>
  <td>Hello Kubernauts! Welcome to the “Kubernetes in a nutshell” blog series :-)</td>
</tr>
</table>

Kubernetesの基本を紹介するブログシリーズ。Deployment,ReplicaSet,Pod

# The Editorial

## Kubernetes Podcast from Google
<table>
<tr>
  <td colspan="2"><a href="https://kubernetespodcast.com/episode/073-crds-extensibility-api-machinery/">CRDs, Extensibility and API Machinery, with Daniel Smith</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
</tr>
</table>

Kubernetes Podcast
今回のゲストはSIG API Machineryのco-Chairでありco-TLであるDaniel Smithさん。

（聞いていない）

## Weaveworks GitOps Policy Manager in Action
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/weaveworks-gitops-policy-manager-in-action">Weaveworks GitOps Policy Manager in Action</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt2d1b2034fe74a1bb/weaveworks_marketecture_diagram new v2_ww diagram 3.png"></td>
  <td>The new release of the Weave Kubernetes Platform (WKP) makes it easy to build and deploy clusters and all their components using GitOps. In this post we'll examine the main features and why they're beneficial, looking at cluster add-ons and automating policy so that we can determine﻿ who can do what across multiple teams.</td>
</tr>
</table>

Weave Kubernetes Platformの機能の一つである GitOps Policy Managerの紹介。
これはOPA（Open Policy Agent）を用いてプルリクエストが適切かどうかをチェックする仕組みのようです。

他にもWeave Kubernetes Platformでは、GitOpsの方式でOSのセキュリティパッチ、クラスタそのもの、クラスタ内で動作するアドオンの設定ができるようです。

## Guide to Anomaly Detection with Containers and Kubernetes · StackRox: Cloud-Native, Container, and Kubernetes Security
<table>
<tr>
  <td colspan="2"><a href="https://www.stackrox.com/post/2019/09/guide-to-anomaly-detection-with-containers-and-kubernetes/">Guide to Anomaly Detection with Containers and Kubernetes · StackRox: Cloud-Native, Container, and Kubernetes Security</a></td>
</tr>
<tr>
  <td><img src="https://res.cloudinary.com/stackrox/v1569267929/anomaly-detection-blog-banner_mt7m2t.jpg"></td>
  <td>The declarative nature of Kubernetes combined with containers frequently consisting of a single process increases the efficacy of anomaly detection by providing context around the applications that are running</td>
</tr>
</table>

コンテナやKubernetesを利用することで従来のVMの場合に比べて、侵入検知が非常にやりやすくなったという話。
単一プロセスしか実行しないコンテナという実行環境に加え、宣言的なコンテナのマニフェストや、PodのSpecによる最小権限の維持、NetworkPolicyなど利用できるツールがたくさんある。

## How I Halved the Storage of Cortex
<table>
<tr>
  <td colspan="2"><a href="https://www.weave.works/blog/how-i-halved-the-storage-of-cortex">How I Halved the Storage of Cortex</a></td>
</tr>
<tr>
  <td><img src="https://www.weave.works/assets/images/blt63e1b412ddcef709/ingester-store.png"></td>
  <td>Find out how Bryan Boreham managed to cut the storage of Cortex’ time -series data in half by re-architecting how the data gets split into chunks.</td>
</tr>
</table>

CNCFのプロジェクトでもある、Prometheusのためのスケーラブルなストレージの仕組みであるCortexの0.2の紹介。
このアップデートでストレージに使用量を半減することに成功したようで、この記事にはその詳細が紹介されています。

## KubeVirt Joins Cloud Native Computing Foundation – Red Hat OpenShift Blog
<table>
<tr>
  <td colspan="2"><a href="https://blog.openshift.com/kubevirt-joins-cloud-native-computing-foundation/">KubeVirt Joins Cloud Native Computing Foundation – Red Hat OpenShift Blog</a></td>
</tr>
<tr>
  <td><img src="https://i1.wp.com/blog.openshift.com/wp-content/uploads/KubeVirt-Schema-2019.png?fit=1600%2C700&ssl=1"></td>
  <td>This month the Cloud Native Computing Foundation (CNCF) formally adopted KubeVirt into the CNCF Sandbox. KubeVirt allows you to provision, manage and run virtual machines from and within Kubernetes. In joining the CNCF Sandbox, KubeVirt now has a more substantial platform to grow as well as educate the CNCF community on the use cases for …</td>
</tr>
</table>

KubeVirtがCNCFのSandboxプロジェクトとして採択されました。

## ServiceMeshCon 2019 Schedule Announced - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/09/26/servicemeshcon-2019-schedule-announced/">ServiceMeshCon 2019 Schedule Announced - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/09/servicemeshcon-300x62.jpg"></td>
  <td>We are pleased to announce the schedule for the inaugural ServiceMeshCon, a KubeCon + CloudNativeCon co-located event. Hosted by CNCF, the conference will take place on November 18th on Day...</td>
</tr>
</table>

サンディエゴで開かれるKubeCon + CloudNativeCon の co-located eventとして ServiceMeshConが開催されます。
セッションの内容も紹介されています。

## Declarative Data Infrastructure Powers the Data Driven Enterprise - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/09/27/declarative-data-infrastructure-powers-the-data-driven-enterprise/">Declarative Data Infrastructure Powers the Data Driven Enterprise - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2019/09/Picture1-300x81.png"></td>
  <td>Guest post from Kiran Mova and Chuck Piercey, MayaData BigData, AI/ML and modern analytics permeate the business world and have become a critical element of enterprise strategies to serve customers...</td>
</tr>
</table>

Kubernetesなどを使いストレージを宣言的に管理できることが、ビッグデータを扱う企業にとってどれだけ有用か？ということを示した記事。
DevOpsの流れを模した、DataOpsといった風潮についての紹介。


## How DENSO Is Fueling Development on the Vehicle Edge with Kubernetes - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/10/01/how-denso-is-fueling-development-on-the-vehicle-edge-with-kubernetes/">How DENSO Is Fueling Development on the Vehicle Edge with Kubernetes - Cloud Native Computing Foundation</a></td>
</tr>
<tr>
  <td><img src="https://www.cncf.io/wp-content/uploads/2017/12/icon_cncf_twitter.png"></td>
  <td>Cars that update like smartphones, adjusting features based on the driver’s preferences? The future is now for Japan’s DENSO Corporation, one of the biggest automotive components suppliers in the world. ...</td>
</tr>
</table>

デンソーでのKubernetesの活用事例について。
自動車の更新などを管理するためのエッジコンピューティング基盤としてKubernetesを利用しようとしているようです。