Kubernetes ベースOSの準備

目次に戻る

概要

https://thinkit.co.jp/article/18188

Kubernetesを稼働させるベースOSを構築します。本稿では”Ubuntu 20.04.3 LTS Server”を使用します。

設定

インストール

一般的なインストールで問題ありません。IPアドレスは一旦DHCPにしておきます。

Ubuntu Serverへのアクセス環境

Ubuntuのポリシーに反しますが、開発環境なのでrootでのアクセスを許可します。

rootパスワード設定

sudoが面倒なのでrootにパスワードを設定してsuします。

myuser@k8s-01:~$ sudo passwd root
myuser@k8s-01:~$ su -

SSHでrootログイン許可

下記を追記してSSHサービスを再起動します。

root@k8s-01:~# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
root@k8s-01:~# systemctl restart sshd.service

公開鍵認証

パスワード入力も煩わしいなら、他のSSHクライアント(管理ホスト等)からssh-copy-idしておきます。SSHパスフレーズ無しの前提です。

root@mgmt:~# ssh-copy-id xxx.xxx.xxx.xxx

カーネル設定

カーネルモジュールの有効化

overlayとbr_netfilterを有効にします。

root@k8s-01:~# modprobe overlay
root@k8s-01:~# modprobe br_netfilter

確認します。

root@k8s-01:~# lsmod | grep -e overlay -e br_netfilter

再起動時にも有効にします。

root@k8s-01:~# cat <<EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

カーネルパラメータの変更

設定ファイルを作成します。

root@k8s-01:~# cat <<EOF > /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

反映します。

root@k8s-01:~# sysctl --system

Ubuntu Serverのアップデートとソフトウェアの追加

アップデート

Ubuntu Serverを最新の状態に更新します。

root@k8s-01:~# apt update && apt upgrade

追加のソフトウェア

必要なソフトウェアを追加します。net-toolsは必須ではありませんが、トラブルシューティングしやすいのでインストールしています。

root@k8s-01:~# apt install net-tools apt-transport-https curl

containerdのインストール

インストールします。

root@k8s-01:~# apt-get install containerd
root@k8s-01:~# mkdir -p /etc/containerd
root@k8s-01:~# containerd config default > /etc/containerd/config.toml
root@k8s-01:~# systemctl restart containerd.service
root@k8s-01:~# systemctl status containerd.service

kubeadm, kubelet, kubectlのインストール

インストールします。

root@k8s-01:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
root@k8s-01:~# echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
root@k8s-01:~# apt update
root@k8s-01:~# apt install kubelet kubeadm kubectl
root@k8s-01:~# apt-mark hold kubelet kubeadm kubectl

2行目のcurlコマンドで、”apt-keygpg: no valid OpenPGP data found.”が出力される場合、且つプロキシ環境の場合は下記のようにcurlのプロキシ参照オプションを使用します。

root@k8s-01:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg -x http://xxx.xxx.xxx.xxx:xxxxx | apt-key add -

スワップ領域の無効化

Kubernetesはスワップが有効だとインストールできない為、無効にします。OS再起動が必要です。

root@k8s-01:~# vim /etc/fstab

#/swap.img none swap sw 0 0

ネットワーク設定

https://ubuntu.com/server/docs/network-configuration

ネットワーク設定を変更する場合は、/etc/netplan内の元のyamlは削除して新しく設定ファイルを作成します。SSHで作業している場合、netplan applyを実行すると即座にIPアドレスが変わりSSHが切断される為、OSを再起動(rebootコマンド)します。本稿ではVMのクローンを作成する為、途中までDHCPのまま作業しています。

固定IPアドレスの設定例

root@k8s-01:~# rm /etc/netplan/*
root@k8s-01:~# vim /etc/netplan/99_config.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      addresses:
        - 192.168.68.11/24
      gateway4: 192.168.68.1
      nameservers:
          search: [si1230.com]
          addresses: [192.168.64.2]

root@k8s-01:~# netplan apply

Kubernetes clusterでは、最低限、Master nodeのIPアドレスを固定にします。Worker nodeがMaster nodeのIPアドレスを指定してclusterに参加する為です。

DHCPクライアントの設定例

root@k8s-01:~# rm /etc/netplan/*
root@k8s-01:~# vim /etc/netplan/99_config.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: true

root@k8s-01:~# netplan apply

クローン作成

ここまでがMaster node, Worker nodeで共通の設定になりますので、仮想化環境の場合はここでクローンを作成しておくと便利です。今回はMaster node x1, Worker node x1とする為、1つクローンを作ります。

目次に戻る

Kubernetes ベースOSの準備

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る