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
93
第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する
下記、勉強会での資料です。
https://youtu.be/LkEbn5rHE1U
iret.kumoben
June 09, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
45
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
39
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
84
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
39
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
84
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
200
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
24
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
23
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
44
Other Decks in Technology
See All in Technology
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
380
Lambdaと地方とコミュニティ
miu_crescent
2
370
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
Taming you application's environments
salaboy
0
190
強いチームと開発生産性
onk
PRO
35
11k
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
What's new in Ruby 2.0
geeforr
343
31k
Designing Experiences People Love
moore
138
23k
We Have a Design System, Now What?
morganepeng
50
7.2k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Navigating Team Friction
lara
183
14k
Docker and Python
trallard
40
3.1k
Six Lessons from altMBA
skipperchong
27
3.5k
Faster Mobile Websites
deanohume
305
30k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
KATA
mclloyd
29
14k
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