あなたを連れてkubernetes-k 8 s(第10編:k 8 s-Pod定義の詳細を深く把握)

7917 ワード

この章では、Kubernetesがコンテナアプリケーションをどのように公開し、管理するかについて詳しく説明します.主に、Podとコンテナの使用、アプリケーション構成管理、Podの制御とスケジューリング管理、Podのアップグレードとロールバック、Podの拡張メカニズムなどが含まれています.
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番目のコピーを開始できなくなります.