LoginSignup
0
0

More than 1 year has passed since last update.

CentOSでCRI-Oを使ってKubernetesクラスターをつくる2 ワーカーノード

Last updated at Posted at 2022-05-25

前回の続きです。

OSインストールと設定

CentOS Stream 9 Btrfsを使いたいのでCentOS7に変更。タイトルも変更。
MinimalのインストールでOK

rootのsshを許可

vim /etc/ssh/sshd_config
PermitRootLogin yes

Firewall止める

systemctl disable firewalld.service
systemctl stop firewalld
sysctl -p

SE Linux無効化

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Swap無効化

swapoff -a
vi /etc/fstab
/dev/mapper/cl-swap     swap                    swap    defaults        0 0 #コメントアウト

自分を含めを名前解決できるようにする

vi /etc/hosts
192.168.1.1 master
192.168.1.2 worker2
192.168.1.3 worker3
192.168.1.4 worker4

事前のクリーンナップ(必須ではない)

yum remove -y docker*
yum remove -y kube*

Kubernetes関連

CRI-Oインストール

export OS=CentOS_8_Stream
export VERSION=1.24:1.24.0 #2022/5現在最新

curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/devel:kubic:libcontainers:stable.repo
curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo

yum install cri-o

systemctl daemon-reload
systemctl enable --now crio

やっぱりcontainerdインストール

互換性の確認
https://containerd.io/releases/


cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

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

yum install -y yum-utils device-mapper-persistent-data lvm2

yum config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.6-3.1.el7.x86_64.rpm

mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml

kubeadmインストール

modprobe br_netfilter
lsmod | grep br_netfilter
sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'

echo '1' > /proc/sys/net/ipv4/ip_forward
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
echo '1' > /proc/sys/net/bridge/bridge-nf-call-ip6tables

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
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
EOF

諸事情により1.23系に変更
yum -y install kubectl-1.23.7-0.x86_64 kubelet-1.23.7-0.x86_64 kubeadm-1.23.7-0.x86_64  --disableexcludes=kubernetes

ここまでしたら必要数だけVMクローン(vSphere環境だもんで)

クローン後ホスト名とIPアドレス設定

hostnamectl set-hostname workerX
sysctl --system
hostname -a

nmcli connection modify ens192 ipv4.addresses 192.168.1.N/24
nmcli connection down ens192; nmcli connection up ens192

クラスター構成

ここでまとめて実行
systemctl enable --now containerd
systemctl enable --now kubelet

マスターで実施

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.1.1 --ignore-preflight-errors=all
kubeadm config images pull

マスターをワーカー兼用にしたい場合は実行

kubectl taint nodes --all node-role.kubernetes.io/master-

各ワーカーノードで実施

kubeadm join <マスターのIPアドレス>:6443 --token (略)
--discovery-token-ca-cert-hash sha256:(略)

マスターで実施 CNI(Calico)インストール

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

マスターで確認の出力例

kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 14m v1.24.0
worker2 Ready 13m v1.23.7
worker3 Ready 2m43s v1.23.7
worker4 Ready 104s v1.23.7

次回はこの環境にクラウドネイティブ(コンテナネイティブ)ストレージをインストールしてみます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0