More Related Content
Similar to Kubernetes超入門 (20)
More from Takashi Suzuki (10)
Kubernetes超入門
- 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;”]
- 8. Mobility Technologies Co., Ltd.
● コンテナをいい感じに起動させるオープンソースのコンテナオーケストレータ
● Google社内で利用されていたBorgが元になっている
● Docker swarm等の他のツールもあったが、現在はk8sがデファクトスタンダード
● CNCFによってホスティングされている
Kubernetesとは
8
・複数Dockerホストの管理
・コンテナのスケジューリング
・Autoscaling
・Rolling Update
・コンテナの死活監視
・障害時のセルフヒーリング
・Load Balancing
・データや機密情報の管理
同じようなことをk8sを利用せずに0から作るのは大変
- 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
- 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
- 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
- 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
- 30. Mobility Technologies Co., Ltd.
Kubernetesのメリット
● これまでのインフラ課題はKubernetes導入によって解決できる
Kubernetesの各用語
● 主要なアーキテクチャとコンポーネントについてまとめた
まとめ
30