Raspberry Pi 2上に構築しようと思っていたのだが、メモリが足りなくてまともに使用するのは無理そうなため、取り合えず仮想環境上に構築したメモ。
1. スワップ無効化
無効化しなくても動くらしいが、パフォーマンスを良くするのために、無効化が推奨らしい。
2. dockerインストールに必要なソフトウェアをインストール
1 2 3 | sudo apt install apt-transport-https ca-certificates curl software-properties-common sudo apt update sudo apt upgrade |
3. dockerインストール
1 2 3 4 5 6 7 8 9 | curl -fsSL https: //download .docker.com /linux/ubuntu/gpg | sudo apt-key add - sudo apt update apt-cache policy docker-ce #Kubernetesの動作保証はv19までであるが、今回は最新バージョンで試した sudo apt install docker-ce sudo systemctl status docker #dockerの操作をsudo無しで出来るようにするため、ログインユーザーをdockerグループに追加 sudo usermod -aG docker ユーザーID |
4. docker設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | cat <<EOF | sudo tee /etc/docker/daemon .json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF sudo mkdir -p /etc/systemd/system/docker .service.d sudo systemctl daemon-reload sudo systemctl restart docker |
1 2 3 4 5 6 7 8 | #ブリッジ接続を有効化 sudo sysctl net.bridge.bridge-nf-call-iptables=1 #カーネルオプションに下記を設定し再起動 sudo vi /etc/default/grub GRUB_CMDLINE_LINUX= "cgroup_enable=memory swapaccount=1" sudo update-grub sudo shutdown -r now |
5. kubernetesインストール
1 2 3 4 5 6 7 | curl -s https: //packages .cloud.google.com /apt/doc/apt-key .gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources .list.d /kubernetes .list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt update sudo apt install kubelet kubeadm kubectl |
6. kubernetes設定(マスター)
1 2 3 4 5 6 | sudo kubeadm init --apiserver-advertise-address=192.168.xx.xx mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin .conf $HOME/.kube /config sudo chown $( id -u):$( id -g) $HOME/.kube /config #Weave Netを設定 kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" |
7. kubernetes設定(マスター以外)
dockerのインストール、設定共にマスターと同様に実施する。5. kubernetesのインストールまで同様に実施する。
1 | sudo kubeadm join 192.168.xx.xx:6443 --token 「initしたときに表示されたトークン」 --discovery-token-ca-cert- hash 「initしたときに表示されたハッシュコード」 |
8. 確認
1 2 3 4 | #マスターでノードが追加されたか確認 kubectl get nodes #ラベルを付ける kubectl label node 「ノード名」 node-role.kubernetes.io /worker = |