🔨
OCIのAmpereでk8sを構築する
x86前提の記事が多くて割りと苦戦したのでメモ
構成
- k8s-master (2CPU,12GB)
- k8s-worker1 (1CPU,6GB)
- k8s-worker2 (1CPU,6GB)
初期設定
共通
予めswapを無効化しておく
vim /etc/fstab
-> swap(一番下の行)をコメントアウト
設定変更
dnf update -y
systemctl disable firewalld
echo "SELINUX=disabled" > /etc/selinux/config
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
reboot
再起動後インストール
※containerd.ioはここを確認して適時最新版をインストールすること
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install https://download.docker.com/linux/centos/7/aarch64/stable/Packages/containerd.io-1.5.11-3.1.el7.aarch64.rpm -y
dnf install docker-ce docker-ce-cli -y
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl enable --now docker
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
dnf install kubelet kubeadm kubectl --disableexcludes=kubernetes -y
systemctl enable --now kubelet
rm /etc/containerd/config.toml -f
systemctl restart containerd
masterの設定
kubeadm init --pod-network-cidr=10.244.0.0/16
完了後、以下の形式の出力をコピーしておく
kubeadm join xxx.xxx.xxx.xxx:6443 hogehogehoge \
--discovery-token-ca-cert-hash sha256:hogehoge
ネットワーク周りの設定
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
workerの設定
先ほどコピーしたものを各worker側で実行する
kubeadm join xxx.xxx.xxx.xxx:6443 hogehogehoge \
--discovery-token-ca-cert-hash sha256:hogehoge
動作確認
とりあえずmasterで以下のコマンドを実行してnodeが表示されているか確認する
kubectl get nodes
問題なさそうであれば
kubectl run --port 80 --image=nginx:1.21 nginx
でnginxを立ち上げ、
kubectl port-forward nginx 8080:80
でポートフォワードする
curl localhost:8080
でnginxのwelcomeページ(HTML)が表示されれば成功
※ポートフォワードはバックグラウンドタスクではないのでscreenを使うか別セッションを開くかして動作確認をする必要がある
参考
Discussion