事前準備
ホスト設定
# ホスト名設定(全ノード)
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
ネットワーク設定
# /etc/hosts 設定(全ノード)
cat >> /etc/hosts <<EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
EOF</code>
システム設定
# 基本サービス停止(全ノード)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
カーネルパラメータ
# カーネル設定ファイル作成
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 設定適用
sysctl -p /etc/sysctl.d/k8s.conf
modprobe br_netfilter</code>
Docker インストール
# 依存パッケージインストール
rpm -ivh containerd-*.rpm --nodeps
rpm -ivh docker-ce-*.rpm --nodeps
# サービス設定
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# サービス起動
systemctl enable docker
systemctl start docker</code>
Kubernetes インストール
コンポーネントインストール
# kubeadm/kubelet/kubectl インストール
rpm -ivh kubelet-*.rpm kubeadm-*.rpm kubectl-*.rpm
systemctl enable kubelet
クラスタ初期化
# コントロールプレーン初期化
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--image-repository local-registry \
--kubernetes-version v1.23.7 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
# 設定ファイルコピー
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
ワーカーノード参加
# ワーカーノードで実行
kubeadm join 192.168.1.10:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
ネットワークプラグイン
# Calico デプロイ
kubectl apply -f calico-custom.yaml
Kuboard デプロイメント
# Docker コンテナ実行
docker run -d \
--name=kuboard \
-p 8080:80 \
-e KUBOARD_ENDPOINT="http://192.168.1.10:8080" \
-v /kuboard-data:/data \
kuboard-image:v3
トラブルシューティング
ファイアウォール設定
# 必要なポート開放
firewall-cmd --add-port={6443,2379-2380,10250}/tcp --permanent
firewall-cmd --reload
ネットワーク問題
# NAT転送有効化
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload