LoginSignup
1
0

More than 1 year has passed since last update.

Kubernetes

Posted at

【Kubernetes】

クラウドインフラ上に、コンテナと Kubernetes を導入することにより、常に最適な環境設定を自動化
SLOを実現する際に、最適なリソース配置の自動化の仕組み化としてのコンテナオーケストレーション

Kubernetes

デプロイやスケーリングを自動化したり、コンテナ化されたアプリケーションを管理したりするための、 オープンソースのシステム

  • コンテナオーケストレーションとは
    • コンテナ:独立した箱を設けてアプリケーションその中で実行する仕組み
    • オーケストレーション:デプロイ、スケーリング、管理 ...etc
    • これまでマニュアル化されていた作業を自動化!!
    • 理想状態を維持し続けるようにしてくれる!
  • コンテナオーケストレーションの機能
    • デプロイメント:どのように異なるバージョンのコンテナを入れ替えるか
    • スケジューリング:どのマシン上で動かすのか
    • オートスケーリング:コンテナ数やマシン数の増減
    • ネットワーク:コンテナ間のロードバランスやコンテナ間の通信のサービスディスカバリ
    • リソースマネジメント:使用可能なリソースを環境ごとにリミットやデフォルトを定義
    • セキュリティ: ネットワークポリシー、リソースへの権限定義

kubectl

yamlやコマンドをAPIリクエストに変えてapi-serverにHTTPリクエストを送る

  • (こちらは改めて学習します)

Kubernetes リソース概要

Pod

Kubernetes上のデプロイの最初単位

  • 1つまたは複数のコンテナを持つ
  • ネットワークやストレージを共有リソースとして持つ
  • コンテナの実行方法に関する仕様を持つ
    • 例) entrypoint, ENV, command, healthcheck ...etc

Pod単位でデプロイされる

  • Podが使えなくなった場合には、他のノードにデプロイされることもある
  • 1つのアプリケーションを複数のPodでデプロイする
    • 特段の事情がない限り、複数のアプリケーションを1つのPodに入れない
  • 本番運用の場合、個別のPodを直接操作してはならない
    • ワークロードリソース(Deployment, StatefulSet, DaemonSet)を利用しよう

共有コンテキスト

  • 同一Pod内のコンテナは同じストレージへアクセスが可能
    • 例) mainのコンテナがストレージへログを書き込み、ヘルパーコンテナがそのログをログ収集基盤へ飛ばす
  • 同一Pod内のコンテ案はIPアドレスとPortを含むネットワーク名前空間を共有

Kubernetes オブジェクト

Podの作成 = Kubernetesオブジェクトを作成

  • クラスタの状態を表現する
    • どんなコンテナアプリケーンが動いているか
    • 利可能なリソースはどれだけか
    • アプリケーションの振る舞いうに関するポリシー

Kubernetesオブジェクトのフィールド

  • spec:理想状態
    • Kubernetes オブジェクトの操作には Kubernetes API(kubectlやプログラム)が使われている
    • 例) kubectl apply -f pod.yaml
  • status:現実状態
    • Kubernetesにより更新

コントロールプレーンは、 理想状態と現実状態が一致するように管理!!

Kubernetesオブジェクト作成

  • オブジェクト作成時の必須フィールド
    • apiVersion:どのバージョンのKubernetes API
    • kind:どの種類のオブジェクトか(Pod, Deployment ...etc)
    • metadata:オブジェクトを一意に特定するための情報(name, UID, namespace)
    • spec:理想状態

Namespace

  • 同一の物理クラスター上で複数の仮想クラスターの動作をサポート
    • 仮想クラスター:実際には同じマシンの上で動いているかもしれないが、 仮想的に環境が分けられている状態
    • 参考:公式ドキュメント
  • 1つのクラスタを論理的に別けて使う
    • 特定の目的別や、チームごと、環境ごとに切り分けることが考えられる

Namespaceを切り分けるメリット

設定忘れやミスの防止、リソースの制限、権限管理をする。

  • Namespaceごとに制限を設定可能
    • Podやコンテナのリソースの範囲設定(LimitRange)
      • Podやコンテナにメモリ、 CPUやストレージの上限、下限を設定
      • コンテナのデフォルトのメモリ、 CPUやストレージを設定
        - Namespace全体の総リソース制限(Resource Quota)
        - Namespace内のメモリ、 CPUの合計の上限
        - Podなど、Objectの数の上限
        - 権限管理
        - 特定のNamespace内のリソースに限って権限を付与

参考

Kubernetes入門

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0