Kubernetesのテスト環境を準備しよう
LINSTORのSDS機能をテストするため、Kubernetesをインストールしてみましょう。
無料で利用できるLINBITのリポジトリを利用するため、OSのUbuntu 20.04 LTSを使います。
Kubernetesのインストールにはいろいろな手段があるようですが、今回はcontainerdとkubeadm、Ciliumをそれぞれの公式の手順に基づいてインストールします。
1.containerdのインストール
コンテナランタイムであるcontainerdをインストールします。
インストール前に必要なカーネルモジュールをOSに組み込み、ネットワークの設定を済ませておきます。
cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
設定のあと、パッケージをインストールします。
apt install -y containerd mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml systemctl restart containerd
2.kubeadmのインストール
公式の手順の通りにkubelet kubeadm kubectlをインストールします。現時点(2020年9月)の最新バージョン1.19ではLINSTORのCSIドライバーが動作しないため、インストールするバージョンを1.17.11に固定します。LINBITの推奨バージョンは1.17と1.18です。
apt update && apt install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - cat << EOF | tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF apt update apt install -y kubelet=1.17.11-00 kubeadm=1.17.11-00 kubectl=1.17.11-00 cat << EOF | tee /etc/default/kubelet KUBELET_EXTRA_ARGS=--cgroup-driver=systemd EOF
3.マスターノードのセットアップ
マスターノードをセットアップします。node1をマスターノードとして次のコマンドを実行します。
sudo -i kubeadm init ..... ..... [addons] Applied essential addon: kube-proxy Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.3.101:6443 --token 781qhi.XXXXXXXXXXXXX \ --discovery-token-ca-cert-hash sha256:abef9a14025069b8657fe1be5XXXXXXXXXXXXX
kubeadmの実行はrootアカウントで実行します。実行がエラーなく終わったら、一般ユーザに戻って上の表示されている”mkdir -p $HOMNE/.kube”から3行を実行します。
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodeコマンドを実行してノードの登録状態を調べます。
kubectl get nodes NAME STATUS ROLES AGE VERSION node1 NotReady master 13s v1.17.11
4.ワーカーノードの設定
残ったnode2、node3でワーカーノードの設定をします。マスターノードのkubeadm initで表示されたコマンドを実行します。
kubeadm join 192.168.3.101:6443 --token 781qhi.XXXXXXXXXXXXX \ --discovery-token-ca-cert-hash sha256:abef9a14025069b8657fe1be5XXXXXXXXXXXXX
マスターノードでワーカーノードの登録を確認します。
kubectl get nodes NAME STATUS ROLES AGE VERSION node1 NotReady master 5m20s v1.17.11 node2 NotReady <none> 45s v1.17.11 node3 NotReady <none> 11s v1.17.11
5.コンテナネットワーキングの設定
Ciliumを設定します。
kubectl create -f https://raw.githubusercontent.com/cilium/cilium/1.8.3/install/kubernetes/quick-install.yaml
次のような情報が出力されます。
serviceaccount/cilium created serviceaccount/cilium-operator created configmap/cilium-config created clusterrole.rbac.authorization.k8s.io/cilium created clusterrole.rbac.authorization.k8s.io/cilium-operator created clusterrolebinding.rbac.authorization.k8s.io/cilium created clusterrolebinding.rbac.authorization.k8s.io/cilium-operator created daemonset.apps/cilium created deployment.apps/cilium-operator created
しばらくしたのち、各ノードの状態がReadyになれば正常です。
kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master 4d6h v1.17.11 node2 Ready <none> 4d6h v1.17.11 node3 Ready <none> 4d6h v1.17.11
KubernetesとLINSTOR/DRBD9の動作環境ができたので、次回はCSIプラグインをテストします。