🫣

Tried k8sgpt job

2023/04/19に公開

こんにちは。Enabling team の山本です。

今回は、k8sgpt について書きます。

ChatGPT の登場以降、Engineer としての存在意義を考えざるをえない状況にあると思います。

今回、検証する k8sgpt は、次のとおり説明されています。

Giving Kubernetes SRE superpowers to everyone

今の自分の Role の消滅さえ近づいている 😱

ひとまず、k8sgpt について活用方法を調べていきます。

k8sgpt については、いろんな方が記事を残していますので、使い方は割愛します。
今回、Job として、k8sgpt を動かすことによって、自動的に Cluster のエラーを通知する仕組みを考察します。

TL;DR

  • 分析した内容を Webhook で通知することは可能。
  • 情報の漏洩を考えると、Production 環境で運用することは難しい。Staging 環境で分析し、その内容を Production 環境に反映することは可能かも。

RBAC の準備

apiVersion: v1
kind: ServiceAccount
metadata:
  name: gpt-ksa
  namespace: gpt
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gpt-cr
  namespace: gpt
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gpt-crb
  namespace: gpt
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: gpt-cr
subjects:
- kind: ServiceAccount
  name: gpt-ksa
  namespace: gpt

Job の作成

apiVersion: batch/v1
kind: Job
metadata:
  name: gpt-job-e
  namespace: gpt
spec:
  template:
    spec:
      serviceAccountName: gpt-ksa
      containers:
      - name: gpt-job
        image: google/cloud-sdk
        command: ["bash", "-c"]
        args:
        - curl -LO https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.2.4/k8sgpt_amd64.deb && dpkg -i k8sgpt_amd64.deb && k8sgpt version && k8sgpt auth --password=************* && k8sgpt analyze --language Japanaese --explain --no-cache
      restartPolicy: Never
  backoffLimit: 4
EOF

結果

yamamoto_daisuke@cloudshell:~ (hoge-334000)$ k logs gpt-job-e-gstgv -n gpt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 16.3M  100 16.3M    0     0  10.5M      0  0:00:01  0:00:01 --:--:-- 51.0M
Selecting previously unselected package k8sgpt.
(Reading database ... 98425 files and directories currently installed.)
Preparing to unpack k8sgpt_amd64.deb ...
Unpacking k8sgpt (0.2.4) ...
Setting up k8sgpt (0.2.4) ...
k8sgpt version 0.2.4
Using openai as backend AI provider
New provider added
key added
 100% |███████████████████████████████████████████████| (1/1, 9 it/min)        

0 gpt/hoge(hoge)
- Error: Back-off pulling image "hoge"
エラーメッセージ:「バックオフイメージ「hoge」の引き出し」

このエラーメッセージは、Kubernetesが指定されたコンテナイメージを取得できなかったことを示しています。このエラーの原因は、Dockerレジストリからイメージをダウンロードするために必要な権限が不足していることがあります。

解決策:
1. イメージの名前が正しいか確認します。
2. 既存のイメージと同じ名前のイメージが存在しないか確認します。
3. Dockerレジストリにログインして、必要な権限があることを確認します。
4. インターネット接続が正常に行われているか確認します。

以上の対処法を行い、再度実行してみてください。

yamamoto_daisuke@cloudshell:~ (hoge-334000)$

まとめ

k8sgpt について書きました。
今後は、分析だけではなく、対話しながら解決に導かれるような運用になっていくことも考えられます。
GPT とどのように付き合っていくのか、試行錯誤していきます。

Discussion