背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『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
シングルクオート(’)で指定しないといけないっぽい・・・