Label


kubernetesオブジェクトにkey-value形式で値を貼り付けるのはlabelです.
ラベルの目的は、オブジェクトの特徴をユーザーに露出させることです.
オブジェクトセットをlabelで整理するか、特定のlabelを使用してオブジェクトを一度にクエリーできます.
ラベルはいつでも作成、変更、削除できます.
microserviceを適用すると、構成されたサービスは多くの数字になります.
また、複数のバージョンが同時に動作する場合もあります.(stable, beta, canary)
このような状況は管理しにくいため,labelを用いて開発者の管理性を向上させることができる.
ラベルを指定する場合は、管理を容易にするためにObject yamlで定義できます.
apiVersion: v1
kind: Pod
metadata:
	name: kubia-manual-v2
    labels: 
    	creation_method: manual		-- key: creation_method value: manual
        env: prod			-- key: env value: manual
spec:
	containers:
    - image: luksa/kubia
      name: kubia
      ports:
      - containerPort: 8080
        protocol: TCP
podのlabelのコマンドを表示するのは簡単です.kubectl get pod --show-labelslabelの特定の値で露出したい場合は、-lスイッチを指定します.kubectl get pod -L creation_method,env実行中のオブジェクトにlabelを追加するにはkubectl label pod kubia-manual creation_method=menuallabelの値を変更するには、--overwriteコマンドを追加するだけです.kubectl label pod kubia-manual env=debug --overwritelabelクエリーのセクションセットの使用方法kubectl get pod -l creation_method=manuallabelがあるが、値がオブジェクトに関係しないオブジェクトをクエリーするには、次の手順に従います.kubectl get pod -l creation_method式を使用してクエリーを行うこともできます.kubectl get pod -l '!creation_method'

予定をLabelに制限する


一般的に、開発者はスケジューリングを気にする必要はありません.
yamlで指定したリソースとCPUの使用量だけで、kubernetesは各ノードに適切に配置されます.
しかし、nodeのspceがやや異なる場合もある.
また,特殊なpodは特定のノードにしか配置できない場合がある.
この場合、label制限スケジューリングも使用できます.
この場合、nodeにlabelを追加し、nodeSelectorというオプションを使用して配置されたnodeを選択できます.
apiVersion: v1
kind: Pod
metadata:
	name: kubia-manual-v3
spec:
	nodeSelector:
    	gpu: "true"		-- gpu=true라는 label을 가진 node에 배포된다.
	containers:
    - image: luksa/kubia
      name: kubia
      ports:
      - containerPort: 8080
        protocol: TCP