プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Kubernetes
  • 【Kubernetes】基本的な用語
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Kubernetes】基本的な用語

11.12

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

Kubernetes API

Kubernetesの操作は全てこれで行います。

オブジェクト

k8sクラスタ内のエンティティ(実体)です。「ポッド」、「コントローラ」、「サービス」などのインスタンスとも言える。

ワークロード

オブジェクトのカテゴリを表す用語、コンテナ、ポッド、コントローラのグループを指している。

ワークロードのタイプ

フロントエンド処理

大量のクライアントリクエストに対して短い時間で応答を返す必要がある。これを実現するためには複数のポッドで分担する設計にしなければならない。

バックエンド処理

フロントエンドの業務変化に合わせて対応できる柔軟性が必要、下記内容はどのアプリケーションでも共通に保持しているべき機能

  • データストア
  • キャッシュ:複数ポッド間のデータ共有
  • メッセージング:非同期のシステム間連携
  • マイクロサービス:専門業務、共通業務
  • バッチ処理(長い時間を要する業務)

バッチ処理(定期実行処理を含む)

バッチ処理は多種多様な種類がある。

  • 大量メール送信
  • 動画フォーマット変換
  • 日次の業務処理

システム運用処理

システム運用はある程度自動化することができます。

コンテナ

Kubernetesではコンテナ単独で実行することはできず必ずポッド内で実行することになる。

ポッド(Pod)

コンテナを実行するためのオブジェクトを指します。1〜複数のコンテナを内包しています。論理的なホストとして振舞います。単一目的で作られたコンテナを部品のように組み合わせることによってより高度な目標を達成するためのプラットフォームです。

機能

  • ポッド内のコンテナはポッドのIPとポート番号を共有して、ポッドを外部に向けてポート番号を開くことができます。
  • ポッド内部のコンテナ同士は互いに通信できる。
  • System Vのプロセス間通信及びPOSIX共有メモリを使用して互いに通信できる。
  • ポッドのボリュームをコンテナからクロスマウントしてポッド内でファイルシステムを共有できる。

ポッドは一時的存在

一時的な存在であり、起動と削除ごとに毎回イメージから新しいものが作成されます。ポッドのIPアドレスも起動状態も起動する度にリセットされます。また、ポッドの起動削除はコントローラによって管理されていて、いつの間にかIPアドレスが変わっていたりします。なので、ポッドにリクエストを送りたい場合は必ずサービス名を利用します。

コンテナの実行状態を管理する。

ポッド自身の実行状態管理はコントローラが受け持ちますが、ポッド内部の実行状態の管理はポッドが行います。ポッド内部のコンテナが何らかの理由で停止した場合は自動で起動します。内部のコンテナアプリケーションの監視ができます。

コントローラ(Controller)

ポッドの実行を制御するオブジェクト。処理の種類に応じた複数コントローラを使い分ける必要がある。ポッドに課せられるワークロードのタイプや処理の種類に応じて、適切なコントローラを選択できるようになる。

コントローラのタイプ

デプロイメント

対等な関係にある複数ボットを水平クラスタで構成できます。

ステートフルセット

ポッドと永続ボリュームの組み合わせで制御を行い永続ボリュームを保護を優先する。

ジョブ

バッチ処理のコンテナが正常終了するまで再試行をする。

クーロンジョブ

時間指定で定期的にジョブを生成する。

デーモンセット

K8sクラスタの全ノードで同じポッドを実行するためにある。

レプリカセット

デプロイメントコントローラと連動してポッドのレプリカ数の管理を担当する。

レプリケーションコントローラ

過去のチュートリアルの資料で見かける。次世代コントローラであるデプロイメントの利用が推奨されている。

コンフィグレーション(Configuration)

コンテナのアプリ設定やパスワード等の情報はデプロイされた「名前空間」から取得する必要がある。

サービス(Service)

ポッドとサービス名を具体的に紐づけてクライアントのリクエストをポッドへ転送する役割、起動の度にIPアドレスが変わるため。クライアントはサービスが持つ「代表IPアドレス」へアクセスする必要がある。

Podの集合を抽象化して外部公開する。

  • Podの集合に対するDNS名
  • Podの集合に対する負荷分散(L4ロードバランサー)

背景

各PodはIPアドレスを持っているが、Podの作成、削除のたびにIPが変化するので使う側が大変になってしまいます。

ServiceがDNS名を持っているので、常に同じ名前でユーザーはアクセスができます。IPアドレスの管理を自動で行なってくれます。また、Portのマッピングも可能です。

定義

Serviceは対象となるPodをSelectorを用いて認識します。

Ingress

L7ロードバランサーで外部公開を行います。

ストレージ(Storage)

ポッドもコンテナ実行時の一時的な存在、データを消失してはいけないので電源オフになってもデータが維持される永続ボリュームに保存する必要がある。

ロールアウト

本番配信中のアプリを稼働中にアップデートする機能

クラスタネットワーク

k8sクラスタ内部のネットワーク、ポッドのIPアドレスとポッドのクラスタ(レプリカ)の代表IPアドレスは、このネットワークのIPアドレスになる。

Flannel

シンプルなL3ネットワークをノード間に構築する。あるノード上のポッドが他のノード上のポッドと疎通できるようにします。

Calico

ノード横断のポッド間通信に加えてネットワークのアクセスポリシーを提供する。

リソース

Namespece-scopedリソース

  • Namespaceに属しているリソースでNamespaceを削除時に削除される。
  • Namespace内では一意である必要がある。
  • 例:Pod、Service、Deployment、DaemonSet、StatefulSet

Cluster-scopedリソース

  • クラスタ全体で使われるもの
  • 同一クラスター内で名前はユニークである必要がある。
  • 例:ClusterRole、ClusterRoleBinding、CustomResourceDefinition

確認方法

以下のコマンドを使うことで対象リソースがどこに属しているか確認できます。

1
kubectl api-resources --namespace

PersistantVolume

永続データの実態です。ストレージを抽象化します。

PersistantVolumeClaim

抽象化されたストレージ(PersistantVolume)を要求します。

スポンサーリンク
  • 2020 11.12
  • miyabisan2
  • コメントを書く
  • Kubernetes
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2022 08.14

    【Kubernetes】マニフェストファイルの構成、「ConfigMap」、「Secret(設定用リソース)」

  2. 2022 07.24

    【Kubernetes】「Kubernetesオブジェクト」、「ワークロードリソース」について

  3. 2020 11.12

    【Kubernetes】アーキテクチャ

  4. 2019 12.15

    【Kubernetes】「Kubernetes(クバネティス)」の概要

  5. 2022 07.23

    【Kubernetes】「kubectl」のよく使うコマンド

  6. 2022 07.24

    【Kubernetes】「pod」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Kubernetes】アーキテクチャ

【Ruby on Rails】「cocoon」について

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー