【Kubernetes】kubespyでリソース監視

スポンサーリンク

はじめに

kubespyとはどんなものか、どうやって使うか、実際にkubespyを使ってKubernetesリソースを監視してみます。

kubespyとは

kubespyとは、リアルタイムにKubernetesリソースを監視できるツールです。

Kubernetesリソースが作成されたり、変更されるときに何が起こっているかをリアルタイムに表示するツールになっています。

GitHub - pulumi/kubespy: Tools for observing Kubernetes resources in real time, powered by Pulumi.
Tools for observing Kubernetes resources in real time, powered by Pulumi. - GitHub - pulumi/kubespy: Tools for observing Kubernetes resources in real time, powe...

インストール

brewを使う場合、下記でインストールできます。

brew install kubespy

使い方

kubespyには3つのコマンドがあります。

status

.statusフィールドの変更をJSON diffとして表示します。

kubespy status <apiVersion> <kind> [<namespace>/]<name>
Kubernetesオブジェクトを理解する
このページでは、KubernetesオブジェクトがKubernetes APIでどのように表現されているか、またそれらを.yamlフォーマットでどのように表現するかを説明します。 Kubernetesオブジェクトを理解する Kubernetesオブジェクト は、Kubernetes上で永続的なエンティティです。Kube...

changes

全てのフィールドの変更をJSON diffとして表示します。

kubespy changes <apiVersion> <kind> [<namespace>/]<name>

trace

Kubernetesリソースが行っていることをわかりやすくまとめて表示します。

kubespy trace <kind> [<namespace>/]<name>

Podを監視

kubespy statuskubespy 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リソースをリアルタイムで監視できる

参考

タイトルとURLをコピーしました