Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する
Search
iret.kumoben
June 09, 2023
Technology
0
110
第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する
下記、勉強会での資料です。
https://youtu.be/LkEbn5rHE1U
iret.kumoben
June 09, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第166回 雲勉 コードを読んで理解する AWS Amplify Gen2 Backend
iret
0
18
第165回 雲勉 Google Agentspace について
iret
0
19
第164回 雲勉 Agent Development Kit と MCP Toolbox for Databases で MCP 連携してみた
iret
1
40
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
iret
1
35
第162回 雲勉 比較して学ぶ AWS Amplify Gen 2
iret
0
49
第161回 雲勉 Amazon Kinesis Data Streams と Amazon Data Firehose を使ってみよう
iret
0
47
第160回 雲勉 それ、AWS Step Functions で置き換えれん?
iret
0
69
第159回 雲勉 Amazon Bedrock でブラウザを操作する AI エージェントを作ってみた
iret
0
83
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
iret
0
71
Other Decks in Technology
See All in Technology
Welcome to the LLM Club
koic
0
170
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
310
AIのAIによるAIのための出力評価と改善
chocoyama
2
550
なぜ私はいま、ここにいるのか? #もがく中堅デザイナー #プロダクトデザイナー
bengo4com
0
410
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
230
Liquid Glass革新とSwiftUI/UIKit進化
fumiyasac0921
0
210
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
170
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
330
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
160
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
16
5.5k
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
110
Fabric + Databricks 2025.6 の最新情報ピックアップ
ryomaru0825
1
140
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Designing for humans not robots
tammielis
253
25k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Writing Fast Ruby
sferik
628
61k
Fireside Chat
paigeccino
37
3.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Building an army of robots
kneath
306
45k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
We Have a Design System, Now What?
morganepeng
53
7.7k
Embracing the Ebb and Flow
colly
86
4.7k
Side Projects
sachag
455
42k
Transcript
2023/06/08 Amazon EKSとコンポーネントの基礎を理解する 第105回雲勉【オンライン】 アイレット株式会社
満村 雄⼆(みつむら ゆうじ) 1 ⾃⼰紹介 @Chanmitsu_sys l アイレット株式会社 l クラウドインテグレーション事業部
第⼆構築セクション所属 l 2022/2023 APN ALL AWS Certifications Engineer l 他にはGoogle Cloud 11冠、CKA、CKADなどを保有
2 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)
3. Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
3 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)
3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
4 本資料の⽬的 主な⽬的 l KubernetesとAmazon EKSの基礎を理解する︕ l サービスに対する興味を持ってもらう︕ 当資料で説明しないこと l
Amazon EKSのクラスター作成⼿順および細かい仕様 l マニフェストの効率の良い書き⽅ l ⾮機能関連の話 l ハンズオン あくまで初学者や久しぶりに振り返りたい⽅を対象とした講義となります
5 当資料の登場⼈物 名前︓みつお l 講師役 l さわだ、はやぶさの2名に Amazon EKSとKubernetesを教える 名前︓さわだ
l ベテランのインフラエンジニア l オンプレ経験が⻑く部内でも頼られている l 最近コンテナを使う案件が増えてきており 学習する取っ掛かりが欲しい 名前︓はやぶさ l 猛禽類系インフラエンジニア l 技術に対する好奇⼼が強い l 元々、Kubernetesに知⾒はあるが 今回、みつおの講義の様⼦を⾒にきた
6 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)
3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
7 Amazon EKSとは︖ l Amazon Elastic Kubernetes Service l AWSのコンテナオーケストレーションサービス
l Kubernetesのコントロールプレーンをマネージドに利⽤出来る l Kubernetesのワークロードを始めとする様々なリソースが利⽤出来る l AWSサービスとの親和性がある
8 Kubernetesとは︖ l コンテナ化されたアプリケーションを管理するプラットフォーム l コンテナオーケストレーションサービスにおけるデファクトスタンダード (公的に認めれてはいないが市場において「事実上の標準」としてみなされているもの) l Google社内で開発された「Borg」が元にして開発されたオープンソースソフトウェア
9 ⼀旦待って︖ コンテナオーケストレー ションサービス︖︖︖ コントロールプレーン︖︖︖︖ ワークロード︖︖︖︖ まずはコンテナオーケストレーションから 解説します
10 コンテナオーケストレーションとは︖ l IT⽤語でオーケストレーションは「システム、ソフトウェア、サービスの構築、運⽤管理を⾃動化すること」 l コンテナのデプロイ、スケーリング、起動台数の維持、監視などコンテナを利⽤する上で必要なオペレーション を⾃動化する 参考 第84回 雲勉【オンライン︓初⼼者向け】ECS⼊⾨
~ CloudFront + ELB + ECS FargateでWebサイトを公開 https://www.youtube.com/watch?v=0NR8SiYvNCI&list=PLfVXgDfPNYAGkvyskxFa_X0TcQxdbAeVX&index=25 Orchestrating the containers https://docs.aws.amazon.com/prescriptive-guidance/latest/container-platform-management/orchestrate-containers.html つまりですね・・・ 要するに︖
11 コンテナオーケストレーションとは︖ 要するにいい感じにやってくれる︕︕︕
12 コントロールプレーンとは︖ l クラスタ内にあるワーカーノードや、コンテナ情報を管理するためのノードのこと l マスターノードはレガシーな呼び⽅ 参考 Kubernetesコンセプト https://kubernetes.io /ja
/docs /concepts / いい質問ですね︕ コントロールプレーンは クラスタとワーカーノードと どう関係してるんですか︖
13 クラスタ、コントロールプレーン、ワーカーノードの関係性 EKSクラスターの中に コントロールプレーンとワーカーノードがある︕ ちなみに「ノード」はサーバ、マシン と同義で考えて良いと思います と⾔うわけで、次スライドで もう⼀度整理してみます
14 クラスタ、コントロールプレーン、ワーカーノードの関係性 項⽬ 詳細 EKSクラスター ・コンテナオーケストレーション環境の単位 ・クラスター内にコントロールプレーンとワーカーノードを含む コントロールプレーン ・コンテナ環境を管理するノード ・クラスタ毎に固有に作成される
・3つのAZにまたがって配置される ・クラスター内のKubernetesオブジェクトの状態を保持する ・クライアントからのコマンドや設定ファイルを受け取り、 APIアクションを呼び出し、コンテナのデプロイや更新を⾏う ワーカーノード ・実際にコンテナが起動するノード ・コントロールプレーンからの指⽰を受けてノード上にコンテナを起動させる ・ワーカーノードとしてEC2またはFargateを選択可能 いかがでしょ︖ イメージ出来ました︕︖ あざす︕
15 もう少しだけ深掘りしてみる︖ 細かい話ですが、 コントロールプレーンとワーカーノードは 他のAWSサービスと組み合わせて構成され てますよね ですね、それじゃあ 簡単に紹介しておこう
16 詳細アーキテクチャ コントロールプレーンはAWSが管理する VPC上に配置される
17 ⼀旦・・・まとめ l Amazon Elastic Kubernetes Service(Amazon EKS)はKubernetesベースの コンテナオーケストレーションサービスである l
EKSクラスターはコントロールプレーンとワーカーノードの2つで構成される l コントロールプレーンはワーカーノードやコンテナの構成情報を管理するノードのこと l ワーカーノードは実際にコンテナが起動するノードのこと 思ったより構成は簡単ですね︕
18 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)
3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
19 ワークロードとは︖ l Kubernetes上で実⾏するアプリケーションの事で以下のようなリソースを指す ・Pod ・ReplicaSet ・Deployment ・DaemonSet ・Job など
これらのリソース単位でワーカー ノードにデプロイされます
20 各リソースの説明に⼊る前に リソースの話に⼊る前に デプロイ⽅法伝えておいた⽅が 理解進むかもですね ハヤブサだけに鋭いですね kubectlコマンドを使いリソース情報を yaml(またはjson)形式のファイルで 定義した「マニフェスト」を読み込むこと でデプロイ出来ます
「マニフェスト」は、 CloudFormationでいうところ のテンプレート、 AnsibleでいうPlaybookみた いな物ってことか
21 kubectlとは︖ l Kubernetesクラスター向けのコマンドラインツール l コマンドの構⽂は「kubectl [command] [TYPE] [NAME]」 コマンド構⽂
参考 コマンドラインツール(kubectl) https://kubernetes.io/ja/docs/reference/kubectl/ 項⽬ 詳細 command ・リソースに対して実⾏したいアクション ・apply、get、describe、deleteなど TYPE ・リソースタイプの事 ・pod、replicasets、deploymentなど NAME ・実際のリソース名 ・⼤⽂字、⼩⽂字を区別する ・NAMEが省略された場合は、すべてのリソース詳細が表⽰される リソースタイプは、短縮系が 指定出来たりするので、 リファレンス⾒ながら使って みてね
22 kubectlのコマンド例 参考 コマンドラインツール(kubectl) https://kubernetes.io/ja/docs/reference/kubectl/ 操作例 コマンド実⾏例 すべてのPodの⼀覧を出⼒する kubectl get
pods マニフェスト「mitsuo.yml」の定義を 使⽤してリソースをデプロイする kubectl apply –f mitsuo.yml ノード「mitsuo」の詳細を表⽰する kubectl describe nodes mitsuo 運⽤者のスキルレベルにもよるけど、 オペレーションは統⼀した⽅が いいかもですね 構⽂⾃体がシンプルで分かりやすい 構築時はエイリアスや短縮系 を使ってたけど 運⽤者向けの⼿順では統⼀す るなど⼯夫はしてた
23 気を取り直して では、ワークロードの話をしますね 拝承
24 Podとは︖ l Kubernetes内で作成、管理出来るリソースの最⼩単位 ・1つ、または複数のコンテナのグループを指す ・複数のコンテナを含むPod内で補助的な役割を担うコンテナをサイドカーと呼ぶ ・Podに含まれるコンテナ同⼠は同⼀のIPアドレスを共有する ・Pod内におけるコンテナ間の通信は、localhost宛で通信出来る ECSでいうところの「タスク」ですね
25 Podのマニフェストサンプル(yaml形式) l nginxのコンテナを含むPod1台の場合 なんとなくは読み取れるけど・・・
26 Podのマニフェストサンプル(yaml形式) l nginxのコンテナを含むPod1台の場合 フィールド値 詳細 apiVersion ・どのバージョンのKubernetesAPIを利⽤するか kind ・作成するオブジェクトの種類
・Pod、ReplicaSet、Deploymentなど metadata ・オブジェクトを⼀意に識別するためのメタデータ情報 ・タグの付与やnamespaceなどもここで定義する spec ・オブジェクト毎に定義する詳細情報 ・Podの場合は、コンテナ名、コンテナイメージ、コンテナがリッスン するポートなどを指定する 参考 Kubernetes API https://kubernetes.io/ja/docs/concepts/overview/kubernetes-api/ Kubernetesオブジェクトを理解する https://kubernetes.io/ja/docs/concepts/overview/working-with-objects/kubernetes-objects/ 上記4点がマニフェスト の必須項⽬になります Specの詳細はAPIリファ レンスを参考にしてくだ さい
27 Namespaceとは︖ l Kubernetesのクラスター内で仮想的に分離する機能 ユーザ毎、機能毎に論理的に リソースを分割したい時に使います 例︓アプリケーション⽤コンテナと 監視⽤のコンテナを分割する Namespaceを指定しないリソースは 「default」に作成されます
Namespace単位で分割出来ない リソースも⼀部あったりします
28 ReplicaSetについて 残念ですが、Podリソースだけでは出来ないので、 次に説明するReplicaSetを利⽤します Podについては理解できました︕ これさえ作っておけば、Podの起動台数 を維持してくれるんですか︖
29 ReplicaSetとは︖ l 指定したPod数を複製して、起動台数を維持するリソース l 歴史的経緯によって「ReplicationController」から「ReplicaSet」に変わった Podの理解が出来ていれば ReplicaSetも簡単です 複製、維持・・・ なんだか難しそうですね
30 ReplicaSetのマニフェストサンプル(yaml形式) l nginxのコンテナを含むPod3台の場合 ・ReplicaSetのSpec設定 ・replicas 複製、維持するPodの台数 ・selecter ReplicaSetが所有するPodのラベルを指定 サンプルだと「app:
nginxタグが 付与されているPodを3台起動する」です
31 ReplicaSetのマニフェストサンプル(yaml形式) l nginxのコンテナを含むPod3台の場合 ・ReplicaSetのSpec内で、templateとspecを⾏う ・ templateは、Podに対するmetadataを指定出来る ・サンプルではラベルの付与を⾏っている ・specはPod内のコンテナ情報を定義する ReplicaSetのSpecとPodのSpecは別で
定義してる点がポイントです マニフェストの書き始めはインデント ずれでエラーが起きやすかったりする
32 さわださん何かに気づく︖ すごくいい質問︕︕ 実はワークロードリソースの中でも親⼦関係 になってるんです ん︖︖ KindがReplicaSetなのに、 なぜPodの定義もしているのですか︖
33 ワークロードリソースにおける親⼦関係 l 以下の図のようにリソースに親⼦関係がある l DeploymentがReplicaSetの親リソースであり、ReplicaSetがPodの親リソースである
34 Deploymentについて そうです︕ 次はDeploymentについて説明します ReplicaSetがPodの親リソースなの で、Podの定義も出来るんですね︕ そのReplicaSetの親リソースである Deploymentは何をしてるんだろ︖
35 Deploymentとは︖ l ローリングアップデート、ロールバックを実現するためのリソース l ReplicaSetは直接ローリングアップデートをサポートしない l 複数のReplicaSetを管理することが出来る リソース間の親⼦関係を知っていれば マニフェストがどう書かれるかが
イメージ出来ますわー デプロイするコンテナはアップデート していくはずだから、 必然的にDeploymentリソースを作成 してその中でReplicaSet、podで定義 していくことになりますね
36 Deploymentのマニフェストサンプル(yaml形式) l nginxのコンテナを含むPod3台の場合 バージョンアップの⽅法(Update Strategy)はReplicasetの定義をしている Specの中で指定します デフォルトではRolling Updateです ・KindをDeploymentにして後はReplicaSet、Podの定義をする
また、バージョンアップの⽅法は、 Recreate(⼀度全てのPodを削除してからPodを 再作成する)かRolling Update(Podを順次更新 する)の2種類から選べます Rolling Updateは、不⾜、超過を許容する台数 を指定することが出来ます 3台未満にしないようにしたり、最⼤4台まで 起動させるような設定です
37 その他のワークロードについて リソース名 詳細 DaemonSet ・各ノードにPodを1台ずつ配置するリソース ・Replica Setのように複製する数を指定して、各ノードに複数台Podを配置する事が出来ない ・監視⽤のAgentとして利⽤されるケースがある Job
・ジョブ⽤のリソース ・指定した回数分、処理を実⾏する ・ジョブの実⾏後は終了する CronJob ・指定した時間にJobを作成する StatefulSet ・データベースなどに利⽤されるステートフル(状態維持)なリソース ・Pod名が変わらず、サフィックスが連番で付与されるような形になる ・mitsuo-stateful-0、mitsuo-stateful-1、mitsuo-stateful-2
38 その他のワークロードについて l 前スライドのリソースにも親⼦関係がある どのリソースも⼦リソースは Podになってるんですね︕
39 その他のリソース カテゴリ種別 詳細 Workloads APIs ・コンテナの実⾏に関する当資料で紹介したリソース Service APIs ・システムを外部公開するためのリソース
・L4、L7レイヤのロードバランシング機能などを有する ・Service、Ingressなどがよく利⽤される Config & Storage APIs ・諸設定、機密情報の管理、永続化ボリュームなどのリソース ・ConfigMap、Secret、PersistentVolumeClaim l ワークロード以外にも様々なリソースがある うっ・・・ 頭が︕︕︕︕︕ みつおくん、 外部公開するシステムだと ServiceやIngressはほぼ必須だ し、そこを解説した⽅が良かった んじゃないです︖
40 ワークロードリソースでのまとめ l ワークロードリソースは、コンテナ実⾏に関わる重要なリソース l 代表的なリソースは最⼩単位となるPod、Podを複製し維持する機能を有する ReplicaSet、アップデート、ロールバックに対応するDeploymentなどである l ワークロード以外にもkubernetesを構成するために重要なリソースがある これだけリソース数が多いと
講義だと説明しきれないですね そうなんですよね・・・ リクエストがあれば、もう少し踏み 込んだ内容で登壇してもいいかも
41 最後に いかがだったでしょうか︖ コントロールプレーンがマネージドになったとしても、Kubernetesや拡張機能に関する知識、開発速度が速い ことによるアップデートの追従が必要になるため、⽐較的難易度の⾼いサービスと思います。 今回の講義を通して、Amazon EKSやKubernetesの理解が深まったり、少しでも興味が湧いた⽅がいれば登 壇して良かったなと思います。本⽇はありがとうございました。
42 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)
3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
4 3