3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes yamlファイルの基礎

Last updated at Posted at 2021-03-22

Kubernetesオブジェクトで「意図の記録」をする

Kubernetesオブジェクトは、Kubernetes上で永続的なエンティティ1です。Kubernetesはこれらのエンティティを使い、クラスターの状態を表現します。

下記のような内容が表現できます:

  • どのようなコンテナ化されたアプリケーションが稼働しているか(またそれらはどのノード上で動いているか)
  • それらのアプリケーションから利用可能なリソース
  • アプリケーションがどのように振る舞うかのポリシー、例えば再起動、アップグレード、耐障害性ポリシーなど

一度オブジェクトを作成すると、Kubernetesは常にそのオブジェクトが存在し続けるように動きます。

Kubernetes APIを使用したKubernetesオブジェクトの操作

Kubernetesオブジェクトを操作する場合、作成、変更、または削除に関わらずKubernetes APIを使う必要があります。

kubectlコマンドラインインターフェース

kubectlコマンドラインインターフェースを使った場合、このCLIが処理に必要なKubernetes API命令を、あなたに代わり発行します。

あなたのプログラムからクライアントライブラリを利用し、直接Kubernetes APIを利用することも可能です。

オブジェクト spec とオブジェクト status

ほとんどのKubernetesオブジェクトは、オブジェクトの設定を管理する2つの入れ子になったオブジェクトのフィールドを持っています。

spec

specには、望ましい状態としてオブジェクトに持たせたい特徴を記述する必要があります。

status

オブジェクトの 現在の状態を示し、その情報はKubernetesシステムとそのコンポーネントにより提供、更新されます。Kubernetesコントロールプレーンは、あなたから指定された望ましい状態と現在の状態が一致するよう常にかつ積極的に管理をします。

Kubernetesオブジェクトを記述方法

nginx-pod.yaml
apiVersion: v1 # どのバージョンのKubernetesAPIを利用してオブジェクトを作成するか
kind: Pod # どの種類のオブジェクトを作成するか、今回はpod
metadata: # オブジェクトを一意に特定するための情報、文字列のname、UID、また任意のnamespaceが該当する
  name: my-first-pod # 今回だとpodの名前、一意である必要がある。
  labels:
    component: nginx # ラベル
spec: # オブジェクトの望ましい状態
  containers:
  - name: nginx # コンテナの名前
    image: nginx:latest # 実行するdocker image

必須フィールド

フィールド名 概要
apiVersion どのバージョンのKubernetesAPIを利用してオブジェクトを作成するか
kind どの種類のオブジェクトを作成するか
metadata オブジェクトを一意に特定するための情報、文字列のname、UID、また任意のnamespaceが該当する
spec オブジェクトの望ましい状態

Kubernetesでオブジェクトを作成する場合、オブジェクトの基本的な情報(例えば名前)と共に、望ましい状態を記述したオブジェクトのspecを渡さなければいけません。

KubernetesAPIを利用しオブジェクトを作成する場合(直接APIを呼ぶか、kubectlを利用するかに関わらず)、APIリクエストはそれらの情報をJSON形式でリクエストのBody部に含んでいなければなりません。

specの正確なフォーマットは、Kubernetesオブジェクトごとに異なり、オブジェクトごとに特有な入れ子のフィールドを持っています。Kubernetes API リファレンスが、Kubernetesで作成できる全てのオブジェクトに関するspecのフォーマットを探すのに役立ちます。 例えば、Podオブジェクトに関するspecのフォーマットはPodSpec v1 coreを、またDeploymentオブジェクトに関するspecのフォーマットはDeploymentSpec v1 appsをご確認ください。

参考文献

Introduction to Kubernetes

Kubernetesオブジェクトを理解する | Kubernetes

  1. エンティティとは、実体、存在、実在(物)、本質、本体などの意味を持つ英単語。ITの分野では、何らかの標識や識別名、所在情報によって指し示される、独立した一意の対象物をエンティティということが多い。類義語には「インスタンス」(instance)、「オブジェクト」(object)などがある。

3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?