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
97
第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する
下記、勉強会での資料です。
https://youtu.be/LkEbn5rHE1U
iret.kumoben
June 09, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第154回 雲勉 AWS Codeシリーズ盛り上げ隊 ~ Codeシリーズは砕けない ~
iret
0
15
第153回 雲勉 トラシューが秒で終わる新機能 Amazon Q Developer operational investigations
iret
0
45
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
41
第151回 雲勉 プロジェクトのドキュメントにおける課題をAmazon Bedrockで解決してみる
iret
0
57
第152回 雲勉 シームレスなマルチリージョンへの移行と検討 ~Amazon EKSとAWS Global Acceleratorを使用した環境〜
iret
0
48
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
82
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
46
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
58
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
70
Other Decks in Technology
See All in Technology
Fintech SREの挑戦 PCI DSS対応をスマートにこなすインフラ戦略/Fintech SRE’s Challenge: Smart Infrastructure Strategies for PCI DSS Compliance
maaaato
0
450
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
100
Kubernetes x k6 で負荷試験基盤を開発して 負荷試験を民主化した話 / Kubernetes x k6
sansan_randd
2
730
Platform Engineeringは自由のめまい
nwiizo
4
1.9k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
1.5k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
22
5.8k
開発者が自律的に AWS Security Hub findings に 対応する仕組みと AWS re:Invent 2024 登壇体験談 / Developers autonomously report AWS Security Hub findings Corresponding mechanism and AWS re:Invent 2024 presentation experience
kaminashi
0
190
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
2
880
MC906491 を見据えた Microsoft Entra Connect アップグレード対応
tamaiyutaro
1
480
7日間でハッキングをはじめる本をはじめてみませんか?_ITエンジニア本大賞2025
nomizone
2
1.4k
TAMとre:Capセキュリティ編 〜拡張脅威検出デモを添えて〜
fujiihda
1
110
RSNA2024振り返り
nanachi
0
500
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Automating Front-end Workflow
addyosmani
1367
200k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
310
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Code Reviewing Like a Champion
maltzj
521
39k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Producing Creativity
orderedlist
PRO
343
39k
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