はじめに
kubespy
とはどんなものか、どうやって使うか、実際にkubespy
を使ってKubernetesリソースを監視してみます。
kubespyとは
kubespy
とは、リアルタイムにKubernetesリソースを監視できるツールです。
Kubernetesリソースが作成されたり、変更されるときに何が起こっているかをリアルタイムに表示するツールになっています。
インストール
brew
を使う場合、下記でインストールできます。
brew install kubespy
使い方
kubespy
には3つのコマンドがあります。
status
.status
フィールドの変更をJSON diffとして表示します。
kubespy status <apiVersion> <kind> [<namespace>/]<name>
changes
全てのフィールドの変更をJSON diffとして表示します。
kubespy changes <apiVersion> <kind> [<namespace>/]<name>
trace
Kubernetesリソースが行っていることをわかりやすくまとめて表示します。
kubespy trace <kind> [<namespace>/]<name>
Podを監視
kubespy status
とkubespy changes
でPodが作成されてたときの動きを見てみたいと思います。
監視するPodのマニフェストpod.yml
は下記になります。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
statusで監視
まずは下記コマンドでPodの監視が開始されます。
kubespy status v1 Pod nginx
マニフェストを反映させてPodを作成すると、.status
フィールドの差分が表示されます。
kubectl apply -f pod.yml
一旦、Podを削除します。
kubectl delete -f pod.yml
changesで監視
次にchanges
で監視してみます。
kubespy changes v1 Pod nginx
再度、マニフェストを反映させてPodを作成します。
kubectl apply -f pod.yml
kubespy status
とは異なり、全てのフィールドの差分が表示されます。
作成したPodは削除しておきます。
kubectl delete -f pod.yml
Deploymentを監視
次は、Deploymentが作成されるのをkubespy trace
で監視します。
作成するDeploymentのマニフェストdeployment.yml
は下記の通りです。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
下記コマンドでDeploymentの監視をします。
kubespy trace deployment nginx-deployment
マニフェストを反映させてDeploymentを作成すると、Deploymentの管理下にあるPodが作成されていくのが表示されているのがわかります。
kubectl apply -f deployment.yml
作成したリソースは削除しておきます。
kubectl delete -f deployment.yml
Serviceを監視
最後にServiceを監視してみます。
作成するServiceと紐づくDeploymentのマニフェストnginx.yml
は下記になります。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx-service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
下記コマンドでServiceの監視をします。
kubespy trace service nginx-service
マニフェストを反映させてServiceを作成すると、Serviceに紐づくPodとそのIPアドレスがReadyになると表示されていくのがわかります。
kubectl apply -f deployment.yml
まとめ
kubespy
を使うとKubernetesリソースをリアルタイムで監視できる