Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する

第105回 雲勉【オンライン】Amazon EKSとコンポーネントの基礎を理解する

iret.kumoben

June 09, 2023
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 満村 雄⼆(みつむら ゆうじ) 1 ⾃⼰紹介 @Chanmitsu_sys l アイレット株式会社 l クラウドインテグレーション事業部

    第⼆構築セクション所属 l 2022/2023 APN ALL AWS Certifications Engineer l 他にはGoogle Cloud 11冠、CKA、CKADなどを保有
  2. 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. 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. 4 本資料の⽬的 主な⽬的 l KubernetesとAmazon EKSの基礎を理解する︕ l サービスに対する興味を持ってもらう︕ 当資料で説明しないこと l

    Amazon EKSのクラスター作成⼿順および細かい仕様 l マニフェストの効率の良い書き⽅ l ⾮機能関連の話 l ハンズオン あくまで初学者や久しぶりに振り返りたい⽅を対象とした講義となります
  5. 5 当資料の登場⼈物 名前︓みつお l 講師役 l さわだ、はやぶさの2名に Amazon EKSとKubernetesを教える 名前︓さわだ

    l ベテランのインフラエンジニア l オンプレ経験が⻑く部内でも頼られている l 最近コンテナを使う案件が増えてきており 学習する取っ掛かりが欲しい 名前︓はやぶさ l 猛禽類系インフラエンジニア l 技術に対する好奇⼼が強い l 元々、Kubernetesに知⾒はあるが 今回、みつおの講義の様⼦を⾒にきた
  6. 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. 7 Amazon EKSとは︖ l Amazon Elastic Kubernetes Service l AWSのコンテナオーケストレーションサービス

    l Kubernetesのコントロールプレーンをマネージドに利⽤出来る l Kubernetesのワークロードを始めとする様々なリソースが利⽤出来る l AWSサービスとの親和性がある
  8. 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 つまりですね・・・ 要するに︖
  9. 14 クラスタ、コントロールプレーン、ワーカーノードの関係性 項⽬ 詳細 EKSクラスター ・コンテナオーケストレーション環境の単位 ・クラスター内にコントロールプレーンとワーカーノードを含む コントロールプレーン ・コンテナ環境を管理するノード ・クラスタ毎に固有に作成される

    ・3つのAZにまたがって配置される ・クラスター内のKubernetesオブジェクトの状態を保持する ・クライアントからのコマンドや設定ファイルを受け取り、 APIアクションを呼び出し、コンテナのデプロイや更新を⾏う ワーカーノード ・実際にコンテナが起動するノード ・コントロールプレーンからの指⽰を受けてノード上にコンテナを起動させる ・ワーカーノードとしてEC2またはFargateを選択可能 いかがでしょ︖ イメージ出来ました︕︖ あざす︕
  10. 17 ⼀旦・・・まとめ l Amazon Elastic Kubernetes Service(Amazon EKS)はKubernetesベースの コンテナオーケストレーションサービスである l

    EKSクラスターはコントロールプレーンとワーカーノードの2つで構成される l コントロールプレーンはワーカーノードやコンテナの構成情報を管理するノードのこと l ワーカーノードは実際にコンテナが起動するノードのこと 思ったより構成は簡単ですね︕
  11. 18 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)

    3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
  12. 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が省略された場合は、すべてのリソース詳細が表⽰される リソースタイプは、短縮系が 指定出来たりするので、 リファレンス⾒ながら使って みてね
  13. 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 運⽤者のスキルレベルにもよるけど、 オペレーションは統⼀した⽅が いいかもですね 構⽂⾃体がシンプルで分かりやすい 構築時はエイリアスや短縮系 を使ってたけど 運⽤者向けの⼿順では統⼀す るなど⼯夫はしてた
  14. 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リファ レンスを参考にしてくだ さい
  15. 35 Deploymentとは︖ l ローリングアップデート、ロールバックを実現するためのリソース l ReplicaSetは直接ローリングアップデートをサポートしない l 複数のReplicaSetを管理することが出来る リソース間の親⼦関係を知っていれば マニフェストがどう書かれるかが

    イメージ出来ますわー デプロイするコンテナはアップデート していくはずだから、 必然的にDeploymentリソースを作成 してその中でReplicaSet、podで定義 していくことになりますね
  16. 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台まで 起動させるような設定です
  17. 37 その他のワークロードについて リソース名 詳細 DaemonSet ・各ノードにPodを1台ずつ配置するリソース ・Replica Setのように複製する数を指定して、各ノードに複数台Podを配置する事が出来ない ・監視⽤のAgentとして利⽤されるケースがある Job

    ・ジョブ⽤のリソース ・指定した回数分、処理を実⾏する ・ジョブの実⾏後は終了する CronJob ・指定した時間にJobを作成する StatefulSet ・データベースなどに利⽤されるステートフル(状態維持)なリソース ・Pod名が変わらず、サフィックスが連番で付与されるような形になる ・mitsuo-stateful-0、mitsuo-stateful-1、mitsuo-stateful-2
  18. 39 その他のリソース カテゴリ種別 詳細 Workloads APIs ・コンテナの実⾏に関する当資料で紹介したリソース Service APIs ・システムを外部公開するためのリソース

    ・L4、L7レイヤのロードバランシング機能などを有する ・Service、Ingressなどがよく利⽤される Config & Storage APIs ・諸設定、機密情報の管理、永続化ボリュームなどのリソース ・ConfigMap、Secret、PersistentVolumeClaim l ワークロード以外にも様々なリソースがある うっ・・・ 頭が︕︕︕︕︕ みつおくん、 外部公開するシステムだと ServiceやIngressはほぼ必須だ し、そこを解説した⽅が良かった んじゃないです︖
  19. 42 1. 本資料について(19:05 〜 19:10) 2. Amazon EKSとKubernetesについて(19:10 ~ 19:25)

    3.Kubernetesにおけるワークロードリソース(19:25 〜 19:50) 4. 質疑応答(19:50 〜) Agenda
  20. 4 3