Kubernetes 1.13 単一ノード環境構築ガイド

概要

Kubernetes環境を手動で構築する際のネットワーク問題を回避するため、公式ツールkubeadmを使用した単一ノード環境のセットアップ手順を解説します。

kubeadmの概要

kubeadmはKubernetesの公式インストールツールであり、主要なコマンド機能は以下の通りです:

  • kubeadm init: マスターノードの初期化
  • kubeadm join: ワーカーノードのクラスタ参加
  • kubeadm reset: 環境設定のロールバック

OS事前設定

SELinuxとファイアウォール設定

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
systemctl disable firewalld --now

カーネルパラメータ設定

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

リポジトリ設定

yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF

Swap無効化

swapoff -a
sed -i '/swap/d' /etc/fstab
echo "vm.swappiness=0" >> /etc/sysctl.conf

Dockerのインストール

yum install -y docker-ce-18.06.3.ce
systemctl enable --now docker

Kubernetesコンポーネントのインストール

yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3
systemctl enable --now kubelet

コンテナイメージの準備

declare -A k8s_images=(
  ["kube-apiserver"]="v1.13.3"
  ["kube-controller-manager"]="v1.13.3"
  ["kube-scheduler"]="v1.13.3"
  ["kube-proxy"]="v1.13.3"
  ["pause"]="3.1"
  ["etcd"]="3.2.24"
  ["coredns"]="1.2.6"
)

for img in "${!k8s_images[@]}"; do
  docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${img}:${k8s_images[$img]}
  docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${img}:${k8s_images[$img]} k8s.gcr.io/${img}:${k8s_images[$img]}
done

クラスタ初期化

kubeadm init --pod-network-cidr=10.100.0.0/16
mkdir -p $HOME/.kube
cp /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

マスターノードのTaint解除

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

動作検証

kubectl create deployment nginx-test --image=nginx:1.14
kubectl expose deployment nginx-test --port=80 --type=NodePort

タグ: Kubernetes kubeadm Docker CentOS クラスタ構築

5月14日 21:33 投稿