初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Label 編


背景

個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。

その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。

引用や参考と今回の自分の勉強用の書籍の紹介

技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方

実際の学びについて

書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。

勉強開始

ここから Label と Labelセレクタとかを学んでいきます。

my-pod.yaml
apiVersion: v1
kind: Pod
metadata: # 全てのオブジェクトが共通で持つメタ情報 (1)
  name: my-pod
  namespace: my-namespace
  labels: # Labelの設定 (2)
    environment: production
    release: canary
spec:
  containers: # Podに含むコンテナのリスト (1)
  - name: nginx # コンテナの名前
    image: k8spracticalguide/nginx:1.15.5 # コンテナイメージ
    ports:
    - containerPort: 80
my-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations: # Annotationの設定 (2)
    prometheus.io/scrape: "true"
    prometheus.io/path: "/metrics"
    prometheus.io/port: "9102"
spec:
  selector:
    app: my-app
  ports:
  - port: 8080
    targetPort: 80

コマンド郡

Pod のマニュフェストファイルを適用する

$ kubectl apply -f my-pod.yaml

namespace を指定して Pod 検索

$ kubectl get pods --namespace=my-namespace
NAME     READY   STATUS    RESTARTS   AGE
my-pod   1/1     Running   0          13m

environment ラベルを指定して検索

$ kubectl get pods -l environment=production --namespace=my-namespace
NAME     READY   STATUS    RESTARTS   AGE
my-pod   1/1     Running   0          11m

environment ラベルを指定して検索(否定したとき)

$ kubectl get pods -l environment!=production --namespace=my-namespace
No resources found.

environment ラベルを等価以外で検索

$ kubectl get pods -l 'environment in (production)' --namespace=my-namespace
NAME     READY   STATUS    RESTARTS   AGE
my-pod   1/1     Running   0          12m

シングルクオート(’)で指定しないといけないっぽい・・・