2021年9月19日日曜日

ubuntuによる、k8sの導入(for Raspberry pi)

raspberry piにubuntuをベースにした、k8sの導入方法を記載。


1)raspberry piのOSの基本の設定を行います。

# user追加 & パスワードの変更 & sudoの追加
sudo useradd -m -s /usr/bin/bash pi
/usr/bin/passwd pi <<EOF
raspberry
raspberry
EOF
sudo adduser pi sudo

# ホスト名を追加
sudo hostnamectl set-hostname rasp-xxxx.local

# networkを追加する。
cat > /etc/netplan/99-network.yaml <<EOF
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.13.xx/24
gateway4: 192.168.13.99
nameservers:
addresses:
- 8.8.8.8
EOF
sudo netplan apply

# /etc/hostsの追記(3台分)
echo 192.168.13.30 rasp-master rasp-master.local >> /etc/hosts
echo 192.168.13.31 rasp-node1 rasp-node1.local >> /etc/hosts
echo 192.168.13.32 rasp-node2 rasp-node2.local >> /etc/hosts

# time zoneの設定
sudo timedatectl set-timezone Asia/Tokyo

# ip6 を停止
cp /etc/sysctl.conf /etc/sysctl.conf_old
cat > /etc/sysctl.conf << EOF
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
sudo sysctl -p


2)ここからdockerとk8sの導入方法になる、
基本的に公式ページを利用している

# nftables 利用不可にする。
sudo apt-get -y install iptables arptables ebtables
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --set arptables /usr/sbin/arptables-legacy
sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy


## Dockerのインストール
# (Install Docker CE)
## リポジトリをセットアップ
### HTTPS越しのリポジトリの使用をaptに許可するために、パッケージをインストール
apt-get update && apt-get install -y \
apt-transport-https ca-certificates curl software-properties-common gnupg2

# Docker公式のGPG鍵を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

# Dockerのaptレポジトリを追加:
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# Dockerのインストール
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io

# デーモンをセットアップ
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
mkdir -p /etc/systemd/system/docker.service.d

# dockerを再起動
systemctl daemon-reload
systemctl restart docker
sudo systemctl enable docker

# cgroup
cat > /boot/firmware/cmdline.txt <<EOF
net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
EOF

## CRI-Oの設定 ##
modprobe overlay
modprobe br_netfilter

# 必要なカーネルパラメータの設定をします。
# これらの設定値は再起動後も永続化される。
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

# 以下のcurl実行時に使用する変数の記載
OS=xUbuntu_20.04
VERSION=1.22

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# 一旦、アップデートを行う
apt-get update

# cri-o & cri-o-runcのインストールを行う。
apt-get install cri-o cri-o-runc -y

# サービス系のリロード及びcrioのスタートを実施
systemctl daemon-reload
systemctl start crio


## kubeadm kubectl kubeletのインストールを行う
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# サービス系のリロード及び再起動を実施
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo reboot

0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...