#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
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS