例
種別、メタデータ、コンテナの三部構成になっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx-1 spec: containers: - image: wrong-nginx name: nginx resources: {} dnsPolicy: ClusterFirst restartPolicy: Always status: {} |
種別
設定を変えることは基本ない。
1 2 |
apiVersion: v1 kind: Pod |
apiVersion
kindによって指定できるapiバージョンが異なります。(Podの場合はv1と指定します。)
以下のようなAPIドキュメントを読んで探します。
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/
GroupがCoreの場合は記述の省略が可能です。
kind
Podなどリソースの種別を指定します。
メタデータ
設定を変えることは基本ない。
1 2 3 4 5 |
metadata: creationTimestamp: null labels: run: nginx name: nginx-1 |
name
一意の名前をつける。(Pod名などになる。)
namespace
何もなければ「default」が指定されます。
labels
任意でキーバリューのペアを指定することができます。
コンテナ
1 2 3 4 5 6 7 |
spec: containers: - image: wrong-nginx name: nginx resources: {} dnsPolicy: ClusterFirst restartPolicy: Always |
containers
コンテナを複数指定できます。
image
バージョン指定がない場合はlatest(最新版)指定になるので思わぬ誤動作につながる可能性があるので注意が必要です。
imagePullPolicy
Always
毎回レポジトリからダウンロードを行う。
Never
ローカルのイメージを利用する。
IfNotPresent
ローカルに存在すればローカルを利用。存在しなければレポジトリからダウンロードする。
name
複数あるコンテナを特定するための名前をつけます。
command
コンテナに対する処理を記述する。Dockerで言えばENTRYPOINTが対応します。
args
コンテナに対する処理を記述する。Dockerで言えばCMDが対応します。
env
環境変数を渡せる。Kubernetesではこれで環境設定を渡すことが多い。
volumes
name
ボリューム名
hostPath
保存先。Pod実行サーバー上
nfs
保存先。NFSサーバー上
configMap
保存先。Kubernetesリソース
secret
保存先。Kubernetesリソース
emptyDir
保存先。空フォルダ
ConfigMapとは?
設定情報を保存するためのリソース。機密性のないデータをキーと値のペアで保存してPodから参照可能
メリット
コンテナイメージと環境固有の設定を切り離す。アプリケーションがポータブルになります。
例
- アプリケーション接続先のDBのホスト名
- conf
使用方法
- コンテナの環境変数の設定
- 読み取り専用のボリュームを作成し、コンテナから読み込む
Secret(設定用リソース)とは?
機密情報(パスワード、トークンなど)を保存管理してPodから参照可能。データの中身はbase64エンコードされています。
使い方はConfigMapにかなり似ています。
種類
- Opaque(一番よく使われる)
- kubernetes.io/dockercfg
- kubernetes.io/basic-auth
例
- 接続先DBのパスワード
- Dockerレジストリのアクセス権限
使用方法
- ボリューム内のファイルとしてPod内のコンテナにマウントする。
- コンテナの環境変数の設定
- kubeletがDockerイメージをpull際に使用
この記事へのコメントはありません。