Mobility Technologies Co., Ltd.
MLエンジニアリンググループ
鈴木 隆史
Kubernetes超入門
Mobility Technologies Co., Ltd.
● Kubernetesが必要になった背景
● Kubernetesのアーキテクチャ
● Kubernetesの主要コンポーネント
今日話すこと
2
Mobility Technologies Co., Ltd.
Kubernetesが
必要になった背景
01
3
Mobility Technologies Co., Ltd.
クラウド業界を取り巻くインフラの遷移
4
Mobility Technologies Co., Ltd.
● 物理マシンは調達から運用までが大変
● 仮想マシンもお手軽じゃない(起動時間、無駄なリソースの利用)
● コンテナ技術の登場
○ Immutable Infrastructure (Infrastructure as Code)
○ 軽量でシンプル
○ Portability, Agilityの向上
Dockerコンテナを利用する背景
5
Mobility Technologies Co., Ltd.
● 「アプリケーションバイナリ + 周辺の実行環境」をコンテナイメージとして固める
● 作成したコンテナイメージをもとに起動するため、基本的にどこでも同じように実行
される
e.g. Ubuntu 22.04 + Nginx server, Alpine 3.15+ Go application
● 軽量でシンプル・高速起動・低オーバーヘッド・可搬性・Immutable
Infrastructure
Dockerコンテナとは
6
FROM golang:1.19.0-alpine3.15
COPY main.go ./
RUN go build ./main.go -o main
ENTRYPOINT [“main”, “--args”, “$ARG;”]
Mobility Technologies Co., Ltd.
Dockerの問題点
7
Orchestrationツール無しでDockerを本番環境で導入するにはハードルが高い
これらの問題点を解決するのがKubernetes
Mobility Technologies Co., Ltd.
● コンテナをいい感じに起動させるオープンソースのコンテナオーケストレータ
● Google社内で利用されていたBorgが元になっている
● Docker swarm等の他のツールもあったが、現在はk8sがデファクトスタンダード
● CNCFによってホスティングされている
Kubernetesとは
8
・複数Dockerホストの管理
・コンテナのスケジューリング
・Autoscaling
・Rolling Update
・コンテナの死活監視
・障害時のセルフヒーリング
・Load Balancing
・データや機密情報の管理
同じようなことをk8sを利用せずに0から作るのは大変
Mobility Technologies Co., Ltd.
Serverless vs Kubernetes
9
Mobility Technologies Co., Ltd.
Cloud FunctionsやApp Engine
● コンテナベースではないので、local開発でエミューレータが必要
● スケールしてくると結構大変
● コードだけでなく、Managed Service側も熟知する必要あり
● 言語の種類やバージョンが限定、他にも色々制約あり
Cloud Run
● GUIベースが前提
● Terraformで管理しようとすると逆に大変
● 少人数でスモールスタートするにはいい選択肢
● 最近は解消されてきているが、色々制約もある
Serverless vs Kubernetes
10
Mobility Technologies Co., Ltd.
● クラウドネイティブコンピューティング技術を推奨する非営利団体
● 「コンテナ技術の推進」と「テクノロジー業界」との足並みを揃えることを目的
● The Linux Foundationのサブプロジェクト
Cloud Native Computing Foundation(CNCF)
11
Mobility Technologies Co., Ltd.
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近
代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するため
の能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロ
サービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。
これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 こ
れらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力
で頻繁かつ予測どおりに行うことができます。
Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシス
テムを育成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパ
ターンを民主化し、これらのイノベーションを誰もが利用できるようにします。
Cloud Nativeとは
12
参考: https://github.com/cncf/toc/blob/main/DEFINITION.md
Mobility Technologies Co., Ltd.
● リソース効率の向上により、少ないサーバーで同じ数のサービスが実行可能
● より高い開発スピードが実現可能となり、低リスクで迅速なサービス改善
● マルチクラウドとハイブリッドクラウドの実現
Cloud Nativeのメリット
13
・疎結合なシステム
・回復性がある
・管理しやすい
・過観測である
・堅牢な自動化により、最小限の労力で
頻繁かつ期待通りに変更が可能
Mobility Technologies Co., Ltd.
1. コンテナ化
2. CI/CD
3. オーケストレーション&アプリケーション定義
4. 過観測性&分析
5. サービスプロキシ、ディスカバリ&メッシュ
6. ネットワーク、ポリシー&セキュリティ
7. 分散データベース&分散ストレージ
8. ストリーミング&メッセージング
9. コンテナレジストリ&ランタイム
10. ソフトウェアディストリビューション
Cloud Nativeになるためのステップ
14
すべて対応する必要はなく、状況に応じて適時対応すれば良い
Mobility Technologies Co., Ltd.
● サービス提供を迅速に一貫した環境で行うためにコンテナ技術に注目が集ま
る
● そのコンテナの管理にKubernetesが利用される
● 組織のフェーズによって、Serverlessとは棲み分け
● Cloud Nativeな状態を目指し、その選択肢の一つがKubernetes
まとめ
15
Mobility Technologies Co., Ltd.
Kubernetesのアーキテクチャ
02
16
Mobility Technologies Co., Ltd.
● アプリケーション間でOSを共有
● 他のプロセスからは隔離されたプロセス実行環境
コンテナ開発のメリット(おさらい)
17
Mobility Technologies Co., Ltd.
● Cluster:Nodeの集合
● Node:コンテナのデプロイ先VM
○ Master NodeとWorker Nodeから構成される
● Pod:デプロイの最小単位
○ コンテナ間でIPやVolumeを共有
Cluster/Node/Pod
18
Mobility Technologies Co., Ltd.
● Master Node:クラスタ内のPodを管理
● Worker Node:コンテナ化されたアプリケーションPodを実行
Master Node/Worker Node
19
Master Node Worker Node
Mobility Technologies Co., Ltd.
● kube-apiserver
○ APIエンドポイントとして機能
● kube-controller-manager
○ 各種コントローラを制御
● kube-scheduler
○ コンテナのスケジューリング
● etcd
○ k8sクラスタの構成情報を格納するKVS
Master Node
20
Mobility Technologies Co., Ltd.
● kubelet
○ Podの起動・監視
● kube-proxy
○ Serviceの仮想IPへのアクセスをPodに
転送
Worker Node
21
Mobility Technologies Co., Ltd.
Kubernetesの
主要コンポーネント
03
22
Mobility Technologies Co., Ltd.
Pod
● デプロイできる最小のコンピューティングユニット
● Pod単体で利用することはほぼない
● 複数Podの管理ができ、Pod障害時の自動復旧が可能なコンテナコントロー
ラーを利用する
○ Deployment, StatefulSet, DaemonSetなど
ワークロード(1/2)
23
Mobility Technologies Co., Ltd.
Deployment
● 理想的なコンピューティングユニットの状態を定義
○ レプリカ数、リソース設定値(CPU/Memory)
○ その状態に合わせてPodが増減
● Deployment更新時にはロールアウトが実行
○ ロールアウト時のPodの稼働状況なども指定可能
○ 障害時には過去のリビジョンにロールバックできる
ワークロード(2/2)
24
Mobility Technologies Co., Ltd.
Service
● サービスディスカバリ
○ Podへのアクセス手段を提供
● Serviceのタイプ
○ ClusterIP:複数のPodを紐付けるクラスタ内仮想IPで公開
○ NodePort:ClusterIPをNode上の静的なポートで公開
○ LoadBalancer:クラウドLBを使用してServiceを外部に公開
○ ExternalName:指定されたコンテンツとSeviceを紐付ける
外部からのアクセス(1/2)
25
Mobility Technologies Co., Ltd.
Ingress
● 内部Serviceへの外部アクセスを管理する
○ 負荷分散、SSL、名前ベースの仮想ホスティングを提供
外部からのアクセス(2/2)
26
Mobility Technologies Co., Ltd.
Volume
● 外部リソースをコンテナにマウント
● Volumeのタイプ
○ emptyDir Volume:Node上に領域を確保、Podが削除されると廃棄
○ Persistent Volume:ネットワークストレージと接続、永続化
• GCE永続ディスクやAWS EBSなどとも接続可
ストレージ(1/1)
27
Mobility Technologies Co., Ltd.
ConfigMap
● 機密性のないデータをキーと値のペアで保存する
● ローカルやクラウドごとに差異がある環境変数の管理などで利用
● プレーンテキストで格納される
Secret
● 機密性のあるデータをキーと値のペアで保存する
● base64エンコードで格納される
● ともに環境変数や、Volumeマウントして利用できる
設定(1/1)
28
Mobility Technologies Co., Ltd.
まとめ
04
29
Mobility Technologies Co., Ltd.
Kubernetesのメリット
● これまでのインフラ課題はKubernetes導入によって解決できる
Kubernetesの各用語
● 主要なアーキテクチャとコンポーネントについてまとめた
まとめ
30
confidential
文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。
Mobility Technologies Co., Ltd.
31

Kubernetes超入門

  • 1.
    Mobility Technologies Co.,Ltd. MLエンジニアリンググループ 鈴木 隆史 Kubernetes超入門
  • 2.
    Mobility Technologies Co.,Ltd. ● Kubernetesが必要になった背景 ● Kubernetesのアーキテクチャ ● Kubernetesの主要コンポーネント 今日話すこと 2
  • 3.
    Mobility Technologies Co.,Ltd. Kubernetesが 必要になった背景 01 3
  • 4.
    Mobility Technologies Co.,Ltd. クラウド業界を取り巻くインフラの遷移 4
  • 5.
    Mobility Technologies Co.,Ltd. ● 物理マシンは調達から運用までが大変 ● 仮想マシンもお手軽じゃない(起動時間、無駄なリソースの利用) ● コンテナ技術の登場 ○ Immutable Infrastructure (Infrastructure as Code) ○ 軽量でシンプル ○ Portability, Agilityの向上 Dockerコンテナを利用する背景 5
  • 6.
    Mobility Technologies Co.,Ltd. ● 「アプリケーションバイナリ + 周辺の実行環境」をコンテナイメージとして固める ● 作成したコンテナイメージをもとに起動するため、基本的にどこでも同じように実行 される e.g. Ubuntu 22.04 + Nginx server, Alpine 3.15+ Go application ● 軽量でシンプル・高速起動・低オーバーヘッド・可搬性・Immutable Infrastructure Dockerコンテナとは 6 FROM golang:1.19.0-alpine3.15 COPY main.go ./ RUN go build ./main.go -o main ENTRYPOINT [“main”, “--args”, “$ARG;”]
  • 7.
    Mobility Technologies Co.,Ltd. Dockerの問題点 7 Orchestrationツール無しでDockerを本番環境で導入するにはハードルが高い これらの問題点を解決するのがKubernetes
  • 8.
    Mobility Technologies Co.,Ltd. ● コンテナをいい感じに起動させるオープンソースのコンテナオーケストレータ ● Google社内で利用されていたBorgが元になっている ● Docker swarm等の他のツールもあったが、現在はk8sがデファクトスタンダード ● CNCFによってホスティングされている Kubernetesとは 8 ・複数Dockerホストの管理 ・コンテナのスケジューリング ・Autoscaling ・Rolling Update ・コンテナの死活監視 ・障害時のセルフヒーリング ・Load Balancing ・データや機密情報の管理 同じようなことをk8sを利用せずに0から作るのは大変
  • 9.
    Mobility Technologies Co.,Ltd. Serverless vs Kubernetes 9
  • 10.
    Mobility Technologies Co.,Ltd. Cloud FunctionsやApp Engine ● コンテナベースではないので、local開発でエミューレータが必要 ● スケールしてくると結構大変 ● コードだけでなく、Managed Service側も熟知する必要あり ● 言語の種類やバージョンが限定、他にも色々制約あり Cloud Run ● GUIベースが前提 ● Terraformで管理しようとすると逆に大変 ● 少人数でスモールスタートするにはいい選択肢 ● 最近は解消されてきているが、色々制約もある Serverless vs Kubernetes 10
  • 11.
    Mobility Technologies Co.,Ltd. ● クラウドネイティブコンピューティング技術を推奨する非営利団体 ● 「コンテナ技術の推進」と「テクノロジー業界」との足並みを揃えることを目的 ● The Linux Foundationのサブプロジェクト Cloud Native Computing Foundation(CNCF) 11
  • 12.
    Mobility Technologies Co.,Ltd. クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近 代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するため の能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロ サービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 こ れらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力 で頻繁かつ予測どおりに行うことができます。 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシス テムを育成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパ ターンを民主化し、これらのイノベーションを誰もが利用できるようにします。 Cloud Nativeとは 12 参考: https://github.com/cncf/toc/blob/main/DEFINITION.md
  • 13.
    Mobility Technologies Co.,Ltd. ● リソース効率の向上により、少ないサーバーで同じ数のサービスが実行可能 ● より高い開発スピードが実現可能となり、低リスクで迅速なサービス改善 ● マルチクラウドとハイブリッドクラウドの実現 Cloud Nativeのメリット 13 ・疎結合なシステム ・回復性がある ・管理しやすい ・過観測である ・堅牢な自動化により、最小限の労力で 頻繁かつ期待通りに変更が可能
  • 14.
    Mobility Technologies Co.,Ltd. 1. コンテナ化 2. CI/CD 3. オーケストレーション&アプリケーション定義 4. 過観測性&分析 5. サービスプロキシ、ディスカバリ&メッシュ 6. ネットワーク、ポリシー&セキュリティ 7. 分散データベース&分散ストレージ 8. ストリーミング&メッセージング 9. コンテナレジストリ&ランタイム 10. ソフトウェアディストリビューション Cloud Nativeになるためのステップ 14 すべて対応する必要はなく、状況に応じて適時対応すれば良い
  • 15.
    Mobility Technologies Co.,Ltd. ● サービス提供を迅速に一貫した環境で行うためにコンテナ技術に注目が集ま る ● そのコンテナの管理にKubernetesが利用される ● 組織のフェーズによって、Serverlessとは棲み分け ● Cloud Nativeな状態を目指し、その選択肢の一つがKubernetes まとめ 15
  • 16.
    Mobility Technologies Co.,Ltd. Kubernetesのアーキテクチャ 02 16
  • 17.
    Mobility Technologies Co.,Ltd. ● アプリケーション間でOSを共有 ● 他のプロセスからは隔離されたプロセス実行環境 コンテナ開発のメリット(おさらい) 17
  • 18.
    Mobility Technologies Co.,Ltd. ● Cluster:Nodeの集合 ● Node:コンテナのデプロイ先VM ○ Master NodeとWorker Nodeから構成される ● Pod:デプロイの最小単位 ○ コンテナ間でIPやVolumeを共有 Cluster/Node/Pod 18
  • 19.
    Mobility Technologies Co.,Ltd. ● Master Node:クラスタ内のPodを管理 ● Worker Node:コンテナ化されたアプリケーションPodを実行 Master Node/Worker Node 19 Master Node Worker Node
  • 20.
    Mobility Technologies Co.,Ltd. ● kube-apiserver ○ APIエンドポイントとして機能 ● kube-controller-manager ○ 各種コントローラを制御 ● kube-scheduler ○ コンテナのスケジューリング ● etcd ○ k8sクラスタの構成情報を格納するKVS Master Node 20
  • 21.
    Mobility Technologies Co.,Ltd. ● kubelet ○ Podの起動・監視 ● kube-proxy ○ Serviceの仮想IPへのアクセスをPodに 転送 Worker Node 21
  • 22.
    Mobility Technologies Co.,Ltd. Kubernetesの 主要コンポーネント 03 22
  • 23.
    Mobility Technologies Co.,Ltd. Pod ● デプロイできる最小のコンピューティングユニット ● Pod単体で利用することはほぼない ● 複数Podの管理ができ、Pod障害時の自動復旧が可能なコンテナコントロー ラーを利用する ○ Deployment, StatefulSet, DaemonSetなど ワークロード(1/2) 23
  • 24.
    Mobility Technologies Co.,Ltd. Deployment ● 理想的なコンピューティングユニットの状態を定義 ○ レプリカ数、リソース設定値(CPU/Memory) ○ その状態に合わせてPodが増減 ● Deployment更新時にはロールアウトが実行 ○ ロールアウト時のPodの稼働状況なども指定可能 ○ 障害時には過去のリビジョンにロールバックできる ワークロード(2/2) 24
  • 25.
    Mobility Technologies Co.,Ltd. Service ● サービスディスカバリ ○ Podへのアクセス手段を提供 ● Serviceのタイプ ○ ClusterIP:複数のPodを紐付けるクラスタ内仮想IPで公開 ○ NodePort:ClusterIPをNode上の静的なポートで公開 ○ LoadBalancer:クラウドLBを使用してServiceを外部に公開 ○ ExternalName:指定されたコンテンツとSeviceを紐付ける 外部からのアクセス(1/2) 25
  • 26.
    Mobility Technologies Co.,Ltd. Ingress ● 内部Serviceへの外部アクセスを管理する ○ 負荷分散、SSL、名前ベースの仮想ホスティングを提供 外部からのアクセス(2/2) 26
  • 27.
    Mobility Technologies Co.,Ltd. Volume ● 外部リソースをコンテナにマウント ● Volumeのタイプ ○ emptyDir Volume:Node上に領域を確保、Podが削除されると廃棄 ○ Persistent Volume:ネットワークストレージと接続、永続化 • GCE永続ディスクやAWS EBSなどとも接続可 ストレージ(1/1) 27
  • 28.
    Mobility Technologies Co.,Ltd. ConfigMap ● 機密性のないデータをキーと値のペアで保存する ● ローカルやクラウドごとに差異がある環境変数の管理などで利用 ● プレーンテキストで格納される Secret ● 機密性のあるデータをキーと値のペアで保存する ● base64エンコードで格納される ● ともに環境変数や、Volumeマウントして利用できる 設定(1/1) 28
  • 29.
    Mobility Technologies Co.,Ltd. まとめ 04 29
  • 30.
    Mobility Technologies Co.,Ltd. Kubernetesのメリット ● これまでのインフラ課題はKubernetes導入によって解決できる Kubernetesの各用語 ● 主要なアーキテクチャとコンポーネントについてまとめた まとめ 30
  • 31.