0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant上で動かしていたKubernetesが動かなくなった

Posted at

はじめに

Vagrantを利用してKubernetes環境を構築していますが、kubectlを叩いたときにエラーが返ってきたので、それの解決策を記述します。

開発環境

VagrantでVMを2つ起動させ、Kubeadmを利用してKubernetesクラスタを構築しています。
Master一台、Node一台の構成です。

Vagrantを利用してKubernetesクラスタを構築する方法については、これらの記事を参考にしています。

発生した問題

$ kubectl get pods
The connection to the server [master_IP]:6443 was refused - did you specify the right host or port?

今までは、kubectlが正常に動作していたが、突然、podを取得できなりました。

原因の確認

Vagrant上でのみ発生する問題かと思ったが、そういうわけでは無さそうでした。

とりあえず、kubeletが動いているかを確認してみました。

$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since Wed 2020-02-12 11:55:58 UTC; 3s ago
     Docs: https://kubernetes.io/docs/home/
  Process: 2679 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (cod
 Main PID: 2679 (code=exited, status=255)

Feb 12 11:55:58 master systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Feb 12 11:55:58 master systemd[1]: kubelet.service: Unit entered failed state.
Feb 12 11:55:58 master systemd[1]: kubelet.service: Failed with result 'exit-code'.

どうやら、kubeletが正常に動作してなさそうなので、ログを確認してみました。

$ journal -xe | grep kubelet
:
:
Feb 12 12:04:03 master kubelet[5988]: F0212 12:04:03.063233    5988 server.go:273] failed to run Kubelet: running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained: [Filename                                Type                Size        Used        Priority /dev/dm-1                               partition        1003516        0        -1]
Feb 12 12:04:03 master systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Feb 12 12:04:03 master systemd[1]: kubelet.service: Unit entered failed state.
Feb 12 12:04:03 master systemd[1]: kubelet.service: Failed with result 'exit-code'.

どうやら、Swapがオンになっていることが問題らしいので、オフにします。
同様にして、ノード側もSwapをオフにします。
そして、ノードを確認してみます。

$ swapoff -a
$ kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   8d    v1.17.2
node     Ready    <none>   8d    v1.17.2

無事、masterとnodeの両方でkubeletが正常に動作したようです!

今後の対策

Swap機能をオフにする

/etc/fstabのSwapに関する部分をコメントアウトする。
ubuntu16.04では、/dev…から始まる文章でした。

$ vim /etc/fstab
/dev/mapper/vagrant--vg-swap_1 none            swap    sw              0       0

下記に別の対策も記述してありますが、個人的には、Swap機能をオフにする方法をおすすめします。

VMを一時停止する

VMをシャットダウン(vagrant halt)すると、次に起動したときにSwapがオンになるので、VMを一時停止(vagrant suspend)する。

最後に

Kubeadmを構築する段階で /etc/fstab からSwapをオフにしている人は、このような問題は発生しないと思いますが、同じような問題が発生している人の助けになれば幸いです。

無事、Kubernetesが動くようになったので、私はKubernetes完全ガイドを進めたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?