第1章 Pod の仕様変更
Kubernetes の Pod は、単一のホスト上でネットワークとストレージを共有する 1 つ以上のコンテナーで設定される、展開可能な最小のコンピュートユニットです。Red Hat Ansible Automation Platform はデフォルトの Pod 仕様を使用しますが、これはユーザー定義の YAML または JSON ドキュメントでカスタマイズできます。
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 Online のドキュメント記載されています。
長期サービスを提供する Pod の例。
この例は、数多くの Pod 機能を示していますが、そのほとんどは他のトピックで説明されるため、ここでは簡単に説明します。
apiVersion: v1 kind: Pod metadata: annotations: { ... } labels: deployment: docker-registry-1 deploymentconfig: docker-registry docker-registry: default generateName: docker-registry-1- spec: containers: - env: - 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 imagePullPolicy: IfNotPresent name: registry ports: - containerPort: 5000 protocol: TCP resources: {} securityContext: { ... } volumeMounts: - mountPath: /registry name: registry-storage - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: default-token-br6yz readOnly: true dnsPolicy: ClusterFirst imagePullSecrets: - name: default-dockercfg-at06w restartPolicy: Always serviceAccount: default volumes: - emptyDir: {} name: registry-storage - name: default-token-br6yz secret: secretName: default-token-br6yz
apiVersion: v1
kind: Pod
metadata:
annotations: { ... }
labels:
deployment: docker-registry-1
deploymentconfig: docker-registry
docker-registry: default
generateName: docker-registry-1-
spec:
containers:
- env:
- 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
imagePullPolicy: IfNotPresent
name: registry
ports:
- containerPort: 5000
protocol: TCP
resources: {}
securityContext: { ... }
volumeMounts:
- mountPath: /registry
name: registry-storage
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-br6yz
readOnly: true
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: default-dockercfg-at06w
restartPolicy: Always
serviceAccount: default
volumes:
- emptyDir: {}
name: registry-storage
- name: default-token-br6yz
secret:
secretName: default-token-br6yz
ラベル | 説明 |
---|---|
|
Pod には 1 つまたは複数のラベルで "タグ付け" することができ、このラベルを使用すると、一度の操作で Pod グループの選択や管理が可能になります。これらのラベルは、キー/値形式で metadata ハッシュに保存されます。この例で使用されているラベルは |
|
Pod にはそれらの名前空間内に任意の名前がなければなりません。Pod 定義では、 |
|
|
| 環境変数は、必要な値を各コンテナーに渡します。 |
| Pod の各コンテナーは、独自の Docker 形式のコンテナーイメージからインスタンス化されます。 |
| コンテナーは、Pod の IP で使用可能になったポートにバインドできます。 |
| Pod を指定する場合は、必要に応じて、コンテナーが必要とする各リソースの量を記述できます。指定する最も一般的なリソースは、CPU とメモリー (RAM) です。他のリソースも使用できます。 |
| OpenShift Online は、コンテナーが特権付きコンテナーとして実行を許可されるか、選択したユーザーとして実行を許可されるかどうかを指定するセキュリティーコンテキストを定義します。デフォルトのコンテキストには多くの制限がありますが、管理者は必要に応じてこれを変更できます。 |
| コンテナーは外部ストレージボリュームがコンテナー内にマウントされるかどうかを指定します。この場合、レジストリーのデータを保存するためのボリュームと、OpenShift Online API に対して要求を行うためにレジストリーが必要とする認証情報へのアクセス用のボリュームがあります。 |
|
Pod には 1 つ以上のコンテナーを含めることができます。コンテナーは、レジストリーからプルする必要があります。認証を必要とするレジストリーからのコンテナーの場合は、名前空間に存在する |
|
Pod 再起動ポリシーと使用可能な値の |
|
OpenShift Online API に対して要求する Pod は一般的なパターンです。この場合は |
| Pod は、コンテナーで使用できるストレージボリュームを定義します。この場合は、レジストリーストレージの一時的なボリュームおよびサービスアカウントの認証情報が含まれる secret ボリュームが提供されます。 |
Automation Controller を使用し、Automation Controller UI で Pod 仕様を編集し、Kubernetes ベースのクラスターでジョブを実行するために使用される Pod を変更できます。ジョブを実行する Pod の作成に使用される Pod 仕様は YAML 形式です。Pod 仕様の編集の詳細は、Pod 仕様のカスタマイズ を参照してください。