Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門

Y.Sumikura
February 17, 2023

第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門

Y.Sumikura

February 17, 2023
Tweet

More Decks by Y.Sumikura

Other Decks in Technology

Transcript

  1. 0.講師⾃⼰紹介 3 n ⽥中 弘紀 • クラウドインテグレーション事業部 構築第⼋セクション 第⼆グループ •

    経歴 ⼩売店(接客販売) 1年半 オンプレミスインフラエンジニア(運⽤保守) 6年 • アイレット歴 2年9ヶ⽉ (構築、運⽤保守) • 沖縄とロナウジーニョが好き
  2. 4.Kubernetesのアーキテクチャ 17 n Kubernetesのアーキテクチャ 管理者 kubectlコマンド Pod container kubelet kube-proxy

    Pod container kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime Kubernetesクラスター
  3. 4.Kubernetesのアーキテクチャ 18 n コントロールプレーン Kubernetesクラスター内の「ノード」や「Pod」といったリソースを管理するもの ノード コンポーネント名 役割 マスターノード kube-apiserver

    KubernetesへのAPIリクエストを受け取りリソースを管理する kube-scheduler 新しく作成されたPodなどを適切なワーカーノードを選択して割り当てる kube-controller-manager リソースの状態を管理し、要求される状態を維持する。 例えばDepoloymentやReplicaSetで要求されるPodの数を維持する etcd ノードやクラスターなどの情報を保存する ワーカーノード kubelet コンテナの起動や削除を管理する kube-proxy クラスター内外のPodに対するアクセスをルーティングする
  4. 4.Kubernetesのアーキテクチャ 19 n kube-scheduler ・新しく作成されたPodなどを適切なワーカーノードを選択して割り当てる 管理者 kubelet Pod container kube-apiserver

    kube-scheduler etcd kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 Podの要求を監視し、適切なワーカーノードを選択 Podの起動を指⽰ Podが起動される マスターノード ワーカーノード container runtime Podの起動を指⽰
  5. 4.Kubernetesのアーキテクチャ 20 n kube-controller-manager ・リソースの状態を管理し、要求される状態を維持するようにコントロールするもの 管理者 Pod container kube-apiserver etcd

    kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 Podが起動される kube-controller-manager Deployment Contoroller ..etc Deployment 変化が発⽣した場合あるべき姿を保持しようとする ReplicaSet ReplicaSetを管理する Podを管理する Contorollerが監視 kube-scheduler
  6. 4.Kubernetesのアーキテクチャ 21 n kube-proxy ・ クラスタ内外のPodに対するアクセスをルーティングする 管理者 Pod container kube-apiserver

    etcd kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 ルーティングを変更 Service kube-proxy マスターノード ワーカーノード 適切なPodにルーティング ユーザー
  7. 4.Kubernetesのアーキテクチャ 22 n Kubernetesのアーキテクチャ 管理者 kubectlコマンド Pod container kubelet kube-proxy

    Pod container kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime Kubernetesクラスター
  8. 4.Kubernetesのアーキテクチャ 23 n EKSでは Pod container kubelet kube-proxy Pod container

    kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime EC2やFargeteが該当 AWSのEKSは マスターノードを提供している Kubernetesクラスター
  9. 5. Kubernetesのリソース 30 n Pod ・ ⼀つ以上のコンテナから構成されているもの ・NginxとMySQLのメインコンテナを⼀つのPodに包括するような構成は推奨されていない container(Nginx) Pod

    container(MySQL) メインコンテナを⼀つのPodに包括する事は 結合度合いが⾼くなってしまうため、推奨されていない Pod container(MySQL) Pod container(Nginx) コンテナを⼀つずつのPodとして 疎結合な構成とする事が推奨されている
  10. 5. Kubernetesのリソース 31 n Pod ・メインコンテナを補助するような役割を持ったコンテナを起動させるマルチコンテナが 利⽤されることはある container(Nginx) Pod container(ログ転送)

    メインコンテナのログを外部に出⼒ Pod container(Nginx) 外部サービスとの連携などで 外部サービスが受け取れるようにデータを整形する ストレージサーバー container(データ整形) 外部サービスなど サイドカーパターン アダプタパターン
  11. 5. Kubernetesのリソース 34 n Rolling Update Podの数を3として起動しているReplicaSetでコンテナイメージを更新した場合 Old image ReplicaSet

    New image ReplicaSet Old image ReplicaSet New image ReplicaSet Old image ReplicaSet New image ReplicaSet Old image ReplicaSet New image ReplicaSet
  12. 5. Kubernetesのリソース 42 n Service種類「 NodePort 」 ・ノードのIPアドレスとポートを組み合わせて外部からのアクセスを可能とする ・ポート範囲は30000 から

    32768で指定が可能 IPアドレス:AAA IPアドレス:BBB ノードの30080にアクセスするとServiceに転送される ノードのIPアドレス10.10.10.10:30080にアクセス ク ラ ス タ % 内 部 ア ド レ ス ワーカーノード
  13. 5. Kubernetesのリソース 48 n AWSでのSecret ・EKSではDBの認証情報といった機密情報はAWS Secrets Manager利⽤する ・AWS Secrets

    Manager and Config Provider for Secret Store CSI Driver(ASCP)というプラグインを利⽤ ・マニュフェストファイルにはAWS Secrets Managerに対応した環境変数を記載するだけ ACSP username:iret password: cloudpack DBの接続情報をAWS Secrets Managerに登録 AWS Secrets Managerから 取得した情報でDBへ接続 RDS EKS Secrets Manager
  14. 5. Kubernetesのリソース 54 n RBACとは ワーカーノード dev Namespace prd Namespace

    Kubernetesクラスター Kubernetesクラスターにある全ての Podの「create」,「delete」,「get」,「describe」を許可 Namespace「prd」に対して Podの「get」,「describe」を許可 ユーザーA ユーザーB
  15. 5. Kubernetesのリソース 56 n IRSA IPアドレス:AAA Pod IPアドレス:BBB Pod nginx

    nginx Podのサービスアカウントに紐付けたS3バケット参照権限のあるロールを利⽤してS3へアクセス S3 EKS IAM Role AWS STS Permissions https://aws.amazon.com/jp/blogs/news/diving-into-iam-roles-for-service-accounts/