KubeWeekly #163

# はじめに

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

# The Headline

## Four Techniques Serverless Platforms Use to Balance Performance and Cost 
<table>
<tr>
  <td colspan="2"><a href="https://www.infoq.com/articles/serverless-performance-cost">Four Techniques Serverless Platforms Use to Balance Performance and Cost </a></td>
</tr>
<tr>
  <td><img src="https://cdn.infoq.com/statics_s1_20190219-0336/styles/i/logo-big.jpg"></td>
  <td>There are two aspects that have been key to the rapid adoption of serverless computing: the performance and the cost model.  This article looks at those aspects, the tradeoffs, and opportunity ahead.</td>
</tr>
</table>

サーバレスでパフォーマンスとコストのバランスを取る良い方法。
OSSのFaaSであるFissionや、各種クラウドプロバイダの提供するFaaSを例に、説明している。
OSSは改造する事で様々なチューニングができるがクラウドプロバイダの場合は、どのように実装しているかに依存してしまう。

## Kubernetes Security with Liz Rice
<table>
<tr>
  <td colspan="2"><a href="https://softwareengineeringdaily.com/2019/02/14/kubernetes-security-with-liz-rice/">Kubernetes Security with Liz Rice</a></td>
</tr>
<tr>
  <td><img src="https://softwareengineeringdaily.com/wp-content/uploads/2019/02/kubernetes-security.png"></td>
  <td>A Kubernetes cluster presents multiple potential attack surfaces: the cluster itself, a node running on the cluster, a pod running in the node, a container running in a pod. If you are managing your own Kubernetes cluster, you need to be aware of the security settings on your etcd, your API server, and your container</td>
</tr>
</table>

Podcast（聞いていない）

Kubernetes Securityの著者の一人であるAqua SecurityのLiz RiceによるKubernetesのセキュリティの概要

## Back to Microservices with Istio (Part 1) – Google Cloud Platform - Community – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/google-cloud/back-to-microservices-with-istio-p1-827c872daa53">Back to Microservices with Istio (Part 1) – Google Cloud Platform - Community – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*PP6I7VYPqqzwfovHrr8DLw.jpeg"></td>
  <td>Reduce all the boilerplate code with Istio and get your services back to being micro!</td>
</tr>
</table>

Istioの概要と、仕組み、チュートリアル

Kialiという可視化ツールでのコントロールフローの可視化、Galafanaでのメトリクスの可視化、Jagerによるトレーシングの可視化

ABテスト、リクエストのミラー（シャドーイング）、カナリーデプロイ、タイムアウト、リトライ、などのデモ

思った以上に盛りだくさんの紹介だった。

# The Technical

## Kubernetes Storage Performance Comparison – vescloud – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/vescloud/kubernetes-storage-performance-comparison-9e993cb27271">Kubernetes Storage Performance Comparison – vescloud – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*fH8ZdSNPJfbbXBlx"></td>
  <td>If you are running Kubernetes you are likely use or want to use volumes for block storage through dynamic provisioning. The greatest…</td>
</tr>
</table>

Kubernetesから利用できるストレージの比較。

- AKSのネイティブストレージ、Azureのpremium　Storage
  - 簡単に利用できるが、フェイルオーバーが遅く10分程度かかる
- AWS Cloud storageやAzure managed diskをインスタンスに割り当て、それをhostPathでマウント。
- OpenEBS (cStor backend)
  - オープンソースであり、可視化用のMayaも優れている。CASの考え方が良さそう。コミュニティも活発
  - 成熟度がまだまだ、iSCSIとの接続はKubernetesのServiceを使っているが、オーバーレイネットワークによっては問題となる事がある。iSCSIなど追加のインストールが必要。
- Portworx
  - 簡単にデプロイできる。cephやglusterfsで必要であるような設定が不要
  - どこでも動かせるCloudNative
  - Storage aware class-of-serviceやapplication aware I/O tuningができる（よくわかっていないが・・）
  - 欠点はクローズドソースである事。
- Gluster (manged by Heketi)
  - Cephよりは軽い
  - managed k8s専用に作られているわけではない。普通のマシンでクラスタを組んだ方が簡単。
  - SQLなどの構造化されたデータには向かず、バックアップなどに向いている
- Ceph (managed by Rook)
  - ロバストなストレージであり、管理が簡単（Cephそのものに触る必要がないから？）
  - Public　Cloudで運用するには複雑すぎる、適切な設定をした普通のVMのクラスタで運用するのが良い


ベンチマークにはKubernetes用のディスクベンチマークツールである [logdna/dbench](https://github.com/logdna/dbench)を利用している

キャッシュの活用などにより、いくつかのSDSはネイティブストレージよりも性能が良い。

設定などを追い詰めいない評価ではあるものの

- Portworkは最も早い
- Cephはオープンソースのストレージとしては最も良い
  - ただし複雑なので、クラウド環境ではなく普通のハードウェアのクラスタ上で運用するのが良い。
- OpenEBSは仕組みは良いが、最適化が必要

## Pimp my Kubernetes Shell – ITNEXT
<table>
<tr>
  <td colspan="2"><a href="https://itnext.io/pimp-my-kubernetes-shell-f144710232a0">Pimp my Kubernetes Shell – ITNEXT</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*09Ocgtr0fvas-p4Mt-gFZw.png"></td>
  <td>Have you ever been staring at the terminal window but don’t remember which Kubernetes cluster it is set up for?</td>
</tr>
</table>

kubernetesをシェルから効率よく操作する方法を紹介。

- aliasのおすすめ設定
- [jonmosco/kube-ps1](https://github.com/jonmosco/kube-ps1)
- [ahmetb/kubectx](https://github.com/ahmetb/kubectx) と同じリポジトリにあるkubens
  - さらに [junegunn/fzf](https://github.com/junegunn/fzf)を組み合わせる

## If you liked ksonnet, you'll love Pulumi!
<table>
<tr>
  <td colspan="2"><a href="https://blog.pulumi.com/if-you-liked-ksonnet-youll-love-pulumi">If you liked ksonnet, you'll love Pulumi!</a></td>
</tr>
<tr>
  <td><img src="https://blog.pulumi.com/hubfs/KubeSimple.png#keepProtocol"></td>
  <td> We’re sad to see ksonnet winding down, but are thankful for the collaborative exchange of ideas between projects, and are excited to see continued investment in VMWare/Heptio’s other projects. The good news is that, if you liked ksonnet, we’re confident that you’ll love Pulumi. In this post, we'll tell you why.</td>
</tr>
</table>

ksonnetが開発終了してしまうが、そういう人にちょうど良いプロダクトである、[Pulumi](https://pulumi.io/)の紹介

Pulumiは命令的な言語(Node.js, Python3, Goなどいくつかの言語をサポート)により、Kubernetesのリソースを定義できる仕組み。
Kubernetesのリソース以外にも、様々なクラウドプロバイダのリソースを扱う事ができる。

パッとみた感じTerraformに近いもののようだ。

## Kubernetes Operations: Prioritize Workload in Overcommitted Clusters
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/microsoftazure/kubernetes-operations-prioritize-workload-in-overcommitted-clusters-8b9a60de98ec">Kubernetes Operations: Prioritize Workload in Overcommitted Clusters</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*voPAxDaAwLYn71CW5Crqqg.jpeg"></td>
  <td>One of the benefits in adopting a system like Kubernetes is facilitating burst-able and scalable workload. Horizontal application scaling…</td>
</tr>
</table>

Preemptionの紹介。
PriorityClassを指定する事で、優先度の高いPodを作成し、そのPodが他のPodを終了させてうまく実行される様子を紹介している。

## Containerd on a more secure MicroK8s – ITNEXT
<table>
<tr>
  <td colspan="2"><a href="https://itnext.io/containerd-on-a-more-secure-microk8s-c2c97ac0268f">Containerd on a more secure MicroK8s – ITNEXT</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*A_jfxX0FO_hTu3QY0MFXfg.png"></td>
  <td>We have been quiet for a few months just because we have been busy. We were working mainly on two features that we intend to ship  in the…</td>
</tr>
</table>

Microk8s新機能の話

- DockerdからContainerdへの移行
- セキュリティの強化
  - 通信できるポートの制限
  - クラスタ生成のたびに新しい証明書を作成

## Hands on Knative — Part 3 – Google Cloud Platform - Community – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/google-cloud/hands-on-knative-part-3-d8731ad2f23d">Hands on Knative — Part 3 – Google Cloud Platform - Community – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*oUkVZf53NR7vNMslI1MwEA.png"></td>
  <td>In Part 1, I talked about Knative Serving for rapid deployment and autoscaling of serverless containers. In Part 2, I talked about how to…</td>
</tr>
</table>

Knativeのチュートリアルの第3弾。Buildの紹介。
kanicoをつかったビルド方法や、knativeのServiceと組み合わせる方法を紹介している。

ServiceとBuildを組み合わせるのは本番環境ではオススメしないが、テストの目的にはちょうど良いとのこと。

## Use Istio traffic mirroring for quicker debugging – ITNEXT
<table>
<tr>
  <td colspan="2"><a href="https://itnext.io/use-istio-traffic-mirroring-for-quicker-debugging-a341d95d63f8">Use Istio traffic mirroring for quicker debugging – ITNEXT</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*9_3WRLFmo3dcOvVMmdbkVw.png"></td>
  <td>Often when an error occurs, especially in production, one needs to debug the application to create a fix. Unfortunately the input that…</td>
</tr>
</table>

Istioでリクエストをミラーする方法を紹介。
本番環境でのデバッグなどに役立つらしい。

## Helm Basics — Using Tillerless – DevOpsLinks – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/devopslinks/helm-basics-using-tillerless-dac28508151f">Helm Basics — Using Tillerless – DevOpsLinks – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*nViWw5hFgS7l3vu1RkO3YA.png"></td>
  <td>TL&DR</td>
</tr>
</table>

[rimusz/helm-tiller](https://github.com/rimusz/helm-tiller)
をつかって、TillerをデプロイせずにHelmを利用する方法を紹介。
このHelmプラグインはTillerをローカルマシン上に作成するものである。このTillerがリモートのKubernetesにリソースをデプロイすることにより、Tillerlessを実現している（厳密にはTillerを利用しているが、、）

これはHelm3に搭載される仕組みとは別で、今日から使える方法である。

## How to Bootstrap Kubernetes the hard way! – PolarSquad – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/polarsquad/how-to-bootstrap-kubernetes-the-hard-way-ca7ca46381f5">How to Bootstrap Kubernetes the hard way! – PolarSquad – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*JAW4-hlKUFKS__ZBiB_kpg.png"></td>
  <td>Bashing your head against K8s can be fun…</td>
</tr>
</table>

hard wayと書かれているがkubeadmをつかったクラスタの構築方法。

## Swift + Docker + Kubernetes = Awesome Deployments from macOS
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/xcblog/swift-docker-kubernetes-awesome-deployments-from-macos-5c2e95900093">Swift + Docker + Kubernetes = Awesome Deployments from macOS</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/1*GmJEgaQcwv8kVz4fVCJHXQ.png"></td>
  <td>Original Links: Read original links to get nicer code syntax and formatting!</td>
</tr>
</table>

Kubernetes上でサーバサイドSwiftのアプリケーションを動かす方法を紹介
KubernetesはDocker for Macで作成。
docker-compose.yamlから`docker stack deploy`をつかってKubernetesにデプロイしている。

あまりサーバサイドSwiftでKubernetesの事例は聞かないが、[IBM/kitura-on-kubernetes](https://github.com/IBM/kitura-on-kubernetes)などがあるらしい。

# The Editorial

## How VSCO Saved 70% with Kubernetes - Cloud Native Computing Foundation
<table>
<tr>
  <td colspan="2"><a href="https://www.cncf.io/blog/2019/02/20/how-vsco-saved-with-kubernetes/">How VSCO Saved 70% 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>After VSCO moved to AWS in 2015 and its user base passed the 30 million mark, the team quickly realized that set-up wouldn’t work anymore. With a checklist that included...</td>
</tr>
</table>


VSCO(画像加工アプリ？)の事例。Kubernetsを導入することでデプロイの時間が80%削減でき、リリース回数が16/yearから118/yearに増えた。
といった内容の紹介動画（動画は見ていない）

## Running your own DBaaS based on your preferred DBs, Kubernetes operators and containerized storage
<table>
<tr>
  <td colspan="2"><a href="https://blog.openebs.io/running-your-own-dbaas-based-on-your-preferred-dbs-kubernetes-operators-and-containerized-storage-3cc36ba115b8">Running your own DBaaS based on your preferred DBs, Kubernetes operators and containerized storage</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*8pti4Sk7ClVsphTl"></td>
  <td>Why’d you want to do that?</td>
</tr>
</table>

DBaaSのようなものをKubernetesで作る場合に知っておくべきことといった内容の記事。
DBの種類や、さらにその下の層であるストレージの選定などについて述べられている。

## Kubernetes Podcast from Google
<table>
<tr>
  <td colspan="2"><a href="None">Kubernetes Podcast from Google</a></td>
</tr>
<tr>
  <td><img src="https://kubernetespodcast.com/_assets/images/Kubernetes-Podcast-Logo_1400x1400.png"></td>
  <td></td>
</tr>
</table>

Kubernetesのco-founderであるTim HockinへのIngress　APIについてのインタビューのPodcast（聞いていない）

## AT&T's Kubernetes Bet Tests Network Virtualization's Limits  | Light Reading
<table>
<tr>
  <td colspan="2"><a href="https://www.lightreading.com/nfv/containers/atandts-kubernetes-bet-tests-network-virtualizations-limits-/d/d-id/749518">AT&T's Kubernetes Bet Tests Network Virtualization's Limits  | Light Reading</a></td>
</tr>
<tr>
  <td><img src="https://img.lightreading.com/2019/02/749518/2756.jpeg"></td>
  <td>AT&T's eight-figure deal to build its 5G network on Kubernetes tests the limits of the container management technology. 
</td>
</tr>
</table>

AT&Tでの5G通信に向けたインフラにKubernetesを利用しようとしている話。
しかし、旧来のVMベースの仕組みを設計し直すのはやるべき事が多くある。

そこでAT&TはOpenStackをKubernetes上で動かし、そのOpenStackが管理するVMを使おうとしている。

## Envoy and the Programmable Edge: Edge Proxies and the Developer Experience - The New Stack
<table>
<tr>
  <td colspan="2"><a href="https://thenewstack.io/envoy-and-the-programmable-edge-edge-proxies-and-the-developer-experience/">Envoy and the Programmable Edge: Edge Proxies and the Developer Experience - The New Stack</a></td>
</tr>
<tr>
  <td><img src="https://cdn.thenewstack.io/media/2019/02/c6ed8b1c-messenger.jpg"></td>
  <td>Moving away from hardware-based load balancers and other edge appliances towards the software-based “programmable edge” provided by Envoy clearly has many benefits, particularly in regard to dynamism and automation. However, one of the core challenges presented was the need to create an effective control plane that integrates well with the existing engineering workflow or developer experience. This article explore this challenge in more depth.</td>
</tr>
</table>

Edge（L7のロードバランサ）について、従来のハードウェアにより中央集権的なEdgeから、アプリケーションごとに分散されているソフトウェアのEdgeの必要性が増している事について説明している。
またそのソリューションとしてAmbassadorを紹介し、最近のアップデートの内容について紹介している。

## Manage your Kubernetes clusters with a terminal-based UI - JAXenter
<table>
<tr>
  <td colspan="2"><a href="https://jaxenter.com/kubernetes-k9s-clusters-155756.html">Manage your Kubernetes clusters with a terminal-based UI - JAXenter</a></td>
</tr>
<tr>
  <td><img src="https://jaxenter.com/wp-content/uploads/2019/02/shutterstock_251608093.jpg"></td>
  <td>K9s is a simple terminal UI for interacting with your Kubernetes clusters. Help this project grow by running it and testing out its features!</td>
</tr>
</table>

KubernetesをターミナルベースのUIで管理する方法として、[K9s](https://k9ss.io/)を紹介している。
CUIベースではありながら、かなりビジュアルにクラスタのリソースを可視化できるツールのようだ。

## Kubernetes job interview questions: How to prepare
<table>
<tr>
  <td colspan="2"><a href="https://enterprisersproject.com/article/2019/2/kubernetes-job-interview-questions-how-prepare">Kubernetes job interview questions: How to prepare</a></td>
</tr>
<tr>
  <td><img src="https://enterprisersproject.com/sites/default/files/images/cio_resume.png"></td>
  <td>Demand for Kubernetes skills is growing. Whether you're a hiring manager or a job candidate, these 20 questions will help set you up for success.</td>
</tr>
</table>

Kubernetesのスキルでの就職活動について、面接すべき事、されそうな事。

## 5 Key Considerations for Managed Kubernetes - Container Journal
<table>
<tr>
  <td colspan="2"><a href="https://containerjournal.com/2019/02/15/5-key-considerations-for-managed-kubernetes/">5 Key Considerations for Managed Kubernetes - Container Journal</a></td>
</tr>
<tr>
  <td><img src="https://i1.wp.com/containerjournal.com/wp-content/uploads/2019/02/Considerations-Managed-Kubernetes.jpg?fit=770%2C330&ssl=1"></td>
  <td>If you’re deciding whether to build versus rent, here are five broad points to bear in mind when selecting a managed Kubernetes service.</td>
</tr>
</table>

マネージドKubernetsを使おうと考えた時に、どうやってそれらを選定するかという観点を5つ紹介している。

## Kubernetes: piloting the cybernetic dreamboat – YLD Blog – Medium
<table>
<tr>
  <td colspan="2"><a href="https://medium.com/yld-engineering-blog/kubernetes-piloting-the-cybernetic-dreamboat-98482f49333b">Kubernetes: piloting the cybernetic dreamboat – YLD Blog – Medium</a></td>
</tr>
<tr>
  <td><img src="https://cdn-images-1.medium.com/max/1200/0*ZnrUXSGpWapdVJOn.gif"></td>
  <td>The name Kubernetes originates from Greek, meaning helmsman or pilot, and is the root of governor and cybernetic.</td>
</tr>
</table>

Kubernetesから派生した語としてCybernetic(人工頭脳学)があることから、人工頭脳学とKubernetesについて述べた記事。

オートヒーリングをhomeostasisと例えたり、それぞれの特徴を紐づけて説明し、また逆に人工頭脳学の知見をKubernetesに応用できないか、という切り口のようだ（が、残念あがら人工頭脳学に詳しくないので流し読みしかしていない。）

## Week Ending February 17, 2019
<table>
<tr>
  <td colspan="2"><a href="http://lwkd.info/2019/20190218">Week Ending February 17, 2019</a></td>
</tr>
<tr>
  
  <td>Steering Committee Meeting Summary</td>
</tr>
</table>

先週のKubernetesの開発状況。

注目すべきPRも紹介されている

- [add kustomize as a subcommand in kubectl by Liujingfang1 · Pull Request #73033 · kubernetes/kubernetes · GitHub](https://github.com/kubernetes/kubernetes/pull/73033)
  - kubectlにkustomizeサブコマンドが実装されました。
-　[publishing: remove rules for unsupported 1.10 branch by nikhita · Pull Request #74115 · kubernetes/kubernetes · GitHub](https://github.com/kubernetes/kubernetes/pull/74115)
  - 1.10が非サポートとなりました。
- [Set up 1.14 CI (#11203 + patches + rebump) by krzyzacy · Pull Request #11370 · kubernetes/test-infra · GitHub](https://github.com/kubernetes/test-infra/pull/11370)
  - 1.14に向けたCI