#author("2023-12-30T23:08:19+09:00","","") #author("2023-12-30T23:15:03+09:00","","") [[Linux]] * Kubernetes (k8s) [#ka15dfe6] ※環境変数に http_proxy などを設定している場合は、sudo の実行は、-E を付与してください。 [[Linux/基本設定]] のプロキシ設定も確認ください。 #ls2(Linux/kubernetes) ** インストール (for Debian) [#r3310d4e] *** 前提 [#ob4dd58c] -OS: Debian 12 -作成済みユーザー:user *** 基本設定 [#hcbfcf32] - 必要コマンドのインストール、設定 sudo apt update sudo apt upgrade -y sudo apt install sudo gpasswd -a user sudo - (必要に応じて) basrhc, vim の設定 # # 以下は、bashrc と vim の設定で、もしよければ設定しておく。 # sudo apt install vim sudo apt install git cd git clone https://ehobby.jp/gitbucket/git/linux-scripts/bashrc.git mv bashrc/.bashrc . mv bashrc/.bashrc.d . mv bashrc/.vimrc . mv bashrc/.vim . mv bashrc/.config . # vim を一度起動し、「:PlugInstall」を実行する。 -neovim install wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz tar zxf nvim-linux64.tar.gz mv nvim-linux64/bin/nvim /usr/local/bin/ sudo mv nvim-linux64/bin/nvim /usr/local/bin/ sudo mv nvim-linux64/lib/* /usr/local/lib/ sudo mv nvim-linux64/share/* /usr/local/share/ sudo mv nvim-linux64/man/* /usr/local/man/ *** docker-ce インストール [#pd31b5d9] - 古い Docker が入っている場合削除する。 sudo apt remove docker sudo apt remove docker-engine sudo apt remove docker.io sudo apt remove containerd sudo apt remove runc - リポジトリセットアップ -- パッケージ更新&インストール sudo apt update sudo apt install \ ca-certificates \ curl \ gnupg \ lsb-release -- PGP 鍵追加 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -- 安定版リポジトリセットアップ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - インストール sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin - 設定 sudo gpasswd -a user docker *** kubernetes のインストール [#g5f9e1e7] 参照: [[https://kubernetes.io/ja/docs/setup/production-environment/container-runtimes/]] - 必要なモジュールをロードする設定を記載する。 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF - 必要なモジュールをロードする sudo modprobe overlay sudo modprobe br_netfilter - 必要なカーネルパラメータを設定する。 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF - カーネルパラメータを適応する(再起動してもよい) sudo sysctl --system - 確認 lsmod | grep br_netfilter lsmod | grep overlay *** containerd の設定(★ここでは、containerd を使います。) [#jfa5ddf1] - CRI サポートを有効化する。 /etc/containerd/config.toml の disabled_plugins = ["cri"] 等の設定を削除してもよいが、次のコマンドでデフォルト設定を書き込むとよい。 containerd config default | sudo tee /etc/containerd/config.toml - systemd cgroup ドライバを構成する。 /etc/containerd/config.toml の下記「SystemdCgroup」を true に設定する。 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true - containerd を再起動する。 sudo systemctl restart containerd *** kubeadm のインストール [#pd3ad7fb] 参照:[[https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/install-kubeadm/]] - リポジトリセットアップ -- PGP 鍵追加 curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg -- 安定版リポジトリセットアップ echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list - インストール sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # apt-mark にて更新を抑止する。 *** 設定 [#u88967e9] - スワップを無効にする。 -- /etc/fstab の swap 部分をコメントアウトする。 -- 次のコマンドを実行する。 swapoff -a *** コントロールプレーン起動 [#o0e89a62] - コントロールプレーン起動 sudo kubeadm init --pod-network-cidr=<ホストと異なるネットワークを指定> 例) sudo kubeadm init --pod-network-cidr=192.168.0.0/16 ※最後に、ワーカーノードからの接続に必要なコマンドが表示されるのでメモする。 - やり直したい場合 一度下記を実行すると設定がリセットされる。 sudo kubeadm reset - kubectl 設定 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ※ root ユーザーで実行する場合、下記を実行する。 export KUBECONFIG=/etc/kubernetes/admin.conf - 確認 kubectl get nodes ※CNIプラグインを入れていない状態のため、STATUS が NotReady となる。 ** CNIプラグイン インストール [#c021d109] いくつか種類があるが、ここでは、calico を入れる。 参照:[[https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart]] *** インストール [#i2f3ad09] + Tigera Calico オペレータとカスタムリソース定義をインストール kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml + 必要なカスタムリソースを作成して、Calico をインストール wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml 上記ファイルのcidr 部分を合わせて、下記で生成する。 kubectl create -f custom-resources.yaml + 確認 kubectl get nodes ※しばらくすると すべてのノードの STATUS が Ready になります。 *** ノードの ROLES 設定 [#w59604ad] kubectl label node <ノードのNAME> node-role.kubernetes.io/worker=worker