kubernetesのためのリソースは、YAMLマークアップ言語、自己定義をロードするために使用することができます。
YAMLは(/jæməl/テールラクダラクダと同様に)高度に読み取り可能である、シリアル化形式を表現するために使用されるデータ。YAMLのを含め、他の言語への参照:C、PythonやPerlの、およびXMLで、電子メールのデータ形式(RFC 2822)からインスピレーションを得ます。2001年にクラーク・エヴァンスは、[1]、加えてIngyが共同デザイナーネットドットとオレンベン・キキが、この言語[2]である第一言語を発表しました。いくつかの現在のプログラミングやスクリプト言語のサポート(または解決)、この言語がありました。 YAMLは「YAMLはマークアップ言語ではありません」である (YAMLはマークアップ言語ではありません)、再帰的頭字語です。言語の開発では、YAMLは、実際には意味:「もう一つのマークアップ言語」(まだマークアップ言語)[3]が、データセンターなどの言語を強調するためではなく、マークアップ言語として名前を変更した逆略語で、焦点を当てます。
使用YAMLは、あなたに含むのいくつかの利点を与えるK8Sを定義するために使用されます。
- コンビニ:あなたは、もはやコマンドを実行するには、コマンドラインパラメータの多くを追加する必要があります。
- 保守性:YAMLファイルは、ソースコントロールすることができ、あなたはすべての操作を追跡することができます
- 柔軟性:あなたはYAMLで、コマンドライン構造よりも複雑なを作成することができます
YAMLはJSONのスーパーセットである、それは任意の有効なJSONファイルは、有効なYAMLファイルであることを意味しています。あなたはJSONを知っているのであれば、一方では、あなたはそれがあったことができます(代わりに誰か他の人の読書の)独自のYAMLを書くつもりです。一方で、それはあなたが例を見つけるためにオンラインで行くことにしようとしていても、残念ながら、あまりそうであるが、彼らは通常、JSONではありませんので、我々はそれに慣れる必要があるかもしれません。しかし、そこにJSONの場合の方が便利かもしれので、あなたはJSONを知って非常に幸せになります。
構造の幸いなことに、YAMLは2種類のみ、あなたが知っておく必要があります。
- リスト
- YAMLリストオブジェクトのシーケンスであります
- 地図
- マップはあなたのキーの組み合わせをできるようになるには、コンフィギュレーション情報を設定する方が便利なことができます
資源ポッドのリストを見ます
[ルート@ KUBE〜]#kubectl GET POD nginxのアプリ-7756966bc9-qrksb -o YAML
//これはkubectlランウェイポッドを介して実行され、その後、我々は、手動でその後、ロードするために、構成ファイルを生成し、これに類似したYAMLを定義することができますPOD
apiVersion:V1
種類:ポッド
メタデータ:
creationTimestamp: "2019-07-16T06:39:02Z"
generateName:nginxのアプリ-7756966bc9-
ラベル:
PODハッシュ鋳型:7756966bc9
RUN:nginxのアプリの
名前:nginxの-APP- qrksb-7756966bc9
名前空間:デフォルト
ownerReferences:
- apiVersion:アプリ/ V1
blockOwnerDeletion:trueに
コントローラー:trueに
種類:さらにreplicaSetの
名前:nginxのアプリ-7756966bc9
UID:51997507-0ad5-4f71-86db-3ad6eff70171
resourceVersion: "603 662"
selfLink:/ API / V1 /ネーム/デフォルト/ポッド/ nginxのアプリ-7756966bc9-qrksb
UID:7035cfbd-a8f3-45a9-933c-4ce1cef45183
仕様:
コンテナ:
-イメージ:nginxの:高山
imagePullPolicy:IfNotPresentの
名前:nginxのアプリの
ポート:
- containerPort:80
プロトコル:TCPの
リソース:{}
terminationMessagePath:は/ dev /終了ログ
terminationMessagePolicy:ファイル
volumeMounts:
- MOUNTPATH:/var/run/secrets/kubernetes.io/serviceaccount
名前:デフォルト・トークンbsthbの
読み取り専用:真
dnsPolicy:ClusterFirst
enableServiceLinks:真の
のnodeName:kube.node1
優先順位:0
restartPolicy:常に
schedulerName:デフォルトスケジューラ
SecurityContextが:{}
serviceAccount:デフォルト
serviceAccountName:デフォルト
terminationGracePeriodSeconds:30
tolerations:
-効果:NOEXECUTEの
キー:node.kubernetes.io/not-ready
オペレータは:存在する
300:tolerationSeconds
-効果: NOEXECUTE
キー:node.kubernetes.io/unreachable
オペレーターは:存在する
300:tolerationSeconds
:ボリューム
名- :デフォルト・トークンbsthb
秘密:
DEFAULTMODE:420
secretName:デフォルト・トークンbsthbの
ステータス:
条件:
- lastProbeTime:nullの
lastTransitionTime: "2019-07-16T06:39:02Z"
状態: "真"
タイプ:初期化
- lastProbeTime:nullの
lastTransitionTime: "2019-07-16T06:39:36Z"
状態: "真"
のタイプ:レディ
- lastProbeTime:nullの
lastTransitionTime: "2019-07-16T06:39:36Z"
状態: "真"
タイプ:ContainersReady
- lastProbeTime:nullの
lastTransitionTime: "2019-07-16T06:39:02Z"
状態: "真"
のタイプ:PodScheduled
containerStatuses:
- ContainerIDの:ドッカ:// 6f50a8038d1f9b484c3af46fa21ef0bdce963b95c4f7f5980302bc70ca46eea6
画像:nginxの:高山
IMAGEID:ドッキングウィンドウ-pullable:// nginxの@ SHA256:17bd1698318e9c0f9ba2c5ed49f53d690684dab7fe3e8019b855c352528d57be
lastStateを:{}
名前:nginxのアプリ
準備:真
RESTARTCOUNT:0
状態:
ランニング:
startedAt: "2019-07-16T06:39:36Z"
次のhostIP:10.2.61.22
フェーズ:実行
podIP:10.244.2.7
qosClass:にBestEffort
のstartTime: "2019-07-16T06:39:02Z"
[ルート@のKUBE〜]#
我々の分析では、YAMLフォーマットのために行われます。
#mapsキーである|値の組み合わせ、リストはダッシュキー[引数、引数、複数の項目の組み合わせ]である-初めに()
apiVersion://地図V1の 種類://ポッド地図 メタデータ: 名前:// RSSサイト地図 ラベル: アプリケーション:ウェブ/地図 スペック://地図 コンテナ://リスト名 -名:フロントエンド//子リストのパラメータが地図です 画像:Nginxは// Listパラメータサブキーは、マップのある ポート: - containerPort:80 //リストのパラメータは地図サブキー -名前:RSSリーダーの 画像:nickchase / RSS-PHP-Nginxは:V1 ポート: - containerPort:88
単純なファイルYAMLを作成します。
ルートの@ KUBEテスト]#猫ポッド-demo.yaml apiVersion:v1の 種類:ポッドの メタデータ: 名前:ポッドテスト 名前空間:デフォルト のラベル: アプリ:myappの ティア:フロントエンドの 仕様: コンテナ: -名前:MyTestという イメージ:nginxの:最新の [ルートの@ KUBEテスト]#
[ルート@ KUBEテスト]#のkubectl -fポッド-demo.yaml作成
作成したポッド/ポッドテストを
[ルート@のKUBEテスト]#kubectl GETポッド
NAME READYステータスが再起動しAGEの
busy1-78c9f4b47-pm2qx 0/1 CrashLoopBackOff 22百メートル
busy2- 0 2d23h実行7f9dbf96d6-2d778 1/1
busy3-9877c76bf-ts5rl 1/1ランニング0 2d23h
nginxの-7bb7cd8db5-6sgvp 1/1実行0 3D
ContainerCreating nginxの-APP-54c844949f-6zlmr 0/1 0 41H
nginxの-APP-54c844949f- 0 2D実行n82d6 1/1
nginxのアプリ-54c844949f-xmkb8 1/1 0 2Dを実行します
nginxのアプリ-7756966bc9-qrksb 1/1 0 2d2hを実行します
ポッド・テスト0/1 ContainerCreating 0 1S
[ルート@のKUBEテスト]#
[ルート@のKUBEテスト]#のkubectlはポッドポッドテスト記述 名:ポッド・テスト・ ネーム:デフォルトの 優先度:0 ノード:kube.node1 / 10.2.61.22 開始時間:木、2019年7月18日16時44分23秒0800 ラベル:アプリ= myappの ティア=フロントエンド 注釈:<なし> ステータス:実行 IP:10.244.2.12 コンテナ: MyTestに: コンテナID:ドッキングウィンドウ:// 4e40fc5b6cae440881cea707b79c2d17692c47d75df69a571fa0e7d57dff5e3aの 画像:nginxの:最新 画像ID:ドッキングウィンドウ-pullable:// nginxの@ SHA256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbb ポート:<なし> ポートホスト:<なし> のQoSクラス:にBestEffort 状態:実行するには、 開始:木、2019年7月18日16時44分46秒0800は レディ:真の 再起動が数:0 環境:<なし> マウント: デフォルト・トークンbsthbから/var/run/secrets/kubernetes.io/serviceaccountを( RO) 条件: タイプステータス 初期化トゥルー レディ真 ContainersReady真は、 真PodScheduled :ボリュームの デフォルト・トークンbsthb: 種類:シークレット(秘密)によって移入ボリューム SecretNameを:デフォルト・トークンbsthb オプション:偽 ノードセレクタ:<なし> Tolerations:300S用node.kubernetes.io/not-ready:NoExecute 300Sのためのnode.kubernetes.io/unreachable:NoExecute イベント: タイプの理由年齢メッセージから ---- ------ ---- ---- ------- 通常のスケジュール62Sのデフォルトのスケジューラに成功割り当てられたデフォルト/ポッド-テストはkube.node1する ノーマル引っ張る61S kubelet、kube.node1画像引っ張る「nginxのを:最新の」 ノーマルプル40代をkubelet、首尾よく引っ張っkube.node1画像"nginxの:最新の" ノーマル作成さ40代kubelet、kube.node1作成したコンテナのMyTest ノーマル開始39S kubelet、kube.node1開始コンテナのMyTest [ルート@ KUBEテスト]#
[ルート@ KUBE〜]#のkubectl API-バージョン admissionregistration.k8s.io/v1beta1の apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1の apiregistration.k8s.io/v1beta1の アプリケーション/ V1の アプリケーション/ v1beta1の アプリケーション/ v1beta2の 認証。 k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 自動スケーリング/ v1の 自動スケーリング/ v2beta1 自動スケーリング/ v2beta2 バッチ/ V1 バッチ/ v1beta1の certificates.k8s.io/v1beta1の コーディネート。 k8s.io/v1 coordination.k8s.io/v1beta1の events.k8s.io/v1beta1の 拡張/ v1beta1の networking.k8s.io/v1の networking.k8s.io/v1beta1 node.k8s.io/v1beta1の / v1beta1ポリシー rbac.authorization.k8s.io/v1の rbac.authorization.k8s.io/v1beta1の scheduling.k8s.io/v1の scheduling.k8s.io/v1beta1の storage.k8s.io/v1の ストレージ.k8s.io / v1beta1 V1 [ルート@のKUBE〜]#のkubectlポッドを説明 KIND:ポッド VERSION:V1の 説明: ポッドがホスト上で実行することができ、容器のコレクションですが。このリソースがされ 、クライアントによって作成され、ホストに予定さ。 FIELDS: apiVersion <ストリング> APIVersionは、この表現のバージョンスキーマ定義 オブジェクト。サーバは、最新の内部に認識スキーマを変換する必要があります 値は、と認識されていない値を拒否することができます。さらに詳しい情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources 種類の<string> 種類は、このオブジェクトは、RESTリソース表す文字列値で 表します。サーバーは、クライアントが送信するエンドポイントからこれを推論することができる に要求を。更新することはできません。キャメルケースで。さらに詳しい情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds メタデータの<Object> スタンダード・オブジェクトのメタデータ。さらに詳しい情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata スペック<オブジェクト> ポッドの所望の動作の仕様。さらに詳しい情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status 状況<オブジェクト> ポッドの最近観察状態。このデータは最新ではないかもしれません。 システムによって作成。読み取り専用。さらに詳しい情報: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status [ルート@のKUBE〜]#