manifestを使ってpodを作成してみる
minikubeを利用してmanifestからpodを作成してみたメモです
前回kubernetesクラスタとしてminikubeをインストールしたので、
manifestを使ってpodを作成してみようと思います。
下記バージョンで試してみます。
- macOS mojave 10.14.6
- minikube 1.25.2
- kubernetes 1.23.3
- kubectl 1.22
manifest
下記のmanifestを作成します。
前回使ったechoserverのイメージを使ってみます。
❯ vi my_echoserver.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-echoserver
spec:
containers:
- name: my-echoserver-container
image: k8s.gcr.io/echoserver:1.10
minikubeを起動
❯ minikube start 😄 Darwin 10.14.6 上の minikube v1.25.2 ✨ docker ドライバーが自動的に選択されました。他の選択肢: hyperkit, virtualbox, ssh 👍 minikube クラスター中のコントロールプレーンの minikube ノードを起動しています 🚜 ベースイメージを取得しています... 🔥 docker container (CPUs=2, Memory=1985MB) を作成しています... 🐳 Docker 20.10.12 で Kubernetes v1.23.3 を準備しています... ▪ kubelet.housekeeping-interval=5m ▪ 証明書と鍵を作成しています... ▪ コントロールプレーンを起動しています... ▪ RBAC のルールを設定中です... 🔎 Kubernetes コンポーネントを検証しています... ▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています 🌟 有効なアドオン: storage-provisioner, default-storageclass 🏄 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
-f
でmanifestを指定してcreateします。
❯ kubectl create -f my_echoserver.yaml
pod/my-echoserver created
podが作成されていることを確認。
❯ kubectl get pods NAME READY STATUS RESTARTS AGE my-echoserver 1/1 Running 0 8s
同様にmanifestを指定して削除します。
❯ kubectl delete -f my_echoserver.yaml pod "my-echoserver" deleted
podが削除されていることを確認。
❯ kubectl get pods
No resources found in default namespace.
label
manifestでkey-value形式のlabelを付けることができ、labelを指定して操作することができます。
env
とtype
というlabelを指定してみます。
❯ cat my_echoserver_label.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-echoserver
labels:
env: beta
type: web
spec:
containers:
- name: my-echoserver-container
image: k8s.gcr.io/echoserver:1.10
podを作成。
❯ kubectl create -f my_echoserver_label.yaml
pod/my-echoserver created
-l
でlabelを指定してenv
labelがあるpodのみを表示してみます。
❯ kubectl get pods -l env NAME READY STATUS RESTARTS AGE my-echoserver 1/1 Running 0 73s
labelのvalueも指定してpodを表示することもできます。
❯ kubectl get pods -l env=beta NAME READY STATUS RESTARTS AGE my-echoserver 1/1 Running 0 81s
存在しないvalueを指定してみると何も表示されません。
❯ kubectl get pods -l env=release No resources found in default namespace.
-L
を指定すると実際の値も表示されます。
❯ kubectl get pods -L env NAME READY STATUS RESTARTS AGE ENV my-echoserver 1/1 Running 0 118s beta
sh
exec -it
でterminalを開き、-- /bin/sh
を指定することでシェルを操作することができます。
❯ kubectl exec -it my-echoserver -- /bin/sh # ls README.md bin boot certs core dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
今は--
なしだと警告が出るようになってます。
❯ kubectl exec -it my-echoserver /bin/sh kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. # ls README.md bin boot certs core dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
おわり。