k8sが動かなかった話
はじめに
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