Slide 1

Slide 1 text

Kubernetes、第一歩のその後に ~基盤を支えるOSSとの関わり方~ Kohei Ota, CNCF Ambassador/HPE Solutions Architect July Tech Festa 2020

Slide 2

Slide 2 text

Kubernetes 201: Let’s get involved with the community! Kohei Ota, CNCF Ambassador/HPE Solutions Architect July Tech Festa 2020

Slide 3

Slide 3 text

© 2020 Cloud Native Computing Foundation 3 Who am I Kohei Ota (@inductor) •CNCF Ambassador •Cloud Native Solution Architect at HPE •Kubernetes SIG-Docs Japanese owner •Docker Meetup Tokyo Organizer •CloudNative Days Tokyo Organizer •Docker enthusiast

Slide 4

Slide 4 text

© 2020 Cloud Native Computing Foundation 4 Today’s target 1. DockerやKubernetesを動かしたことがある 2. チュートリアルから先に進めていない 3. 規模が大きく何から手を付ければいいかわからない

Slide 5

Slide 5 text

© 2020 Cloud Native Computing Foundation 5 Today’s goal 1. Kubernetesを構成している要素のことがわかる 2. それらをどうやって開発しているかがわかる 3. OSSとコミュニティの関係についてわかる

Slide 6

Slide 6 text

小話: DockerとKubernetesの 生まれた時期と経緯

Slide 7

Slide 7 text

© 2020 Cloud Native Computing Foundation 7 Containers Containers: Docker (2013) •dotCloud社が当時提供してたPaaSで基盤になっていたも のをDockerとして公開 ○ Linuxコンテナ(LXC)ベースのアプリケーション •のちにlibcontainer(runC)に書き換え、OSSとして公開 •containerdとmobyを公開、マイクロサービス化 Open Source IaaS PaaS Open Source PaaS 2000 2001 2006 2009 2010 2011 Non- Virtualized Hardware 2013 Virtualiza- tion IaaS here! 2015 Cloud Native

Slide 8

Slide 8 text

© 2020 Cloud Native Computing Foundation 8 Containers Cloud Native Kubernetes (2015) •Googleが15年近く前から作っていたBorgという基盤 技術の思想がベース – インフラを抽象化して必要なリソースをアプリに提供す るためのプラットフォーム •Borgの思想をフルにOSSとして展開 Open Source IaaS PaaS Open Source PaaS Virtualiza- tion 2000 2001 2006 2009 2010 2011 Non- Virtualized Hardware 2013 2015 IaaS here!

Slide 9

Slide 9 text

© 2020 Cloud Native Computing Foundation 9 Marketing Committee Technical Oversight Committee Governing Board End User Community Container Orchestration Distributed system Platform for Platforms • 複数の「ノード」を束ねる クラスタリング • 柔軟なジョブスケジューリング • Raftベースの分散KVS • 高速で簡単なスケーリング • ロードバランサーとの統合 • 柔軟で簡単なデプロイ手段 • インフラ基盤との強力な連携 • 拡張を前提に作られた APIやリソース • 大きなコミュニティとエコシステム Kubernetesの3つの顔

Slide 10

Slide 10 text

皆さんへの質問: Kubernetesは誰が作ってますか?

Slide 11

Slide 11 text

答え コミュニティ

Slide 12

Slide 12 text

普通のOSSってそうじゃないの?

Slide 13

Slide 13 text

© 2020 Cloud Native Computing Foundation 13 OSSがいつもコミュニティベースとは限らない ● 多くのリポジトリは個人が所有している ● 規模の大きなOSSでも会社に属している場合はメンテナが特定の 会社に偏っている ○ 自分たちにメリットがないリクエストは取り入れない Kubernetesではどう違うのか

Slide 14

Slide 14 text

コミュニティの正体

Slide 15

Slide 15 text

© 2019 Cloud Native Computing Foundation 15 Cloud Native Computing Foundation • Nonprofit, part of the Linux Foundation; founded Dec. 2015 • Platinum members: Incubating Graduated Service Mesh Storage Service Discovery Package Management Distributed Tracing API Messaging Distributed Tracing Software Update Spec Security Networking API Orchestration Monitoring Registry Key/Value Store Policy Container Runtime Container Runtime Logging Remote Procedure Call Storage Serverless Container Security Continuous Integration & Deployment Image Distribution Network Proxy Key/Value Store Identity Spec Identity

Slide 16

Slide 16 text

© 2020 Cloud Native Computing Foundation 16 CNCFとは ● 非営利団体 ○ Linux FoundationとGoogleが共同で2015年設立 ○ 複数のプロジェクトをホストしている ■ Kubernetes, Prometheus, fluentd, gRPC(spec), Envoy, containerdなどその他多数 ■ コンテナ技術だけのための団体ではない ● 各プロジェクトに複数団体のメンテナがいる ○ ベンダーの偏っているプロジェクトは受け入れない考え

Slide 17

Slide 17 text

© 2020 Cloud Native Computing Foundation 17 Kubernetesのプロジェクトはどうなっている? ● SIGs(Special Interest Groups) ○ ドキュメント管理やリリース管理から、各コンポーネントの実装 に至るまで、さまざまなSIGがある ■ あらゆる決定は基本的にSIGによって行われる ○ SIGごとに異なる組織からのチェア(代表)がいる ● Kubernetesそのものがコンポーネントごとに分かれたマイクロ サービス ○ 組織もまた必要に合わせ分割(SIG, WG) ○ 各SIGがそれぞれの目的のために日々頑張っている

Slide 18

Slide 18 text

Kubernetesの 基本的なアーキテクチャ

Slide 19

Slide 19 text

© 2020 Cloud Native Computing Foundation 19 ● Kubernetesを形作る最も大きな単一の要素 ● 複数のコンポーネントが、Kubernetesを動かす ために様々な役割をクラスター内で行う ○ 各コンポーネントは「リソース」と呼ぶ ● 「リソース」はAPIオブジェクトで、プログラム上で 管理して扱えるよう抽象化され、パラメーター複 数持っている Kubernetesクラスター

Slide 20

Slide 20 text

© 2020 Cloud Native Computing Foundation 20 ● クラスターを「リソース」の観点で見ると、1台以上 のノードの集合と捉えることもできる ○ 一般には冗長化のために複数台で構成する が、シングルノードクラスターでも動く ● ノードは物理または仮想マシンと非常に近い存在 だが、全く同じではない(次で説明) Kubernetesクラスター

Slide 21

Slide 21 text

© 2020 Cloud Native Computing Foundation 21 ● Kubernetesにおけるノードは、動作に必 要な「コンポーネント」を含む物理または 仮想マシンのこと ● ノードには大きく分けて2種類ある ○ コントロールプレーン ○ ワーカー Kubernetesノード

Slide 22

Slide 22 text

© 2020 Cloud Native Computing Foundation 22 ● 司令塔として動作する管理用ノード ● コントロールプレーンには以下のコンポーネント が含まれる ○ kube-api-server ○ kube-scheduler ○ kube-controller-manager ○ cloud-controller-manager ○ etcd (冗長化のために外に出す事が多い) ○ kubelet ○ kube-proxy ○ Docker (コンテナランタイム) Kubernetesコントロールプレーン

Slide 23

Slide 23 text

© 2020 Cloud Native Computing Foundation 23 ● 開発者や運用者が使いたいアプリケーションが実 際に動くノード ● ワーカーには以下のコンポーネントが含まれる ○ kubelet ○ kube-proxy ○ Docker (コンテナランタイム) Kubernetesワーカー

Slide 24

Slide 24 text

各コンポーネントの役割

Slide 25

Slide 25 text

© 2020 Cloud Native Computing Foundation 25

Slide 26

Slide 26 text

© 2020 Cloud Native Computing Foundation 26 ● すべての中心 ● kubectlなどのクライアント含め全ての コンポーネントがapi-serverを通じてや り取りを行う ● etcdに触れる唯一の存在 kube-api-server

Slide 27

Slide 27 text

© 2020 Cloud Native Computing Foundation 27 ● PodやServiceなどの主要なリソース 管理を制御するコンポーネント ● 一定期間でリソースの状態をチェック し、定義されたDesired stateが維持さ れていることを担保する ○ 人間がYAMLで書いたものを定 義しておき、その情報をもとに自 律制御する kube-controller-manager

Slide 28

Slide 28 text

© 2020 Cloud Native Computing Foundation 28 Reconcile Loop create update delete

Slide 29

Slide 29 text

© 2020 Cloud Native Computing Foundation 29 ● クラウドの世界とKubernetesをつなげてくれるコンポーネント ○ 例: AWSやGCPと連携してLBや外部ボリュームを作成 ○ オートスケーリングなどのクラウド固有の処理のラッパー Kubernetes API <- cloud-controller-manager -> Cloud API cloud-controller-manager

Slide 30

Slide 30 text

© 2020 Cloud Native Computing Foundation 30 ● Kubernetesにおける重要な機能 「スケジューリング」の管理 ● 新しいPodが作られたときに「どのノー ドに配置するか」を決める ○ 例: 2GB以上のメモリがほしい Podは1GBのVMには置かない ○ GPUの載ったノードにだけ配置 したいPodがある、など kube-scheduler

Slide 31

Slide 31 text

© 2020 Cloud Native Computing Foundation 31 ● 各ノードでapi-serverと通信す るデーモン ● スケジューラーからの司令を 感知したら、ノード上でコンテ ナを作成する司令をランタイ ムに送信 kubelet

Slide 32

Slide 32 text

© 2020 Cloud Native Computing Foundation 32 ● 各ノードに入っている ● Kubernetesでは「どのノードで動い てもアプリケーションが同じように動 作」する ○ ワークロード用のNWはクラス ター内で透過 ○ 論理NWをiptablesなどで管理 することで実現 kube-proxy

Slide 33

Slide 33 text

© 2020 Cloud Native Computing Foundation 33 ● 各ノードに入っている ● Docker以外のランタイムも使える ○ KubernetesはkubeletにCRIと いうインターフェースがあっ て、これが喋れるランタイムな らどれでも動かせる (e.g. containerd, CRI-O) コンテナランタイム

Slide 34

Slide 34 text

© 2020 Cloud Native Computing Foundation 34 ● 各ノードに入っている ● Docker以外のランタイムも使える ○ KubernetesはkubeletにCRIと いうインターフェースがあっ て、これが喋れるランタイムな らどれでも動かせる (e.g. containerd, CRI-O) コンテナランタイム

Slide 35

Slide 35 text

各コンポーネントはどこで 開発されているか

Slide 36

Slide 36 text

© 2020 Cloud Native Computing Foundation 36

Slide 37

Slide 37 text

© 2020 Cloud Native Computing Foundation 37 kubeと頭がつくものは全て github.com/kubernetes/kubernetes の中に含まれる

Slide 38

Slide 38 text

© 2020 Cloud Native Computing Foundation 38 それ以外は別のリポジトリにある 特に、cloud-controller-managerはクラウドごとに 別々のSIGで管理されている(e.g. cloud-provider-aws)

Slide 39

Slide 39 text

Kubernetesに関して学ぶ方法と Kubernetes SIGについて

Slide 40

Slide 40 text

© 2020 Cloud Native Computing Foundation 40 Kubernetesを学ぶためのいろいろ ● 困ったらとりあえず公式のチュートリアルをやってみる ○ kubernetes.io(翻訳手伝ってください) ● 認定資格のCKA/CKAD/CKS(new!)を目指してみる ● Kubernetesをどこで動かすかも大切 ○ AWSならAWS、VMwareならVMwareの知識があってこそ、 Kubernetesを活かすための知見も溜まっていく

Slide 41

Slide 41 text

© 2020 Cloud Native Computing Foundation 41 Kubernetesを学ぶためのいろいろ ● Kubernetes the hard way ○ inductorっていう人が翻訳した日本語版もあるよ! ● インフラの人はアプリケーションを、バックエンドの人はインフラを 学ぶことで知識がより定着する ○ Kubernetesの基本的構造はWebアプリケーションと同じ ○ 自動化の恩恵をフルに活用するためには両方の知見が必要

Slide 42

Slide 42 text

© 2020 Cloud Native Computing Foundation 42 日本のコミュニティ ● ミートアップ ○ Kubernetes Meetup Tokyo ○ Cloud Native Meetup Tokyo ○ Prometheus Meetup Tokyo ○ Cloud Native Developers JP ○ Docker Meetup Tokyo ● カンファレンス ○ CloudNative Days Tokyo ○ KubeFest Tokyo ○ Cloud Operator Days Tokyo

Slide 43

Slide 43 text

© 2020 Cloud Native Computing Foundation 43 SIG一覧 ● sig-api-machinery ● sig-apps ● sig-auth ● sig-aws ● sig-azure ● sig-cli ● sig-cloud-provider ● sig-cluster-lifecycle ● sig-contributex ● sig-docs ● sig-gcp ● sig-ibmcloud ● sig-instrumentation ● sig-multicluster ● sig-network ● sig-node ● sig-release ● sig-scheduling ● sig-service-catalog ● sig-storage ● sig-testing ● sig-ui ● sig-usability ● sig-windows

Slide 44

Slide 44 text

© 2020 Cloud Native Computing Foundation 44 SIG一覧 ● sig-api-machinery ● sig-apps ● sig-auth ● sig-aws ● sig-azure ● sig-cli ● sig-cloud-provider ● sig-cluster-lifecycle ● sig-contributex ● sig-docs ● sig-gcp ● sig-ibmcloud ● sig-instrumentation ● sig-multicluster ● sig-network ● sig-node ● sig-release ● sig-scheduling ● sig-service-catalog ● sig-storage ● sig-testing ● sig-ui ● sig-usability ● sig-windows ちょっと列挙しただけでもたく さんある

Slide 45

Slide 45 text

© 2020 Cloud Native Computing Foundation 45 SIG一覧 ● sig-api-machinery ● sig-apps ● sig-auth ● sig-aws ● sig-azure ● sig-cli ● sig-cloud-provider ● sig-cluster-lifecycle ● sig-contributex ● sig-docs ● sig-gcp ● sig-ibmcloud ● sig-instrumentation ● sig-multicluster ● sig-network ● sig-node ● sig-release ● sig-scheduling ● sig-service-catalog ● sig-storage ● sig-testing ● sig-ui ● sig-usability ● sig-windows api-serverの標 準 化 を進めるSIG OSS貢献への満足度 を高めるためのSIG テストの自 動 実 行 を改善するSIG ドキュメントをま とめるSIG( 手 前味噌)

Slide 46

Slide 46 text

© 2020 Cloud Native Computing Foundation 46 SIG一覧 ● sig-api-machinery ● sig-apps ● sig-auth ● sig-aws ● sig-azure ● sig-cli ● sig-cloud-provider ● sig-cluster-lifecycle ● sig-contributex ● sig-docs ● sig-gcp ● sig-ibmcloud ● sig-instrumentation ● sig-multicluster ● sig-network ● sig-node ● sig-release ● sig-scheduling ● sig-service-catalog ● sig-storage ● sig-testing ● sig-ui ● sig-usability ● sig-windows api-serverの標 準 化 を進めるSIG OSS貢献への満足度 を高めるためのSIG テストの自 動 実 行 を改善するSIG ドキュメントをま とめるSIG( 手 前味噌) このあとのD4セッ ションで、Prowにつ いてbellさんが話し てくれます

Slide 47

Slide 47 text

© 2020 Cloud Native Computing Foundation 47 SIGの歩き方 ● 各SIGの役割自体は決まっているので、SIGから見るよりは 何を知りたいかで見たほうが入りやすい ● たくさんあるので、とりあえず困ったらKubernetes Slackの日本 チャンネルで聞くのがいい ○ 気になる人は兎にも角にもSlackに入りましょう! ○ みんな優しい ○ Don’t ask to askの精神 ○ OSSなので、助けてもらったら小さなことでも、別の人にでも良 いので恩を送りあえるといいなぁ

Slide 48

Slide 48 text

© 2020 Cloud Native Computing Foundation 48 SIGの歩き方 ● 各SIGの役割自体は決まっているので、SIGから見るよりは 何を知りたいかで見たほうが入りやすい ● たくさんあるので、とりあえず困ったらKubernetes Slackの日本 チャンネルで聞くのがいい ○ 気になる人は兎にも角にもSlackに入りましょう! ○ みんな優しい ○ Don’t ask to askの精神 ○ OSSなので、助けてもらったら小さなことでも、別の人にでも良 いので恩を送りあえるといいなぁ とりあえず困ったら公式ドキュメントを覗い てみるのもアリ (コントリビュートお待ちしてます)

Slide 49

Slide 49 text

© 2020 Cloud Native Computing Foundation 49 補足: Kubernetesと他のCNCF Projectsの違い ● ここまでグループが細分化されているのは現状Kubernetesだけ ○ カバーしている範囲や機能が大きいのでしょうがない ● CNCFの参加のOSSでは、多くの場合3人程度の代表者がいて、 彼らを中心に開発が進められている

Slide 50

Slide 50 text

Kubernetes以外のCloud Nativeな プロジェクトの歩き方

Slide 51

Slide 51 text

© 2020 Cloud Native Computing Foundation 51 CNCF公式の情報 ● Cloud Native Landscape ● Cloud Native Trail Map

Slide 52

Slide 52 text

© 2020 Cloud Native Computing Foundation 52

Slide 53

Slide 53 text

© 2020 Cloud Native Computing Foundation 53 Try it now at https://l.cncf.io

Slide 54

Slide 54 text

© 2020 Cloud Native Computing Foundation 54 Cloud Native Trail Map Trail Map: l.cncf.io

Slide 55

Slide 55 text

© 2020 Cloud Native Computing Foundation 55 日本のコミュニティ ● ミートアップ ○ Kubernetes Meetup Tokyo ○ Cloud Native Meetup Tokyo ○ Prometheus Meetup Tokyo ○ Cloud Native Developers JP ○ Docker Meetup Tokyo ● カンファレンス ○ CloudNative Days Tokyo ○ KubeFest Tokyo ○ Cloud Operator Days Tokyo

Slide 56

Slide 56 text

© 2020 Cloud Native Computing Foundation 56 KubeCon + CloudNativeCon ● 今年のKubeConは両方オンライン! ● しかも今度やるEU Virtualは無料チケットがある! ○ ただし参加できるセッションには制限あり ○ 会社でお金が出ないけど自分で払うのも・・・って人にはちょう どいいかも ● 知り合いとZOOMしながら見るなんてのもありかも?

Slide 57

Slide 57 text

Kubernetesの新機能や 最新動向を見たい場合

Slide 58

Slide 58 text

© 2020 Cloud Native Computing Foundation 58 KEPを活用する ● Kubernetes Enhancement Proposalの略 ○ 要するに新機能や改善の提案をするためのフォーマット ● github.com/kubernetes/enhancements 配下にある ○ 現在進行系で提案されている新しい機能や改善点に関する仕 様策定やその進捗、実装状況やマイルストーンなどが全て示 されている ● 詳しくはLadicle氏のアドベントカレンダー記事が最高 ○ KEPから知るKubernetes

Slide 59

Slide 59 text

© 2020 Cloud Native Computing Foundation 59 まとめ ● Kubernetesは複数のマイクロサービスでできている ● Kubernetesはコミュニティによって支えられている ○ 世界で2番目に規模の大きなコミュニティ ○ 1位はLinuxカーネル ● KEPやSIGなど、さまざまな仕組みで日々議論が行われている

Slide 60

Slide 60 text

[email protected] This presentation is available at: https://github.com/cncf/presentations Please follow up with CNCF