CentOS 7 に Kubernetes クラスターをインストールする方法
Google によってオープンソース コミュニティに寄付されたKubernetes は、現在、コンテナ管理ツールとして選ばれています。 Docker ランタイムだけでなく、 コンテナやRkt ランタイムも管理および調整できます。
典型的なKubernetes クラスターには通常、マスター ノードといくつかのワーカーノードまたはミニオンがあります。ワーカーノードはマスターノードから管理されるため、クラスターは確実に中央点から管理されます。
また、単一ノードの Kubernetes クラスターをデプロイすることもできることに言及することも重要です。これは、非常に軽い非運用ワークロードに一般的に推奨されます。これには、ノード上の仮想マシンで単一ノードの Kubernetes クラスターを実行するツールであるMinikubeを使用できます。
推奨読書: CentOS 8 に Kubernetes クラスターをインストールする方法
このチュートリアルでは、CentOS 7 Linux 上でのマルチノードのKubernetes クラスターのインストールについて説明します。このチュートリアルはコマンドライン ベースであるため、ターミナル ウィンドウにアクセスする必要があります。
前提条件
- Centos 7 を実行している複数のサーバー (1 つのマスター ノード、2 つのワーカー ノード)。厳密な要件ではありませんが、マスター ノードに少なくとも 2 つの CPU を搭載することをお勧めします。
- すべてのノードでのインターネット接続。リポジトリからKubernetes とdocker パッケージを取得します。同様に、yum パッケージ マネージャーがデフォルトでインストールされ、リモートでパッケージをフェッチできることを確認する必要があります。
- sudo または root 権限を持つアカウントにアクセスする必要もあります。このチュートリアルでは、root アカウントを使用します。
3 ノードのクラスターは次のようになります。
マスターノードへの Kubernetes クラスターのインストール
Kubernetes が機能するには、コンテナ化エンジンが必要です。このインストールでは、 最も一般的なドッカーを使用します。
次の手順はマスターノードで実行されます。
ステップ 1: ホスト名、ファイアウォール、SELinux を準備する
マスター ノードでホスト名を設定し、DNS サーバーがない場合は /etc/hosts ファイルも更新します。
hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF
ping コマンドを使用して、ワーカー ノード 1 と ワーカー ノード 2 に ping を実行し、更新されたホストファイルが正常であるかどうかをテストできます。
ping 10.128.0.29
ping 10.128.0.30
次に、SElinux を無効にし、ファイアウォール ルールを更新します。
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot
ポートに次のファイアウォール ルールを設定します。各 firewall-cmd コマンドが成功を返すことを確認してください。
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
ステップ 2: Kubernetes リポジトリをセットアップする
Kubernetes リポジトリはCentOS 7 にはデフォルトでインストールされないため、手動で追加する必要があります。
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
ステップ 3: Kubeadm と Docker をインストールする
パッケージ リポジトリの準備ができたら、kubeadm パッケージと docker パッケージをインストールできます。
yum install kubeadm docker -y
インストールが正常に完了したら、両方のサービスを有効にして開始します。
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker
ステップ 4: Kubernetes マスターの初期化とデフォルト ユーザーのセットアップ
これで、kubernetes マスターを初期化する準備が整いましたが、その前に「kubeadm init」 コマンドを実行するためにスワップを無効にする必要があります。
swapoff -a
Kubernetes マスターの初期化は、実行する「kubeadm init」コマンドによって管理される完全に自動化されたプロセスです。
kubeadm init
最後の行はワーカーノードで実行する必要があるため、コピーしてどこかに保存しておくとよいでしょう。
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
ヒント: このコマンドでは、渡された引数 (args) について問題が発生する場合があるため、問題が発生しないように編集してください。エラー。したがって、--token
に付随する ‘\’
文字を削除すると、最終的なコマンドは次のようになります。
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
Kubernetes が正常に初期化されたら、ユーザーがクラスターの使用を開始できるようにする必要があります。この例では、 このインストールをroot ユーザーとして実行したいため、これらのコマンドを root として実行します。 sudo が有効なユーザーに変更し、sudo を使用して以下を実行できます。
root を使用するには、次のコマンドを実行します。
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
sudo が有効なユーザーを使用するには、次のコマンドを実行します。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
ここで、kubectl コマンドがアクティブ化されているかどうかを確認します。
kubectl get nodes
この時点で、マスターノードのステータスが「NotReady」であることにも気づきます。これは、 まだクラスターにポッド ネットワークをデプロイしていないためです。
ポッド ネットワークは、現在のノード ネットワークの上にデプロイされる、クラスターのオーバーレイ ネットワークです。ポッド全体の接続を可能にするように設計されています。
ステップ 5: ポッド ネットワークをセットアップする
ネットワーク クラスターの展開は、ニーズに応じて非常に柔軟なプロセスであり、多くのオプションが利用可能です。インストールをできるだけシンプルにしたいため、構成や追加のコードを必要とせず、ポッドごとに 1 つの IP アドレスを提供するWeavenet プラグインを使用します。これは私たちにとって非常に便利です。さらにオプションをご覧になりたい場合は、こちらをご覧ください。
これらのコマンドは、ポッド ネットワークをセットアップするために重要です。
export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
ここでマスターノードのステータスを確認すると、「準備完了」になっているはずです。
kubectl get nodes
次に、 クラスターにワーカー ノードを追加します。
Kubernetes クラスターに参加するためのワーカー ノードのセットアップ
次の手順はワーカー ノードで実行されます。これらの手順は、Kubernetes クラスターに参加するときにすべてのワーカー ノードで実行する必要があります。
ステップ 1: ホスト名、ファイアウォール、SELinux を準備する
ワーカーノード 1 と ワーカーノード 2 でホスト名を設定し、DNS サーバーがない場合はマスターとワーカーも更新します。 /etc/hosts ファイル上のノード。
hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF
マスターノードに ping を実行して、更新されたホストファイルが正常かどうかをテストできます。
次に、SElinux を無効にし、ファイアウォール ルールを更新します。
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
ポートに次のファイアウォール ルールを設定します。すべての firewall-cmd コマンドが成功を返すことを確認します。
firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
ステップ 2: Kubernetes リポジトリをセットアップする
Kubernetes リポジトリはCentOS 7 にプリインストールされていないため、手動で追加する必要があります。
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
ステップ 3: Kubeadm と Docker をインストールする
パッケージ リポジトリの準備ができたら、kubeadm パッケージと docker パッケージをインストールできます。
yum install kubeadm docker -y
両方のサービスを開始して有効にします。
systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet
ステップ 4: ワーカー ノードを Kubernetes クラスターに参加させる
クラスターに参加するには、kubeadm init が生成したトークンが必要になります。どこかにコピーした場合は、ノード 1 と ノード 2 にコピーして貼り付けることができます。
kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41
最後の行で提案されているように、マスター ノードに戻り、ワーカー ノード 1 と ワーカー ノード 2 が参加しているかどうかを確認します。次のコマンドを使用してクラスターを作成します。
kubectl get nodes
すべての手順が正常に実行されると、マスター ノード上でノード 1 と ノード 2 が準備完了ステータスになっていることが表示されます。
推奨読書: Kubernetes クラスターに Nginx をデプロイする方法
この時点で、Centos 7 へのKubernetes クラスターのインストールが正常に完了し、2 つのワーカーノードを正常にオンボードしました。これで、ポッドの作成とサービスのデプロイを開始できるようになりました。