第1章 Pod の仕様変更


1.1. 概要

Pod の Kubernetes の概念は、「1 つのホストに一緒にデプロイされる 1 つ以上のコンテナーであり、定義、デプロイ、または管理できる最小のコンピューティングユニット」です。

Pod は、コンテナーに対して、(物理または仮想) マシンインスタンスと同等のものです。各 Pod は独自の内部 IP アドレスで割り当てられるため、そのポートスペース全体を所有し、Pod 内のコンテナーはそれらのローカルストレージおよびネットワークを共有できます。

Pod にはライフサイクルがあります。それらは定義された後にノードで実行するために割り当てられ、コンテナーが終了するまで実行するか、その他の理由でコンテナーが削除されるまで実行します。ポリシーおよび終了コードによっては、Pod は終了後に削除されるか、コンテナーのログへのアクセスを有効にするために保持される可能性があります。

Red Hat Ansible Automation Platform は単純なデフォルトの Pod 仕様を提供しますが、デフォルトの Pod 仕様をオーバーライドするカスタム YAML または JSON ドキュメントを提供できます。このカスタムドキュメントは、有効な Pod JSON または YAML としてシリアル化できる ImagePullSecrets などのカスタムフィールドを使用します。

オプションの完全なリストは、Openshift のドキュメント にあります。

長期サービスを提供する Pod の例。

この例は、数多くの Pod 機能を示していますが、そのほとんどは他のトピックで説明されるため、ここでは簡単に説明します。

apiVersion: v1
kind: Pod
metadata:
  annotations: { ... }                      
1

  labels:
    deployment: docker-registry-1
    deploymentconfig: docker-registry
    docker-registry: default
  generateName: docker-registry-1-          
2

spec:
  containers:                               
3

  - env:         	            	  
4

    - name: OPENSHIFT_CA_DATA
      value: ...
    - name: OPENSHIFT_CERT_DATA
      value: ...
    - name: OPENSHIFT_INSECURE
      value: "false"
    - name: OPENSHIFT_KEY_DATA
      value: ...
    - name: OPENSHIFT_MASTER
      value: https://master.example.com:8443
    image: openshift/origin-docker-registry:v0.6.2 
5

    imagePullPolicy: IfNotPresent
    name: registry
    ports:   		                          
6

    - containerPort: 5000
      protocol: TCP
    resources: {}                                    
7

    securityContext: { ... }    		 
8

    volumeMounts:                       	   
9

    - mountPath: /registry
      name: registry-storage
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-br6yz
      readOnly: true
  dnsPolicy: ClusterFirst
  imagePullSecrets:                                  
10

  - name: default-dockercfg-at06w
  restartPolicy: Always  			     
11

  serviceAccount: default			    
12

  volumes:        	                            
13

  - emptyDir: {}
    name: registry-storage
  - name: default-token-br6yz
    secret:
      secretName: default-token-br6yz
Copy to Clipboard Toggle word wrap
Expand
ラベル説明

annotations:

Pod には 1 つまたは複数のラベルでタグ付けすることができ、このラベルを使用すると、一度の操作で Pod グループの選択や管理が可能になります。これらのラベルは、キー/値形式で metadata ハッシュに保存されます。この例で使用されているラベルは docker-registry=default です。

generateName:

Pod にはそれらの名前空間内に任意の名前がなければなりません。Pod 定義では、generateName 属性を使用して名前のベースを指定し、ランダムな文字を自動的に追加して一意の名前を生成できます。

containers:

containers は、コンテナー定義のアレイを指定します。(ほとんどの場合と同様に) この場合は、コンテナーを 1 つだけ定義します。

env:

環境変数は、必要な値を各コンテナーに渡します。

image:

Pod の各コンテナーは、独自の Docker 形式のコンテナーイメージからインスタンス化されます。

ports:

コンテナーは、Pod の IP で使用可能になったポートにバインドできます。

resources

Pod を指定する場合は、必要に応じて、コンテナーが必要とする各リソースの量を記述できます。指定する最も一般的なリソースは、CPU とメモリー (RAM) です。他のリソースも使用できます。

securityContext

OpenShift Online は、コンテナーが特権付きコンテナーとして実行を許可されるか、選択したユーザーとして実行を許可されるかどうかを指定するセキュリティーコンテキストを定義します。デフォルトのコンテキストには多くの制限がありますが、管理者は必要に応じてこれを変更できます。

volumeMounts:

コンテナーは外部ストレージボリュームがコンテナー内にマウントされるかどうかを指定します。この場合、レジストリーのデータを保存するためのボリュームと、OpenShift Online API に対して要求を行うためにレジストリーが必要とする認証情報へのアクセス用のボリュームがあります。

ImagePullSecrets

Pod には 1 つ以上のコンテナーを含めることができます。コンテナーは、レジストリーからプルする必要があります。認証を必要とするレジストリーからのコンテナーの場合は、名前空間に存在する ImagePullSecrets を参照する ImagePullSecrets のリストを提供できます。これらを指定すると、イメージをプルする際に Red Hat OpenShift Container Platform がコンテナーレジストリーで認証できるようになります。詳細は、Kubernetes ドキュメントの Resource Management for Pods and Containers を参照してください。

restartPolicy:

Pod 再起動ポリシーと使用可能な値の AlwaysOnFailure、および Never です。デフォルト値は Always です。

serviceAccount:

OpenShift Online API に対して要求する Pod は一般的なパターンです。この場合は serviceAccount フィールドがありますが、これは要求を行う際に Pod が認証する必要のあるサービスアカウントユーザーを指定するために使用されます。これにより、カスタムインフラストラクチャーコンポーネントの詳細なアクセス制御が可能になります。

volumes:

Pod は、コンテナーで使用できるストレージボリュームを定義します。この場合は、レジストリーストレージの一時的なボリュームおよびサービスアカウントの認証情報が含まれる secret ボリュームが提供されます。

Automation Controller UI で Pod 仕様を編集することにより、Automation Controller を使用して Kubernetes ベースのクラスターでジョブの実行に使用される Pod を変更できます。ジョブを実行する Pod の作成に使用される Pod 仕様は YAML 形式です。Pod 仕様の編集の詳細は、Pod 仕様のカスタマイズ を参照してください。

1.1.1. Pod 仕様のカスタマイズ

次の手順で Pod をカスタマイズできます。

手順

  1. Automation Controller UI で、Administration Instance Groups に移動します。
  2. Customize pod specification にチェックを入れます。
  3. Pod Spec Override フィールドで、トグルを使用して名前空間を指定し、Pod Spec Pod Spec Override フィールドを有効にして展開します。
  4. Save をクリックします。
  5. オプション: 追加でカスタマイズする場合は、Expand をクリックしてカスタマイズウィンドウ全体を表示します。

ジョブの起動時に使用されるイメージは、ジョブに関連付けられた実行環境によって決まります。Container Registry 認証情報が実行環境に関連付けられている場合、Automation Controller は ImagePullSecret を使用してイメージをプルします。シークレットを管理するパーミッションをサービスアカウントに付与しない場合は、ImagePullSecret を事前に作成してそれを Pod 仕様で指定し、使用する実行環境から認証情報を削除する必要があります。

1.1.2. Pod による他のセキュアなレジストリーからのイメージ参照の許可

コンテナーグループが、認証情報を必要とするセキュアなレジストリーのコンテナーを使用する場合は、コンテナーレジストリーの認証情報を、ジョブテンプレートに割り当てられている実行環境に関連付けることができます。Automation Controller はこれを使用して、コンテナーグループジョブが実行される OpenShift Container Platform の名前空間に ImagePullSecret を作成し、ジョブの完了後にクリーンアップします。

コンテナーグループの名前空間に ImagePullSecret がすでに存在する場合は、ContainerGroup のカスタム Pod 仕様で ImagePullSecret を指定できます。

コンテナーグループで実行しているジョブで使用されるイメージは、必ずそのジョブに関連付けられている実行環境によってオーバーライドされることに注意してください。

事前に作成された ImagePullSecrets の使用 (詳細)

このワークフローを使用して ImagePullSecret を事前に作成する場合は、以前にセキュアなコンテナーレジストリーにアクセスしたシステム上のローカル .dockercfg ファイルから作成に必要な情報を入手できます。

手順

.dockercfg file ファイル (新しい Docker クライアントの場合は $HOME/.docker/config.json) は、ユーザーの情報を保管する Docker 認証情報ファイルです (以前にセキュアな/セキュアではないレジストリーにログインしている場合)。

  1. セキュアなレジストリーの .dockercfg ファイルがすでにある場合は、次のコマンドを実行して、そのファイルからシークレットを作成できます。

    $ oc create secret generic <pull_secret_name> \
    --from-file=.dockercfg=<path/to/.dockercfg> \
    --type=kubernetes.io/dockercfg
    Copy to Clipboard Toggle word wrap
  2. または、$HOME/.docker/config.json ファイルがある場合は、以下のコマンドを実行します。

    $ oc create secret generic <pull_secret_name> \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
  3. セキュアなレジストリーの Docker 認証情報ファイルがまだない場合は、次のコマンドを実行してシークレットを作成できます。

    $ oc create secret docker-registry <pull_secret_name> \
    --docker-server=<registry_server> \
    --docker-username=<user_name> \
    --docker-password=<password> \
    --docker-email=<email>
    Copy to Clipboard Toggle word wrap
  4. Pod のイメージをプルするためにシークレットを使用するには、サービスアカウントにシークレットを追加する必要があります。この例では、サービスアカウントの名前は、Pod が使用するサービスアカウントの名前に一致している必要があります。デフォルトはデフォルトのサービスアカウントです。

    $ oc secrets link default <pull_secret_name> --for=pull
    Copy to Clipboard Toggle word wrap
  5. オプション: ビルドイメージのプッシュおよびプルにシークレットを使用するには、Pod 内にシークレットがマウント可能でなければなりません。以下でこれを実行できます。

    $ oc secrets link builder <pull_secret_name>
    Copy to Clipboard Toggle word wrap
  6. オプション: ビルドについては、ビルド設定内からのプルシークレットとしてシークレットを参照する必要もあります。

コンテナーグループが正常に作成されると、新しく作成されたコンテナーグループの Details タブが表示され、そこでコンテナーグループ情報を確認および編集できます。これは、Instance Group リンクから Edit をクリックした場合に開くメニューと同じです。インスタンスを編集し、このインスタンスグループに関連付けられたジョブを確認することもできます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat