Ubuntu で Kubernetes 三昧その2の続きです。
Container Runtimesを入れます。この説明にしたがいます。
IPv4 packet forwarding を有効にします。
$ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF
net.ipv4.ip_forward = 1
再起動しても有効になるように設定します。
$ sudo sysctl --system
$ sudo shutdown -r now
確認します。
$ sysctl net.ipv4.ip_forward
CRI をインストールします。containerd を入れましょう。
とりあえず、ホストマシンに containerd-2.1.3-linux-amd64.tar.gz をダウンロードしました。これを仮想マシンに送るため、ホストアダプタを有効化しました。
既存のアダプタは、「NATネットワーク」にしています。
マスター1で
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:9e:cb:2f brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 506sec preferred_lft 506sec
inet6 fe80::a00:27ff:fe9e:cb2f/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:91:4f:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.107/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
valid_lft 506sec preferred_lft 506sec
inet6 fe80::8193:8bef:9f55:246b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
ワーカー1で
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:b2:38:f1 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.7/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 464sec preferred_lft 464sec
inet6 fe80::a00:27ff:feb2:38f1/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:6b:f5:60 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.108/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
valid_lft 464sec preferred_lft 464sec
inet6 fe80::1300:2a81:41f2:2f41/64 scope link noprefixroute
valid_lft forever preferred_lft forever
そもそも、ssh サーバがはいっていないので、入れます。それぞれの仮想マシンでおこないます。
$ sudo apt install openssh-server
$ sudo systemctl enable --now ssh
$ systemctl is-enabled ssh
enabled
$ nc 127.0.0.1 22 -zv -w 2
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
ホストマシンの公開鍵を、それぞれの仮想マシンの .ssh/authorized_keys にコピーしておきます。
.ssh/config に、マシンの指定(master1, worker1)をしたので、ファイルを転送します。
$ scp containerd-2.1.3-linux-amd64.tar.gz master1:/home/<user>
containerd-2.1.3-linux-amd64.tar.gz
$ scp containerd-2.1.3-linux-amd64.tar.gz worker1:/home/fujiwara
containerd-2.1.3-linux-amd64.tar.gz
これからは、仮想マシンに ssh でログインして作業を実施できます。
@masternode1:~$ sudo tar Cxzvf /usr/local containerd-2.1.3-linux-amd64.tar.gz
@workernode1:~$ sudo tar Cxzvf /usr/local containerd-2.1.3-linux-amd64.tar.gz
(表示)
bin/
bin/containerd
bin/containerd-shim-runc-v2
bin/ctr
bin/containerd-stress
systemd の unit ファイルをここからコピーして投入します。
@masternode1:~$ sudo mkdir -p /usr/local/lib/systemd/system
@masternode1:~$ sudo vim /usr/local/lib/systemd/system/containerd.service
@workernode1:~$ sudo mkdir -p /usr/local/lib/systemd/system
@workernode1:~$ sudo vim /usr/local/lib/systemd/system/containerd.service
containerd を起動します。
@masternode1:~$ sudo systemctl daemon-reload
@masternode1:~$ sudo systemctl enable --now containerd
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /usr/local/lib/systemd/system/containerd.service.
@workernode1:~$ sudo systemctl daemon-reload
@workernode1:~$ sudo systemctl enable --now containerd
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /usr/local/lib/systemd/system/containerd.service.
runc をインストールします。
@masternode1:~$ sudo install -m 755 runc.amd64 /usr/local/sbin/runc
CNI pluginsをインストールします。
@masternode1:~$ sudo mkdir -p /opt/cni/bin
@masternode1:~$ sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.7.1.tgz
@workernode1:~$ sudo mkdir -p /opt/cni/bin
@workernode1:~$ sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.7.1.tgz
(表示)
./
./dummy
./tap
./sbr
./bandwidth
./LICENSE
./host-device
./dhcp
./firewall
./loopback
./host-local
./static
./ipvlan
./vlan
./vrf
./bridge
./ptp
./portmap
./macvlan
./README.md
./tuning
root@masternode1:~# mkdir /etc/containerd
root@masternode1:~# containerd config default > /etc/containerd/config.toml
root@workernode1:~# mkdir /etc/containerd
root@workernode1:~# containerd config default > /etc/containerd/config.toml
systemd cgroup driver の設定を施します。
マスター、ワーカー両方で実施。
# vim /etc/containerd/config.toml
---
[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
Ubuntu で Kubernetes 三昧その4につづく。
参考: