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

Kubernetes超入門

 Kubernetes超入門

2023/01に行われた社内 AI技術勉強会の発表資料

Takashi Suzuki

January 01, 2023
Tweet

More Decks by Takashi Suzuki

Other Decks in Technology

Transcript

  1. Mobility Technologies Co., Ltd. • 物理マシンは調達から運用までが大変 • 仮想マシンもお手軽じゃない(起動時間、無駄なリソースの利用) • コンテナ技術の登場

    ◦ Immutable Infrastructure (Infrastructure as Code) ◦ 軽量でシンプル ◦ Portability, Agilityの向上 Dockerコンテナを利用する背景 5
  2. Mobility Technologies Co., Ltd. • 「アプリケーションバイナリ + 周辺の実行環境」をコンテナイメージとして固める • 作成したコンテナイメージをもとに起動するため、基本的にどこでも同じように実行

    される e.g. Ubuntu 22.04 + Nginx server, Alpine 3.15+ Go application • 軽量でシンプル・高速起動・低オーバーヘッド・可搬性・Immutable Infrastructure Dockerコンテナとは 6 FROM golang:1.19.0-alpine3.15 COPY main.go ./ RUN go build ./main.go -o main ENTRYPOINT [“main”, “--args”, “$ARG;”]
  3. Mobility Technologies Co., Ltd. • コンテナをいい感じに起動させるオープンソースのコンテナオーケストレータ • Google社内で利用されていたBorgが元になっている • Docker

    swarm等の他のツールもあったが、現在はk8sがデファクトスタンダード • CNCFによってホスティングされている Kubernetesとは 8 ・複数Dockerホストの管理 ・コンテナのスケジューリング ・Autoscaling ・Rolling Update ・コンテナの死活監視 ・障害時のセルフヒーリング ・Load Balancing ・データや機密情報の管理 同じようなことをk8sを利用せずに0から作るのは大変
  4. Mobility Technologies Co., Ltd. Cloud FunctionsやApp Engine • コンテナベースではないので、local開発でエミューレータが必要 •

    スケールしてくると結構大変 • コードだけでなく、Managed Service側も熟知する必要あり • 言語の種類やバージョンが限定、他にも色々制約あり Cloud Run • GUIベースが前提 • Terraformで管理しようとすると逆に大変 • 少人数でスモールスタートするにはいい選択肢 • 最近は解消されてきているが、色々制約もある Serverless vs Kubernetes 10
  5. Mobility Technologies Co., Ltd. クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近 代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するため の能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロ サービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。

    こ れらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力 で頻繁かつ予測どおりに行うことができます。 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシス テムを育成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパ ターンを民主化し、これらのイノベーションを誰もが利用できるようにします。 Cloud Nativeとは 12 参考: https://github.com/cncf/toc/blob/main/DEFINITION.md
  6. Mobility Technologies Co., Ltd. • リソース効率の向上により、少ないサーバーで同じ数のサービスが実行可能 • より高い開発スピードが実現可能となり、低リスクで迅速なサービス改善 • マルチクラウドとハイブリッドクラウドの実現

    Cloud Nativeのメリット 13 ・疎結合なシステム ・回復性がある ・管理しやすい ・過観測である ・堅牢な自動化により、最小限の労力で 頻繁かつ期待通りに変更が可能
  7. Mobility Technologies Co., Ltd. 1. コンテナ化 2. CI/CD 3. オーケストレーション&アプリケーション定義

    4. 過観測性&分析 5. サービスプロキシ、ディスカバリ&メッシュ 6. ネットワーク、ポリシー&セキュリティ 7. 分散データベース&分散ストレージ 8. ストリーミング&メッセージング 9. コンテナレジストリ&ランタイム 10. ソフトウェアディストリビューション Cloud Nativeになるためのステップ 14 すべて対応する必要はなく、状況に応じて適時対応すれば良い
  8. Mobility Technologies Co., Ltd. • サービス提供を迅速に一貫した環境で行うためにコンテナ技術に注目が集ま る • そのコンテナの管理にKubernetesが利用される •

    組織のフェーズによって、Serverlessとは棲み分け • Cloud Nativeな状態を目指し、その選択肢の一つがKubernetes まとめ 15
  9. Mobility Technologies Co., Ltd. • Cluster:Nodeの集合 • Node:コンテナのデプロイ先VM ◦ Master

    NodeとWorker Nodeから構成される • Pod:デプロイの最小単位 ◦ コンテナ間でIPやVolumeを共有 Cluster/Node/Pod 18
  10. Mobility Technologies Co., Ltd. • kube-apiserver ◦ APIエンドポイントとして機能 • kube-controller-manager

    ◦ 各種コントローラを制御 • kube-scheduler ◦ コンテナのスケジューリング • etcd ◦ k8sクラスタの構成情報を格納するKVS Master Node 20
  11. Mobility Technologies Co., Ltd. • kubelet ◦ Podの起動・監視 • kube-proxy

    ◦ Serviceの仮想IPへのアクセスをPodに 転送 Worker Node 21
  12. Mobility Technologies Co., Ltd. Pod • デプロイできる最小のコンピューティングユニット • Pod単体で利用することはほぼない •

    複数Podの管理ができ、Pod障害時の自動復旧が可能なコンテナコントロー ラーを利用する ◦ Deployment, StatefulSet, DaemonSetなど ワークロード(1/2) 23
  13. Mobility Technologies Co., Ltd. Deployment • 理想的なコンピューティングユニットの状態を定義 ◦ レプリカ数、リソース設定値(CPU/Memory) ◦

    その状態に合わせてPodが増減 • Deployment更新時にはロールアウトが実行 ◦ ロールアウト時のPodの稼働状況なども指定可能 ◦ 障害時には過去のリビジョンにロールバックできる ワークロード(2/2) 24
  14. Mobility Technologies Co., Ltd. Service • サービスディスカバリ ◦ Podへのアクセス手段を提供 •

    Serviceのタイプ ◦ ClusterIP:複数のPodを紐付けるクラスタ内仮想IPで公開 ◦ NodePort:ClusterIPをNode上の静的なポートで公開 ◦ LoadBalancer:クラウドLBを使用してServiceを外部に公開 ◦ ExternalName:指定されたコンテンツとSeviceを紐付ける 外部からのアクセス(1/2) 25
  15. Mobility Technologies Co., Ltd. Volume • 外部リソースをコンテナにマウント • Volumeのタイプ ◦

    emptyDir Volume:Node上に領域を確保、Podが削除されると廃棄 ◦ Persistent Volume:ネットワークストレージと接続、永続化 • GCE永続ディスクやAWS EBSなどとも接続可 ストレージ(1/1) 27
  16. Mobility Technologies Co., Ltd. ConfigMap • 機密性のないデータをキーと値のペアで保存する • ローカルやクラウドごとに差異がある環境変数の管理などで利用 •

    プレーンテキストで格納される Secret • 機密性のあるデータをキーと値のペアで保存する • base64エンコードで格納される • ともに環境変数や、Volumeマウントして利用できる 設定(1/1) 28