🤖

k8sが動かなかった話

2024/06/02に公開

はじめに

helm chartを使用してデプロイする機会があり、そこでk8sに興味を持って学習を始めてみました。
元々AKS(AzureKubernets Service)でk8sを触ってみたことがあったのですが、当時も今もちんぷんかんぷんです。
k8sの学習を進めていて、どこかのタイミングでpodが動かなくなり、本記事はその葛藤を記録します。

そもそも

Kubernetes(略してk8s)は、コンテナ化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するためのオープンソースのプラットフォームです。
自動スケーリングをしてくれたり、障害が発生したポッドを自動的に再起動したり、再スケジュールしたりすることで、アプリケーションの高可用性を確保してくれます。
ここには書かないですが、もっと多くのことをk8sではできます。

本題

deploymentの挙動を確認するために、podを起動しようとしたら次の事象が発生しました。
% kubectl get deployment

NAME READY UP-TO-DATE AVAILABLE AGE
nginx 0/3 3 0 23s

ん、READTが0/3でAVAILABLEが0で正常に動いていないぞ。
Podの情報を取得して詳細でエラーを確認してみます。

% kubectl get pod

NAME READY STATUS RESTARTS AGE
nginx-xxxx 0/1 Pending 0 86s
nginx-xxyy 0/1 Pending 0 86s

むむ、ずっとPendingのままだ。
% kubectl describe pod xxxx

default-scheduler 0/1 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/disk-pressure: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.

ディスク圧迫によって利用可能にならないみたいです。

PCの再起動なり、Dockerの再起動なり、使用していないdockerのイメージとコンテナの削除をしたら正常に動くようになりました。

結局

結局何が原因だったのか分からないのですが、再発したらじっくり調査をしようかと思います。

ヘッドウォータース

Discussion