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
860
EKS 101
taxin
May 26, 2020
Tweet
Share
More Decks by taxin
See All by taxin
ポストモーテム読書会のすすめ
taxin
1
1.5k
OpenTelemetry実践 はじめの一歩
taxin
0
2.2k
カスタムダッシュボードの活用方法とMackerel開発チームでの実践例
taxin
0
790
SREを「続けていく」あなたへ
taxin
1
320
Cloud runユーザーから見たk8s
taxin
0
840
ローカルk8s環境のススメ / k8s-tools-for-local
taxin
0
1.1k
Other Decks in Programming
See All in Programming
もう実家に手頃な情シス娘は不要!Bedrockでもう一人の娘を作る
komakichi
0
120
MLOps in Mercari Group’s Trust and Safety ML Team
cjhj
1
120
型付きで行うVSCode拡張機能開発 / VSCode Meetup #31
mazrean
0
240
Cohesion in Modeling and Design
mploed
3
220
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
monotaro
PRO
0
150
[KR] Server Driven Compose With Firebase
skydoves
2
200
自分だけの世界を創るクリエイティブコーディング / Creative Coding: Creating Your Own World
chobishiba
2
1.8k
データサイエンスのフルサイクル開発を実現する機械学習パイプライン
xcnkx
2
510
ビット演算の話 / Let's play with bit operations
kaityo256
PRO
4
180
Vue :: Better Testing 2024
up1
1
410
実践Dash - 手を抜きながら本気で作るデータApplicationの基本と応用 / Dash for Python and Baseball
shinyorke
2
620
perl for shell, awk and sed programmers
mackee
1
740
Featured
See All Featured
Designing for Performance
lara
604
68k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Atom: Resistance is Futile
akmur
261
25k
Designing with Data
zakiwarfel
98
5.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.5k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Building an army of robots
kneath
302
42k
Building Your Own Lightsaber
phodgson
102
6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
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/メモリの使用率 +α)