LoginSignup
0
0

More than 1 year has passed since last update.

Kubernetes環境構築(CentOS Stream 8)

Posted at

はじめに

本記事ではコンテナオーケストレーションであるKubernetesをインストールする手順を紹介します。KubernetesとはDockerなどのコンテナを管理、自動化を行うシステムです。
Kubernetes触るの初めてでとりあえずサクッと動かしたい人向けです。

構成図

Kubernetes.png
マスターノードの自宅NW NIC:192.168.1.30
ワーカーノードの自宅NW NIC:192.168.1.31
それぞれのVMはCPU1core、メモリ2GB、ディスク30GB

Kubernetesインストール【対象:マスターノード、ワーカーノード】

パッケージの更新

# dnf update -y

SELinux無効化

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

firewalldサービス停止、無効化

# systemctl disable --now firewalld

br_netfilterモジュールインストール

bridgeしたインターフェースのパケットをフィルタリングするモジュール。
クラスタでのポッド間通信で利用します。

# modprobe br_netfilter

ホストがbridgeしたパケットをフィルタリング無効

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

カーネルパラメータ反映(/etc/sysctl.d/配下)

# sysctl --system

スワップ領域を無効にする

# swapoff -a
# sed -i -e '/swap/s/^/# /g' /etc/fstab

Dockerパッケージをインストールする。

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

Dockerサービス起動、有効化

# systemctl enable --now docker

systemd cgroupドライバー設定

# echo '{
"exec-opts": ["native.cgroupdriver=systemd"]
}' > /etc/docker/daemon.json

Docker再起動

# systemctl restart docker

Kubernetesリポジトリ設定

# 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

パッケージの更新

# dnf upgrade -y

Kubernetes関連パッケージをインストール

# dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

kubeletサービス起動、有効化

# systemctl enable --now kubelet

kubeadm init のエラー回避

# rm -f /etc/containerd/config.toml
# systemctl restart containerd

クラスタの作成【対象:マスターノード】

# kubeadm init --pod-network-cidr 192.168.0.0/16
※Podに割り当てるIPアドレスの範囲を指定する:--pod-network-cidr

標準出力の末尾に以下のようなコマンドが記載されるのでメモする。
(例)kubeadm join 192.168.1.30:6443 --token titnqn.1mwqcq0daycjpanz --discovery-token-ca-cert-hash sha256:720c70f6a41684a92724ad7b983092893c3e7d836fb032124e14280c2a38660c

kubectl コマンドを実行する権限を付与

# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config

Calioインストール

# kubectl apply -f https://docs.projectcalico.![Kubernetes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092281/bf370e43-ef62-7a72-0dce-0d29838f3849.png)
org/v3.15/manifests/calico.yaml

クラスタ参加【対象:ワーカーノード】

前述でメモした「kubeadm init --pod-network-cidr 【ネットワークアドレス】」で出力されたコマンドを実行する。

(例)kubeadm join 192.168.1.30:6443 --token titnqn.1mwqcq0daycjpanz --discovery-token-ca-cert-hash sha256:720c70f6a41684a92724ad7b983092893c3e7d836fb032124e14280c2a38660c

マスターノードで以下コマンド実行してノードに関する情報の取得する。

# kubectl get nodes
NAME            STATUS   ROLES           AGE     VERSION
kubernetes      Ready    control-plane   8m10s   v1.26.1
worker-node-1   Ready    <none>          57s     v1.26.1

参考URL
https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
https://upcloud.com/resources/tutorials/install-kubernetes-cluster-centos-8
https://github.com/containerd/containerd/issues/4581

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