Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
コンテナ勉強会
世良泰明
January 25, 2023
Technology
0
26
コンテナ勉強会
とある勉強会の資料
世良泰明
January 25, 2023
Tweet
Share
More Decks by 世良泰明
See All by 世良泰明
小江戸らぐ kubernetesクラスターを再構築した話
y_sera15
0
42
小江戸らぐ 自宅にkubernetesクラスターを構築した話
y_sera15
0
3
Other Decks in Technology
See All in Technology
メドレー エンジニア採用資料/ Medley Engineer Guide
medley
3
5.1k
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
880
エアドロップ for オープンソースプロジェクト
epicsdao
0
390
Cloudflare Workersで動くOG画像生成器
aiji42
1
490
Raspberry Pi Camera 3 介紹
piepie_tw
PRO
0
150
NGINXENG JP#2 - 1-NGINX-エンジニアリング勉強会-きょうの見どころ
hiropo20
0
110
AWS Cloud Forensics & Incident Response
e11i0t_4lders0n
0
360
2年で10→70人へ! スタートアップの 情報セキュリティ課題と施策
miekobayashi
1
630
AWS re:Invent 2022で発表された新機能を試してみた ~Cloud OperationとSecurity~ / New Cloud Operation and Security Features Announced at AWS reInvent 2022
yuj1osm
1
210
IoTを始めたきっかけの話と個人でできるIoTの今後 / 新年LT会「私の愛するIoT 2023」
you
0
230
OpenShiftクラスターのアップグレード自動化への挑戦! / OpenShift Cluster Upgrade Automation
skitamura7446
0
150
「一通りできるようになった」その先の話
hitomi___kt
0
120
Featured
See All Featured
Side Projects
sachag
451
37k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
175
9.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
22
1.4k
How to name files
jennybc
47
73k
A Philosophy of Restraint
colly
193
15k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
239
19k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
11k
Music & Morning Musume
bryan
37
4.6k
Atom: Resistance is Futile
akmur
256
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
254
12k
Navigating Team Friction
lara
177
12k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
Transcript
コンテナ勉強会 2023/1/25 とある勉強会用資料 世良泰明
目次 1. はじめに 2. コンテナオーケストレータとは 3. Kubernetes 3.1 概要 3.2
Kubernetesのノード 3.3 Kubernetesリソース 3.4 コンテナ間ネットワーク 3.5 デプロイ方法 4. Openshift 4.1 概要 5. AWSにおけるコンテナオーケストレーション 5.1 ECS 5.2 EKS 5.3 データプレーン 5.4 組み合わせ比較 6. まとめ
1.はじめに 本資料では、AWS上でコンテナを稼働させることを念頭に 以下について最低限の概要を抑える ・Kubernetes ・Openshift ・AWSにおけるコンテナオーケストレーション 今回扱うもの Amazon Elastic Kubernetes
Service (Amazon EKS) Amazon Elastic Container Service (Amazon ECS) Red Hat OpenShift Service On AWS
2.コンテナオーケストレータとは コンテナを安定運用するためのサービス ・配置管理 ・負荷分散 ・状態監視と自動復旧 ・デプロイ このあたりを自動化, 管理しやすくしてくれる
3 Kubernetes Kubernetes
3.1 概要: Kubernetesとは 代表的なコンテナオーケストレーションツール 2014年にGoogleからOSS化. 現在はCNCF(Cloud Native Conputing Foundation)が管理している. k8sと略されることもある.
特徴 ・複数のコンポーネントで構成されている.(DNS, Api-server, schedularなど) ・宣言型でリソースを定義. できること ・サービスディスカバリーと負荷分散 ・自動化されたロールアウト・ロールバック ・自己修復 ・機密情報と構成管理 など
3.2 Kuberntesのノード Kubernetesでは2種類のノード(マシン)によって構成される ・コントロールプレーンノード(マスターノード) ・ワーカーノード アイコン https://github.com/kubernetes/community https://github.com/kubernetes/kubernetes/tree/master/logo コントロールプレーンノード(マスターノード) ワーカーノード
クラスター/各リソースを管理するためのノード 内部DNS, Api-server, スケジューラなどが動作している コンテナ(Pod)を稼働させるためのノード Kubernetesクラスター ワーカーノード マスターノード
参考: Kuberntesのコンポーネント https://kubernetes.io/ja/docs/concepts/overview/components/ ワーカーノード マスターノード (複数台で 冗長構成) Kubernetesでは2種類のノード(マシン)によって構成される ・コントロールプレーンノード(マスターノード) ・ワーカーノード
3.3 Kubernetesリソース リソース: kubernetes上の抽象化されたオブジェクト 1. コンテナ実行に関わるリソース ・Pod ・Replicaset ・Deployment など
2. コンテナのエンドポイント提供/サービスディスカバリを提供するリソース ⇒ ネットワーク周りをいい感じにしてリソースに繋げられるようにする ・Service(=L4) ・Ingress(=L7) 他にもあるが今回はここまで
コンテナ実行に関わるリソース Pod ・アプリケーションの最小単位. ・1つのPodにつき1つIPアドレスが付与される. ・利用イメージ, CPU, メモリ等定義. ・システム上ではラベルによって区別がされる. Podの定義(sample-pod.yaml) apiVersion:
v1 kind: Pod metadata: name: sample-pod1 labels: system: a spec: containers: - name: nginx-container image: nginx:1.16 コンテナ NIC コンテナ NIC サイドカー コンテナ 基本は1Pod1コンテナ. ログ出力やサービスメッシュ等でサイドカーコンテナ等を利用することもある.
コンテナ実行に関わるリソース ReplicaSet Podの上位概念. ・Podのレプリカを作成し, 指定した数のPodを維持し続けるリソース ・Podが壊れたら自動で立ち上げ直してくれる. ReplicaSetの定義(sample-rs.yaml) worker node 例:
Pod3つ複製 worker node worker node ReplicaSet apiVersion: apps/v1 kind: ReplicaSet metadata: name: sample-rs spec: replicas: 3 selector: matchLabels: app: sample-app template: metadata: labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.16
コンテナ実行に関わるリソース Deployment ReplicaSetの上位概念. ・ReplicaSetを管理することで, ローリングアップデートやロールバックなどを実現. 段階的に置き換え 旧ReplicaSet apiVersion: apps/v1 kind:
Deployment metadata: name: sample-deployment spec: replicas: 3 selector: matchLabels: app: sample-app template: metadata: labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.16 Deploymentの定義(sample-deployment.yaml) 新ReplicaSet ③ ② ① コンテナ実行系のリソース Pod < ReplicaSet < Deployment
3.4 Kubernetes コンテナ間ネットワーク ・各ノードのネットワーク 192.168.100.0/24 ・コンテナの世界のネットワーク 10.0.0.0/8 worker3 worker1 worker2
192.168.100.0/24 192.168.100.34 192.168.100.66 192.168.100.98 kubernetesは2つの層のネットワークがある 10.0.0.0/8 Serviceリソース ・コンテナネットワークでPodを負荷分散 ・ノードのネットワークとの橋渡し 等をしてくれる
3.5 Kubernetes デプロイ方法 1. yamlマニフェストファイルを適用 kubectl applyコマンドで適用. 2. Helmを使う ⇒
パッケージマネージャーHelmでお手軽に導入 kubectl apply -f sample-pod.yaml helm add http://xxxx.xxx helm update helm install xxx yum, aptコマンドみたいな感じ リソース削除するときはkubectl delete
4. Openshift Openshift
4.1 Openshift 概要 RedHat社により提供されるKubernetes互換のコンテナオーケストレーター 特徴 ・Kubernetesの上位互換 ・RedHatによるサポートがつく ・コミュニティ版としてOKD(https://www.okd.io/)が存在. Kubernetesとの違い ・インフラノードの存在
・オペレータによるデプロイ ・GUI操作が可能
Openshift デプロイ方法 3種類ある 1. yamlマニフェストファイルを適用 ⇒ 一番愚直な方法 2. Helmを使う ⇒
パッケージマネージャーHelmでお手軽に導入 3. OperatorHubの利用 ⇒ 独自に定義された拡張リソースとして作成, 管理を行う
5. AWSにおけるコンテナオーケストレーション AWSにおけるコンテナオーケストレーション
5.1 AWSにおけるコンテナオーケストレーション コンテナオーケストレーション ・ECS ・EKS ・ROSA Amazon Elastic Kubernetes Service
(Amazon EKS) Amazon Elastic Container Service (Amazon ECS) Red Hat OpenShift Service On AWS 今回はこちらの2つについて主に解説する
ECS AWS独自のマネージドなコントロールプレーン Elastic Container Service 複数の構成要素 ・タスク ・サービス ・クラスター タスク<
サービス < クラスター タスク コンテナ タスク コンテナ サービス タスク コンテナ サービス ECSクラスター https://docs.aws.amazon.com/ja_jp/AmazonECS/ latest/developerguide/Welcome.html
ECS タスク定義 ・コンテナが動作するコンポーネント ・1つ以上のコンテナから構成されるアプリ実行単位 タスク コンテナ タスク コンテナ サービス タスク
コンテナ サービス ECSクラスター タスク ・タスクを作成するテンプレート定義. ・ 実行するイメージ, CPU, メモリ, IAMロール等を定義 ・JSONで書かれる
ECS ・指定した数だけタスクを維持するスケジューラ ・タスク数, ロードバランサ, ネットワークを指定 ・タスク数が減ればタスク定義から自動で復旧 タスク コンテナ タスク コンテナ
サービス タスク コンテナ サービス ECSクラスター サービス
ECS ・サービスとタスクを実行する論理グループ ・クラスター単位でアプリケーションを分離できる. タスク コンテナ タスク コンテナ サービス タスク コンテナ
サービス ECSクラスター クラスター
ECS AWS独自のマネージドなコントロールプレーン ECS タスク< サービス < ECSクラスター タスク コンテナ タスク
コンテナ サービス タスク コンテナ サービス ECSクラスター
EKS Kubernetesベースのマネージドなコントロールプレーン EKS EKSクラスター EKSコントロールプレーン ※EKSはコントロールプレーンを指す場合と, マネージドサービス全体を指す場合があるので要注意 https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/what-is-eks.html
AWS データプレーン: Fargate, EC2 AWSフルマネージドなデータプレーン Fargate 仮想インスタンス EC2 ・仮想マシン ・スケールにやや難あり(垂直が難しい)
・起動は早い ・オーバーレイネットワークを利用 ・料金はインスタンスサイズ次第 ・運用コストがかかる(OSアプデ, 監視など) ・コンテナ稼働用のサーバレスサービス ・スケールしてくれる ・起動は遅め ・1タスク(1Pod)あたり1つのENI ・やや料金高め ・ホスト管理が不要
AWSにおけるコンテナオーケストレーション コントロールプレーンとデータプレーンの組み合わせ コントロールプレーン ・ECS ・EKS データプレーン ・EC2 ・Fargate EKS ECS
Fargate EC2 4通りの組み合わせ コントロールプレーン データプレーン
AWSにおけるコンテナオーケストレーション コントロールプレーンとデータプレーンの組み合わせ メリデメ比較 時間切れ
6. まとめ AWSを念頭に, コンテナオーケストレーションサービスの概要を学んだ ・Kubernetes ・Openshift ・AWSにおけるコンテナオーケストレーション 押さえておいてほしいこと ・コントロールプレーンとデータプレーンがなんとなくわかる ・K8s,
ECSの構成要素(リソース)をそれぞれ理解していること k8s: Pod, Replicaset, Deployment ECS: タスク, サービス, クラスター
参考文献 1. AWSコンテナ設計・構築[本格]入門 株式会社野村総合研究所 新井雅也, 馬勝淳史 著 NRIネットコム株式会社 佐々木拓郎 監修
2. Kubernetes完全ガイド 第2版 青山真也 3. Openshift徹底入門 株式会社リアルグローブ・オートメーティッド 青山秀治 レッドハット株式会社 森真也, 清水護, 織学, 宇都宮卓也, 斎藤和史, 野間亮志, 荒木俊博 著 レッドハット株式会社 須江信洋 監修