1日1%成長する ~Amazon Elastic Container Service for Kubernetes (Amazon EKS)~

AWSの学習メモ

Amazon Elastic Container Service for Kubernetes (Amazon EKS)

コンテナ関連サービス
    レジストリ:ECR
    コントロールプレーン:ECS、EKS
    データプレーン:EC2、Fargate

Kubernets(K8s)概要
    - 複数のホスト間でコンテナ化されたアプリケーションを管理するOSS
    - デプロイ、メンテナンス、スケーリングを提供
    - Cloud Native Computing Foundation(CNCF)で管理

Kubernetsで実現できること
    - ホスト管理、スケジューリング
    - コンテナ死活監視、オートリカバリー
    - サービスディスカバリーやロードバランシングで分散処理
    - シークレット(パスワード)やアプリケーション設定管理
    - バッチ実行とか

アーキテクチャ
    Kubectl => k8s master
                - WorkerNode(複数)

    Kubectl
        k8s APIを実行するためのCI
    Workloadsリソース
        - Pod
        - ReplicaSet
        - Deployment
        - DeamonSet
        - Job
        - CronJob
        - StatefuleSet

Pods
    - 作成、スケジュール管理できる最小のデプロイ可能な単位
        - シンプルなユースケースだと1pod=1コンテナとか

    - 同じPod内のコンテナはVolumeやNetworkを共有
    - Pod内のコンテナはlocalhostで通信

ReplicaSet
    - Podのレプリカを作成してPodを指定した数を維持
        - longrun向け
        - WorkerNode障害時には指定されたPodの数を維持するために別のNodeにPod作成を行う

Deployment
    - 複数のReplicaSetを管理「Deployment -> ReplicaSet -> Pod」

DeamonSet
    - 選択したノード組に対して各ノードにPodを1つ動かすためのリソース
        - 1台のWorkderNodeに複数づつPodを配置することはできない
    - ユースケース
        - 各WorkerNodeで動かすログ収集用のdeamon(fluentdなど)
        - 各WorkerNodeで動かすモニタリング用のdeamon

Job
    - 1つ以上のPodを作成し、指定された数のPodが正常に完了するようなコントロール
    - JobとReplicaSetの違い
        - ReplicaSetはロングラン向け
        - Jobは終了が予想されるPod向け

Service/Ingress
    コンテナを公開するときにする

Service
    - Podの論理セットとアクセスするためのポリシーを定義
    - コンテナに対してトラフィックを流すことができる(L4ロードバランサー)
    - ServiceにIPアドレスを割り当てることも可能(バランサっぽい感じ)

Ingress
    - コンテナに対しトラフィックを流すことができる(L7ロードバランサー)
    - AWS ALB Ingressコントローラー:AWSがサポート
        - IngressリソースとしてALBを活用可能
        - ホスト名またはパスによるコンテントベースルーティング、L7の負荷分散