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
EKS 101
Search
taxin
May 26, 2020
Programming
0
950
EKS 101
taxin
May 26, 2020
Tweet
Share
More Decks by taxin
See All by taxin
監視SaaSの運用におけるObservability改善の歩み
taxin
4
5k
ポストモーテム読書会のすすめ
taxin
1
2.6k
OpenTelemetry実践 はじめの一歩
taxin
0
3.2k
カスタムダッシュボードの活用方法とMackerel開発チームでの実践例
taxin
0
1.7k
SREを「続けていく」あなたへ
taxin
1
360
Cloud runユーザーから見たk8s
taxin
0
900
ローカルk8s環境のススメ / k8s-tools-for-local
taxin
0
1.2k
Other Decks in Programming
See All in Programming
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
730
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
510
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
150
XP, Testing and ninja testing ZOZ5
m_seki
3
630
CSC509 Lecture 06
javiergs
PRO
0
260
株式会社 Sun terras カンパニーデック
sunterras
0
290
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
340
CSC305 Lecture 03
javiergs
PRO
0
240
10年もののAPIサーバーにおけるCI/CDの改善の奮闘
mbook
0
820
Introducing ReActionView: A new ActionView-Compatible ERB Engine @ Kaigi on Rails 2025, Tokyo, Japan
marcoroth
3
1k
Swift Concurrency - 状態監視の罠
objectiveaudio
2
520
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
550
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
GitHub's CSS Performance
jonrohan
1032
470k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Making Projects Easy
brettharned
119
6.4k
A better future with KSS
kneath
239
18k
Docker and Python
trallard
46
3.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
RailsConf 2023
tenderlove
30
1.2k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.9k
Transcript
EKS 101 2020 / 05 / 26 Kubernetes Novice Meetup
@taxin_tt
Who am I ? @taxin_tt • AWS, Python, Kubernetes •
Kubernetes歴: 8ヶ月くらい
Today’s Talk • 話すこと • EKSとは? • クラスタの作成方法 • 作成したクラスタを利用した簡単な検証
(Deploymentの作成) • EKSを使う上で気になる点 +α • 話さないこと • Kubernetesとは? • コンテナとは?
Kubernetesを触ってみたい
What can we use for Practice? • kubeadm • Kind
(Kubernetes in Docker) • Kubernetes Service ◦ AKS (Azure) ◦ EKS (AWS) ◦ GKE (GCP) 弊社のKubernetes Servicesが含まれてないぞ...! という方はTwitterでコメント下さい ;-)
What can we use for Practice? • kubeadm • Kind
(Kubernetes in Docker) • Managed Services ◦ AKS (Azure) ◦ EKS (AWS) ◦ GKE (GCP)
EKSを触ってみよう
その前に...
AWSにおけるコンテナ環境
AWSにおけるコンテナ環境 Control Plane / Data Plane を一種類ずつ組み合わせて環境を用意する Control Plane コンテナを管理する
コンポーネントが稼働する場所 ECS EKS Data Plane ユーザーが作成した コンテナが稼働する場所 EC2 Fargate
AWSにおけるコンテナ環境 Control Plane / Data Plane を一種類ずつ組み合わせて環境を用意する → 他のクラウドベンダーが提供するコンテナサービスと考え方が異なる
Why?
None
ビルディング・ブロック • AWSの一つ一つのサービスをブロックとして 複数のブロックを組み合わせて要件にあったシステムを作るという考え方 ◦ 基盤系サービス:EC2, RDS, S3 ◦ +
アプリケーション関連サービス:CloudFront, SQS/SNS ◦ + 運用系サービス:Cloudwatch, Systems Manager, Codeシリーズ ◦ + ... • 各ブロックはAPIで連携するため柔軟なシステムの構築が可能
ビルディング・ブロック 複数のブロックを組み合わせてシステム(=コンテナ環境)を作る Control Plane コンテナを管理する コンポーネントが稼働する場所 ECS EKS Data Plane
ユーザーが作成した コンテナが稼働する場所 EC2 Fargate
AWSにおけるKubernetes (EKS)
What is EKS? • EKS = (ざっくり言うと) AWSマネージドのKubernetesサービス ◦ Control
Planeとしての役割を担う • Data Plane ◦ EC2 or Fargateを選択する • 課金 ◦ 0.10 USD/h (EKS) + 0.0544USD/h (EC2 / t3.medium) + EBSの料金 etc. = (Worker Nodeの数が2のクラスタだと) 0.209USD/h +α
(今度こそ) EKSを触ってみよう
試してみること • クラスタの作成 • Deployment (nginx) の作成 + 動いているコンテナへのアクセス
Step0: Set up • kubectl ◦ kubernetesと通信する際に利用するコマンドラインツール ▪ homebrewを利用して設定 (mac)
$ brew install kubectl $ kubectl version Client Version: version.Info{... ,GitVersion:”1.17.2”,...}
Step0: Set up • AWS CLI ◦ AWSサービスの作成・設定をするためのコマンドラインツール ▪ (ver1)
pip or インストーラーを利用して設定 $ pip3 install awscli --upgrade --user $ aws --version aws-cli/1.16.230 Python/3.7.6 Darwin ...
Step0: Set up • eksctl ◦ EKSベースのクラスタを作成するためのコマンドラインツール ◦ クラスタを構成する複数のAWSリソースをまとめて作成・設定してくれる $
brew tap weaveworks/tap $ brew install weaveworks/tap/eksctl $ eksctl version 0.16.0
Step0: Set up • eksctl ◦ 設定値をYAMLで渡すことも可能 ◦ クラスタ作成時のデフォルト値に注意 ▪
InstanceType(EC2): m5.large
• クラスタ作成用のコマンドを実行 $ eksctl create cluster -f ./cluster.yaml Step1: Create
k8s Cluster
• クラスタが正常に作成されたかを確認する $ kubectl get nodes Step1: Create k8s Cluster
Step1: Create k8s Cluster • (+α) MFA有効化アカウントを用いてクラスタを作成する場合 ◦ https://aws.amazon.com/jp/premiumsupport/knowledge-center/authenticate-mfa-cli/
Step2: Deploy nginx • Deploymentを作成する ◦ マニュフェストファイルはexampleとして提供されているものを利用 $ kubectl apply
-f https://k8s.io/examples/controllers/nginx-deployment.yaml https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/
• 定義したPodが正常に作成されたかを確認する $ kubectl get pods Step2: Deploy nginx
Step3: Access nginx • 任意のPod (nginx-deployment-xx) を指定してポートフォワーディング $ kubectl get
pods $ kubectl port-forward nginx-deployment-xxxx 32711:80
Step3: Access nginx
• localhost:32711 に対してブラウザからアクセスする ◦ 正常にアクセスできれば下記のような画面が表示される Step3: Access nginx
EKSを使う上で気になる点 +α
EKSを使う上で気になる点 • 1)「どのようなブロックでクラスタが構成されているか」の理解 ◦ Kubernetesクラスタの運用に携わる人は必須 ◦ eksctlは詳細を知らなくてもクラスタを作成できてしまう
EKSを使う上で気になる点 • 2) KubernetesとAWSのサービスの対応関係 ◦ 何のAWSサービスを使って実現しているかを把握すると理解が進む e.g.) Service ( Type:
LoadBalancer ) - NLB or CLB (NodeがEC2の場合) https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/load-balancing.html
+α • 覚えることは多いように感じる (Kubernetes + AWS) ◦ (今すぐ) 覚えなくてもいいこと も結構ある
◦ Indexをはっておくだけでも十分 • 一旦は、自分のやってみたいことをやってみる ◦ 必要になったタイミングで、知識のインプット + クラスタでの検証 ◦ だからこそ、クラスタの簡単な作り方を知っておくのは大事!
まとめ • Kubernetes + AWSのサービスで色々なことができる • EKSやっていきましょう!
Thank you for Listening !
https://eksctl.io/ https://github.com/kubernetes/examples 参考リンク
(+α) Monitoring
Kubernetes - Monitoring • Prometheus • Datadog • Cloudwatch Container
Insights ◦ モニタリング用のコンポーネントのデプロイのみでセットアップ可能 (= AWSのサービスだけでモニタリングに対応できる ) ◦ Container Insightsのメトリクス取得は料金は発生する ▪ 料金試算のサイトもあるので不安な方は試算してみるのがおすすめ Amazon CloudWatch Pricing – Amazon Web Services (AWS)
Kubernetes - Monitoring • Cloudwatch Container Insights ◦ 1) CloudWatch
Agent / Fluentd のデプロイ ◦ 2) CloudWatchのダッシュボードでのメトリクスの確認 • ※ 事前にWorker Node用のIAM Roleに下記のポリシーをアタッチ ◦ CloudWatchAgentServerPolicy
Kubernetes - Monitoring • CloudWatchAgentServerPolicy ◦ eksctl用の設定ファイル内で指定可能 ◦ 下記のPolicyも必要なので注意 ▪
AmazonEKSWorkerNodePolicy ▪ AmazonEKS_CNI_Policy
• セットアップ用のコマンドを実行 ◦ cluster-name / cluster-regionを置き換えてコマンドを実行 $ curl https://raw.githubusercontent.com/aws-samples/ .../quickstart/cwagent-fluentd-quickstart.yaml
\ | sed "s/{{cluster_name}}/cluster-name/;s/{{region_name}}/cluster-region/" \ | kubectl apply -f - https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-quickstart.html Step1:Cloudwatch Agent/Fluentdのデプロイ
Step1:Cloudwatch Agent/Fluentdのデプロイ • Cloudwatch Agent / FluentdのPodがデプロイされていることを確認
Step2:ダッシュボードでのメトリクスの確認 • CloudWatchのダッシュボードから概要のリンクをクリックして 「Container Insights」を選択する
Step2:ダッシュボードでのメトリクスの確認 • Container Insightsのダッシュボードからメトリクスを確認する ◦ 1) デプロイしたPodの負荷状況 (CPU/メモリの利用率)
Step2:ダッシュボードでのメトリクスの確認 • Container Insightsのダッシュボードからメトリクスを確認する ◦ 2) クラスタを構成するWorker Nodeの負荷状況 (CPU/メモリの使用率 +α)