[コンテナ再入門]Ubuntu 18.04 に Kubernetes環境を構築する

Ubuntu18.04で写経しつつ「Docker/Kubernetes 実践コンテナ開発入門」を読み進めている。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

書籍ではDocker for Windows/Mac をサポート対象としており、それ以外のLinuxなどの環境で写経するには自分で環境構築を行う必要がある。
5章からはKubernetesの話題に入っていくのだが、Ubuntu18.04 上にKubernetes環境を構築するのに結構時間がかかったのでメモを残す。

環境

  • ホスト Ubuntu16.04 Desktop 64bit
  • VM: Ubuntu18.04 server 64bit (Vagrant + VirtualBox)
    • Docker 18.09.3

kubeadm のインストール

ウェブでLinux環境へのKubernetes環境構築について検索するといろんな方法がヒットするが、結論としては公式ドキュメントで書かれている通り kubeadm を使って構築した。

kubernetes.io

「Before you begin」の項目のうち、自分のようにローカルPC上の仮想マシンで構築を進める場合、ハマりそうなのは以下の3点かと思う。

  • 2 GB or more of RAM per machine (any less will leave little room for your apps)
  • 2 CPUs or more
  • Swap disabled. You MUST disable swap in order for the kubelet to work properly.

SWAPをOffにするのは、以下のコマンドを実行する。このコマンドではOS再起動時に設定がもとに戻ってしまうが、とりあえず環境構築するには充分である。

sudo swapoff -a

docker はすでにインストール済みとする(関連記事 )。
あとは、ドキュメントに書かれているとおり以下のコマンドを実行して kubelet、kubeadm、 kubectl をインストールできる。

sudo apt-get update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

kubeadm で single master cluster を構築する

続いて公式ドキュメントのこのページの作業を進める。

kubernetes.io

Pod間通信用のアドオンが何種類かあって選べるのだが、ウェブで検索していてよく見かけた Flannel を使うことにした(よくわかってない)。
Flannelを使う場合のインストール手順に書かれているとおり、--pod-network-cidr=10.244.0.0/16 とオプションをつけてkubeadm init を実行する。

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

成功すると、その後実行するべきコマンドが表示されるのでその通り実行する(公式ドキュメント内にも記述がある)。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Flannel をインストールする。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

とりあえずここまで作業すれば、書籍の続きの内容であるダッシュボードのインストールに進める。