あなたを連れてkubernetes-k 8 s(第10編:k 8 s-Pod定義の詳細を深く把握)
7917 ワード
この章では、Kubernetesがコンテナアプリケーションをどのように公開し、管理するかについて詳しく説明します.主に、Podとコンテナの使用、アプリケーション構成管理、Podの制御とスケジューリング管理、Podのアップグレードとロールバック、Podの拡張メカニズムなどが含まれています.
1 Pod定義の詳細.
YAML形式のPod定義ファイルは以下の通りです.
プロファイルの詳細:
属性名
値範囲
必須かどうか(1必須)
値摘要
apiVersion
string
1
バージョン番号:v 1
kind
String
1
Pod
metadata
Object
1
メタデータ
metadata.name
String
1
Podの名称、命令規範はRFC 1035規範に適合する必要がある
metadata.namespace
String
1
Podのネーミングスペース、デフォルトはdefault
metadata.labels[]
List
カスタムラベルリスト
metadata.annotation[]
List
カスタムコメントリスト
Spec
Object
1
Podにおけるコンテナの詳細定義
spec.containers[]
List
1
Podのコンテナリスト
spec.containers[].name
String
1
容器の名称は、RFC 1035規格に適合する必要がある
spec.containers[].image
String
1
コンテナのミラー名
spec.containers[].imagePullPolicy
String
ミラー・プル・ポリシー.オプションには、Always、Nerver、IfNotPresent、デフォルトはAlwaysが含まれます.(1) Always.毎回ミラーを再プルしようとしていることを示します.(2)IfNotPresent:このミラーがローカルに存在する場合はローカルのミラーを使用し、ローカルが存在しない場合はミラーを引き抜く.(3)Nerver:ローカルミラーのみを使用することを示す.システムのデフォルト設定はAlwaysであり、以下の(1)imagePullPolicyもミラーのtagも指定していない.(2)imagePullPolicyは設定せず、ミラーtagはlatest(3)AlwaysPullImagesというアクセスコントローラ(Admission Controller)を有効にする
spec.containers[].command[]
List
コンテナの起動コマンドのリスト、指定しない場合はミラーパッケージで使用する起動コマンド
spec.containers[].args[]
List
コンテナの起動コマンドパラメータのリスト
spec.containers[].workingDir
String
コンテナの作業ディレクトリ
spec.containers[].volumeMounts[]
List
コンテナ内部にマウントされたストレージボリューム構成
spec.containers[].volumeMounts[].name
String
Podで定義されている共有ストレージボリュームの名前を参照するには、volumes[]で定義されている共有ストレージボリュームの名前を使用する必要があります.
spec.containers[].volumeMounts[].mountPath
String
ストレージボリュームのコンテナ内のMountの絶対パスは、512文字未満である必要があります
spec.containers[].volumeMounts[].readOnly
Boolean
読み取り専用モードかどうか、デフォルトは読み取り/書き込みモード
spec.containers[].ports[]
List
コンテナが露出するポート番号のリスト
spec.containers[].ports[].name
String
ポート名
spec.containers[].ports[].containerPort
Int
コンテナのリスニングが必要なポート番号
spec.containers[].ports[].hostPort
Int
コンテナが存在するホストが傍受するポート番号.デフォルトはcontainerPortと同じで、hostPortを設定すると、同じホストはコンテナの2番目のコピーを起動できません.
spec.containers[].ports[].protocol
String
ポートプロトコル、TCPとUDPをサポートし、デフォルト値はTCP
spec.containers[].env[]
List
コンテナの実行前に設定する環境変数のリスト
spec.containers[].env[].name
String
環境変数の名前
spec.containers[].env[].value
String
環境変数の値
spec.containers[].resources
Object
リソース制限とリソースリクエストの設定
spec.containers[].resources.limits
Object
リソース制限の設定
spec.containers[].resources.limits.cpu
String
CPU制限、単位core数、docker run--cpu-sharesパラメータに使用
spec.containers[].resources.limits.memory
String
メモリ制限、単位はMIB、GIBなどです.docker run--memoryに使用されます
spec.containers[].resources.requests
Object
リソース制限の設定
spec.containers[].resources.requecsts.cpu
String
CPU要求、単位core数、コンテナ起動の初期使用可能数
spec.containers[].resources.requests.memory
String
メモリ要求、単位はMIB、GIBなど、コンテナ起動の初期使用可能数
spec.volumes[]
List
このPodで定義されている共有ストレージボリュームのリスト
spec.volumes[].name
String
共有ストレージボリューム名、1つのPodにおける各ストレージボリュームに1つの名前、コンテナ定義部のcontainers[]を定義する.volumeMounts[].nameは、共有ストレージボリュームの名前を変更します.volumeのタイプには、emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、sercret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolumeがあり、複数のVolumeを定義することができ、各Volumeのnameは一意である.
spec.volumes[].emptyDir
Object
タイプemptyDirのストレージボリュームは、Podと同じライフサイクルの一時ディレクトリを表します.値は空のオブジェクトです.emptyDir{}
spec.volumes[].hostPath
Object
タイプhostPathのストレージボリュームは、Podが存在するホストのディレクトリをマウントし、volumes[]を通過することを示す.hostPath.path指定
spec.volumes[].hostPath.path
String
Podが存在するホストのディレクトリ、コンテナ内のmountのディレクトリに使用されます
spec.volumes[].secret
Object
タイプはsecretストレージボリュームで、クラスタの事前定義されたsecretオブジェクトをコンテナ内部にマウントすることを示します.
spec.volumes[].configMap
Object
タイプはconfigMapのストレージボリュームで、情熱的に定義されたconfigMapオブジェクトをコンテナ内にマウントすることを示します.
spec.volumes[].livenessProbc
Object
Pod内の各容器の健康診断の設定に対して、何回も応答がないことを検出した後、システムは自動的にこの容器を再起動し、設定できる方法はexec、httpGet、およびtcpSocketを含む.1つの容器に健康診断方法を設定するだけです.
spec.volumes[].livenessProbe.exec
Object
Pod内の各容器の健康診断の設定、exec方式
spec.volumes[].livenessProbe.exec.command[]
String
exec方式で作成するコマンドまたはスクリプト
spec.volumes[].livenessProbe.httpGet
Object
Pod内の各種容器の健康診断の設定に対して、HTTPGet方式、path、portを指定する必要がある
spec.voulumes[].livenessProbe.tcpSocket
Object
Pod内の各容器の健康診断の設定、tcpSocket方式
spec.volumes[].livenessProbe.initiaDelaySeconds
Number
容器起動完了後の初回検出時間、単位s
spec.volumes[].livenessProbe.timeoutSeconds
Number
容器健康診断のプローブ待機応答のタイムアウト時間設定.単位はs、デフォルトは1 sです.タイムアウト時間の設定を超えると、コンテナが不健康であると判断し、コンテナが再起動されます.
spec.volumes[].livenessProbe.PeriodSeconds
Number
容器の健康診断の定期的なプローブ時間の設定、単位はsで、デフォルトの10 sは1回プローブします
spec.restartPolicy
String
Podの再起動ポリシー.オプションはAlways、OnFailure、NeverのデフォルトはAlwaysです.(1)Always:Podが運転を終了すると、コンテナがどのように終了してもkubectlは再起動します(2)OnFailure:Podがゼロ以外の終了コードで終了した場合にのみ、kubectlはコンテナを再起動します.コンテナが正常に終了した場合、kubectlは再起動しません(3)Never:Podが終了した後、kubectlは終了コードをMasterに報告し、Podは再起動しません
spec.nodeSelector
Object
ノードのLabelを設定し、key-value形式で指定します.PodはこれらのLabelを持つノードにスケジューリングされます.
spec.imagePullSecrets
Object
pullミラーリング時に使用するSecret名をname:secretkey形式で指定
spec.hostNetwork
Boolean
ホストネットワークモードを使用するかどうか、デフォルトはfalseで、trueに設定するとコンテナがホストネットワークを使用し、Dockerブリッジを使用しなくなり、同じホスト上で2番目のコピーを開始できなくなります.
1 Pod定義の詳細.
YAML形式のPod定義ファイルは以下の通りです.
apiVersion:v1
kind: Pod
metadata:
name: string
namespace: string
lables:
- name:string
annotations:
- nameL string
spec:
containers:
- name: string
image: string
imagePullPolicy: [Always| Never| IFNotPresent]
commadn: [string]
args: [String]
workingDir: string
volumeMounts:
- name: string
mountPath: string
readOnly: boolean
ports:
- name: string
containerPort: int
hostPort: int
protocol: string
env:
- name:string
value: string
resources:
limits:
cpu: string
memory: string
requests:
cpu: string
memory: string
livenessFrobe:
exec:
commadn: [string]
httpGet:
path: string
port: number
host: string
scheme: string
httpHeaders:
- name: string
value: string
tcpSocket:
port: number
initialDelaySeconds: 0
timeoutSeconds: 0
periodSeconds: 0
successThreshold: 0
failureThreshold: 0
securityContext:
privileged: false
restartFolicy: [Always| Never|| OnFaliure]
nodeSelector: object
imagePullSecrets:
- name: string
hostNetwork: false
volumes:
- name: string
enptyDir: {}
hostPath:
path: string
secret:
secretName: string
items:
- key: string
path: string
configMap:
name: string
items:
- key: string
path: string
プロファイルの詳細:
属性名
値範囲
必須かどうか(1必須)
値摘要
apiVersion
string
1
バージョン番号:v 1
kind
String
1
Pod
metadata
Object
1
メタデータ
metadata.name
String
1
Podの名称、命令規範はRFC 1035規範に適合する必要がある
metadata.namespace
String
1
Podのネーミングスペース、デフォルトはdefault
metadata.labels[]
List
カスタムラベルリスト
metadata.annotation[]
List
カスタムコメントリスト
Spec
Object
1
Podにおけるコンテナの詳細定義
spec.containers[]
List
1
Podのコンテナリスト
spec.containers[].name
String
1
容器の名称は、RFC 1035規格に適合する必要がある
spec.containers[].image
String
1
コンテナのミラー名
spec.containers[].imagePullPolicy
String
ミラー・プル・ポリシー.オプションには、Always、Nerver、IfNotPresent、デフォルトはAlwaysが含まれます.(1) Always.毎回ミラーを再プルしようとしていることを示します.(2)IfNotPresent:このミラーがローカルに存在する場合はローカルのミラーを使用し、ローカルが存在しない場合はミラーを引き抜く.(3)Nerver:ローカルミラーのみを使用することを示す.システムのデフォルト設定はAlwaysであり、以下の(1)imagePullPolicyもミラーのtagも指定していない.(2)imagePullPolicyは設定せず、ミラーtagはlatest(3)AlwaysPullImagesというアクセスコントローラ(Admission Controller)を有効にする
spec.containers[].command[]
List
コンテナの起動コマンドのリスト、指定しない場合はミラーパッケージで使用する起動コマンド
spec.containers[].args[]
List
コンテナの起動コマンドパラメータのリスト
spec.containers[].workingDir
String
コンテナの作業ディレクトリ
spec.containers[].volumeMounts[]
List
コンテナ内部にマウントされたストレージボリューム構成
spec.containers[].volumeMounts[].name
String
Podで定義されている共有ストレージボリュームの名前を参照するには、volumes[]で定義されている共有ストレージボリュームの名前を使用する必要があります.
spec.containers[].volumeMounts[].mountPath
String
ストレージボリュームのコンテナ内のMountの絶対パスは、512文字未満である必要があります
spec.containers[].volumeMounts[].readOnly
Boolean
読み取り専用モードかどうか、デフォルトは読み取り/書き込みモード
spec.containers[].ports[]
List
コンテナが露出するポート番号のリスト
spec.containers[].ports[].name
String
ポート名
spec.containers[].ports[].containerPort
Int
コンテナのリスニングが必要なポート番号
spec.containers[].ports[].hostPort
Int
コンテナが存在するホストが傍受するポート番号.デフォルトはcontainerPortと同じで、hostPortを設定すると、同じホストはコンテナの2番目のコピーを起動できません.
spec.containers[].ports[].protocol
String
ポートプロトコル、TCPとUDPをサポートし、デフォルト値はTCP
spec.containers[].env[]
List
コンテナの実行前に設定する環境変数のリスト
spec.containers[].env[].name
String
環境変数の名前
spec.containers[].env[].value
String
環境変数の値
spec.containers[].resources
Object
リソース制限とリソースリクエストの設定
spec.containers[].resources.limits
Object
リソース制限の設定
spec.containers[].resources.limits.cpu
String
CPU制限、単位core数、docker run--cpu-sharesパラメータに使用
spec.containers[].resources.limits.memory
String
メモリ制限、単位はMIB、GIBなどです.docker run--memoryに使用されます
spec.containers[].resources.requests
Object
リソース制限の設定
spec.containers[].resources.requecsts.cpu
String
CPU要求、単位core数、コンテナ起動の初期使用可能数
spec.containers[].resources.requests.memory
String
メモリ要求、単位はMIB、GIBなど、コンテナ起動の初期使用可能数
spec.volumes[]
List
このPodで定義されている共有ストレージボリュームのリスト
spec.volumes[].name
String
共有ストレージボリューム名、1つのPodにおける各ストレージボリュームに1つの名前、コンテナ定義部のcontainers[]を定義する.volumeMounts[].nameは、共有ストレージボリュームの名前を変更します.volumeのタイプには、emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、sercret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolumeがあり、複数のVolumeを定義することができ、各Volumeのnameは一意である.
spec.volumes[].emptyDir
Object
タイプemptyDirのストレージボリュームは、Podと同じライフサイクルの一時ディレクトリを表します.値は空のオブジェクトです.emptyDir{}
spec.volumes[].hostPath
Object
タイプhostPathのストレージボリュームは、Podが存在するホストのディレクトリをマウントし、volumes[]を通過することを示す.hostPath.path指定
spec.volumes[].hostPath.path
String
Podが存在するホストのディレクトリ、コンテナ内のmountのディレクトリに使用されます
spec.volumes[].secret
Object
タイプはsecretストレージボリュームで、クラスタの事前定義されたsecretオブジェクトをコンテナ内部にマウントすることを示します.
spec.volumes[].configMap
Object
タイプはconfigMapのストレージボリュームで、情熱的に定義されたconfigMapオブジェクトをコンテナ内にマウントすることを示します.
spec.volumes[].livenessProbc
Object
Pod内の各容器の健康診断の設定に対して、何回も応答がないことを検出した後、システムは自動的にこの容器を再起動し、設定できる方法はexec、httpGet、およびtcpSocketを含む.1つの容器に健康診断方法を設定するだけです.
spec.volumes[].livenessProbe.exec
Object
Pod内の各容器の健康診断の設定、exec方式
spec.volumes[].livenessProbe.exec.command[]
String
exec方式で作成するコマンドまたはスクリプト
spec.volumes[].livenessProbe.httpGet
Object
Pod内の各種容器の健康診断の設定に対して、HTTPGet方式、path、portを指定する必要がある
spec.voulumes[].livenessProbe.tcpSocket
Object
Pod内の各容器の健康診断の設定、tcpSocket方式
spec.volumes[].livenessProbe.initiaDelaySeconds
Number
容器起動完了後の初回検出時間、単位s
spec.volumes[].livenessProbe.timeoutSeconds
Number
容器健康診断のプローブ待機応答のタイムアウト時間設定.単位はs、デフォルトは1 sです.タイムアウト時間の設定を超えると、コンテナが不健康であると判断し、コンテナが再起動されます.
spec.volumes[].livenessProbe.PeriodSeconds
Number
容器の健康診断の定期的なプローブ時間の設定、単位はsで、デフォルトの10 sは1回プローブします
spec.restartPolicy
String
Podの再起動ポリシー.オプションはAlways、OnFailure、NeverのデフォルトはAlwaysです.(1)Always:Podが運転を終了すると、コンテナがどのように終了してもkubectlは再起動します(2)OnFailure:Podがゼロ以外の終了コードで終了した場合にのみ、kubectlはコンテナを再起動します.コンテナが正常に終了した場合、kubectlは再起動しません(3)Never:Podが終了した後、kubectlは終了コードをMasterに報告し、Podは再起動しません
spec.nodeSelector
Object
ノードのLabelを設定し、key-value形式で指定します.PodはこれらのLabelを持つノードにスケジューリングされます.
spec.imagePullSecrets
Object
pullミラーリング時に使用するSecret名をname:secretkey形式で指定
spec.hostNetwork
Boolean
ホストネットワークモードを使用するかどうか、デフォルトはfalseで、trueに設定するとコンテナがホストネットワークを使用し、Dockerブリッジを使用しなくなり、同じホスト上で2番目のコピーを開始できなくなります.