使用k8sgpt在Kubernetes上进行故障分析,并使用ChatGPT进行交流
3/28日,一个名为k8sgpt的东西被公开发布。
这是一个针对Kubernetes的ChatGPT,它可以扫描Kubernetes集群并诊断问题。
我立刻尝试了一下。
做好准备。
按照安装页面的指示安装命令。看起来适用于Windows/Mac/Linux各个系统。我们这次将在Mac版上试试看。
brew tap k8sgpt-ai/k8sgpt
brew install k8sgpt

完成后,运行k8sgpt auth来注册API密钥。
$ k8sgpt auth
Enter openai Key: key added
分析 – Fenxi
可以使用k8sgpt analyze进行分析。
尤其是在集群中没有出现问题的情况下进行分析。
$ k8sgpt analyze
{ "status": "OK" }
制作一个有问题的Pod试试看。
kubectl run --image nginx:hoge nginx-failure -n pvc-test
$ kubectl get pod -n pvc-test
NAME READY STATUS RESTARTS AGE
nginx-failure 0/1 ImagePullBackOff 0 73s
使用指定的命名空间进行分析。
$ k8sgpt analyze -n pvc-test
0% | | (0/1, 0 it/hr) [0s:0s]0 pvc-test/nginx-failure(nginx-failure): Back-off pulling image "nginx:hoge"
问题已经被检测到,但尚未进行分析。让我们接下来尝试加入“解释”来进行分析。
$ k8sgpt analyze -n pvc-test --explain
100% |████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (1/1, 8 it/min)
0 pvc-test/nginx-failure(nginx-failure): Back-off pulling image "nginx:hoge"
This error message is indicating that there was a problem pulling the "nginx:hoge" image. The Kubernetes system is retrying in a back-off fashion until the image is successfully pulled.
To solve the issue, one possible solution would be to check if the image name and tag are correctly spelled and exist within the specified repository. Additionally, it may be helpful to check network connectivity to the registry and ensure that the appropriate credentials are being used to access the image.
检查图像名称和标签的拼写是否正确,根据给定的情况,似乎是正确的。
另外,k8sgpt analyze命令的选项中有一个–language,可以转换为多种语言。
-l, --language string Languages to use for AI (e.g. 'English', 'Spanish', 'French', 'German', 'Italian', 'Portuguese', 'Dutch', 'Russian', 'Chinese', 'Japanese', 'Korean') (default "english")
因为有日语版,所以尝试使用–no-cache来分析,而不使用上次的结果。
k8sgpt analyze -n pvc-test --explain --language 'Japanese' --no-cache
100% |███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (1/1, 4 it/min)
0 pvc-test/nginx-failure(nginx-failure): Back-off pulling image "nginx:hoge"
このKubernetesのエラーメッセージは、イメージ "nginx:hoge" の取得に失敗し続けていることを示しています。これは、Kubernetesが指定されたイメージを取得するのに問題があることを意味しています。この問題を解決するためには、接続エラー、権限エラー、またはDocker Hub内の問題などの原因を見つけ出して対処する必要があります。具体的な解決策については、DockerフォーラムやKubernetesコミュニティに投稿して、ガイダンスを求めることがお勧めです。
这太厉害了。我改变了错误因素,然后尝试从DockerHub被拒绝的案例中进行了测试。
$ kubectl get pod -n toomanyrequest
NAME READY STATUS RESTARTS AGE
nginx-failure 0/1 ImagePullBackOff 0 68s
$ kubectl describe pod -n toomanyrequest nginx-failure
:(省略)
Warning Failed 5s kubelet Failed to pull image "nginx": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/nginx:latest": failed to copy: httpReadSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/library/nginx/manifests/sha256:2ab30d6ac53580a6db8b657abf0f68d75360ff5cc1670a85acb5bd85ba1b19c0: 429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
对这个进行分析后得出以下结果。
$ k8sgpt analyze -n toomanyrequest --explain --language 'Japanese' --no-cache
100% |███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (1/1, 4 it/min)
0 toomanyrequest/nginx-failure(nginx-failure): Back-off pulling image "nginx"
Kubernetes Error Message: Back-off pulling image "nginx"
Solution in Japanese: "nginx"のイメージをプルできていないため、バックオフが発生しています。この問題を解決するには、以下のことを確認してください:
1. Dockerイメージが正しい場所にあることを確認します。
2. イメージのダウンロード先がアクセス可能であることを確認してください。
3. ネットワークの問題が原因である可能性があるため、Kubernetesクラスターのネットワーク接続を確認してください。
問題が解決されない場合は、Dockerレジストリへリセットを行ってください。
由于符合给予我提示的两个因素,所以这也可能作为参考。
然后尝试在kind: Service中进行操作。在清理了出现问题的Pod之后,执行以下步骤:
尝试指定未公开的端口。
kubectl run --image nginx nginx -n pvc-test
kubectl expose pod nginx --port 9999 -n pvc-test
分析结果如下。
$ k8sgpt analyze -n pvc-test --explain --language 'Japanese' --no-cache
{ "status": "OK" }
确实不会出现错误。
接下来试着删除Pod。
kubctl delete pod -n pvc-test nginx
经过分析。
$ k8sgpt analyze -n pvc-test --explain --language 'Japanese' --no-cache
100% |███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| (1/1, 5 it/min)
0 pvc-test/nginx(nginx): Service has no endpoints, expected label run=nginx
このKubernetesのエラーメッセージを簡略化し、日本語での解決策を提供してください:サービスにエンドポイントがありません。ラベルrun = nginxが必要です。
解決策:Podをデプロイして、そのPodに正しいラベル(run = nginx)を付ける必要があります。次に、サービスを作成し、そのサービスにラベル(run = nginx)を付ける必要があります。これにより、サービスが正しいエンドポイントを見つけることができます。
这是一个很好的回答。
总结
我认为在发布后的初期,它似乎已经可以进行相当彻底的分析了。
我觉得对于Kubernetes新手来说,尝试将其用于调试目的可能是一个不错的选择。