GNU/Linux >> Linux の 問題 >  >> Rocky Linux

RockyLinux8にKubernetesクラスターをインストールする方法

技術者の皆さん、こんにちは。Kubernetes(k8s)は、無料のオープンソースコンテナオーケストレーションシステムです。コンテナ化されたアプリケーションのデプロイメントと管理を自動化するために使用されます。このガイドでは、kubeadmを使用してRockyLinux8にkubernetesクラスターをインストールする方法を段階的に説明します。

Kubernetesの最小システム要件

  • 2つ以上のvCPU
  • 2GB以上のRAM
  • スワップが無効
  • 少なくともNICカード
  • 安定したインターネット接続
  • sudo権限を持つ1人の通常のユーザー。

デモンストレーションのために、私は次のシステムを使用しています

  • 一度マスターノード/コントロールプレーン(2 GB RAM、2vCPU、1 NICカード、Minimal Rocky Linux 8 OS)
  • 2つのワーカーノード(2GB RAM、2vCPU、1 NICカード、Minimal Rocky Linux 8 OS)
  • マスターノードのホスト名–コントロールノード(192.168.1.240)
  • 作業ノードのホスト名– worker-node1(192.168.1.241)、worker-node2(192.168.1.242)

さらに面倒なことはせずに、Kubernetesのインストール手順を詳しく見ていきましょう。

注:これらの手順は、RHEL8およびAlmaLinuxOSにも適用できます。

ステップ1)ホスト名を設定してhostsファイルを更新する

hostnamectlコマンドを使用して、コントロールノードとワーカーノードにホスト名を設定します。

制御ノードでコマンドの下で実行

 $ sudo hostnamectl set-hostname "control-node" $ exec bash 

ワーカーノード1で次のコマンドを実行します

 $ sudo hostnamectl set-hostname "worker-node1" $ exec bash 

ワーカーノード2

 $ sudo hostnamectl set-hostname "worker-node2" $ exec bash 

コントロールノードとワーカーノードの/etc/hostsファイルにそれぞれ次のエントリを追加します。

 192.168.1.240 control-node192.168.1.241 worker-node1192.168.1.242 worker-node2 

ステップ2)スワップを無効にし、SELinuxを許可モードに設定します

スワップを無効にして、kubeletが正しく機能するようにします。すべてのノードで以下のコマンドを実行して無効にします

 $ sudo swapoff -a $ sudo sed -i'/ swap / s / ^ \(。* \)$ /#\ 1 / g'/ etc / fstab 

すべてのノードでsedコマンドの下で実行して、SELinuxを許可モードに設定します

 $ sudo setenforce 0 $ sudo sed -i's / ^ SELINUX =enforcing $ / SELINUX =permit /'/ etc / selinux / config 

ステップ3)マスターノードとワーカーノードでファイアウォールルールを構成する

コントロールプレーンでは、ファイアウォールで次のポートを許可する必要があります。

コントロールプレーンで上記のポートを許可するには、

を実行します。
 $ sudo Firewall-cmd --permanent --add-port =6443 / tcp $ sudo Firewall-cmd --permanent --add-port =2379-2380 / tcp $ sudo Firewall-cmd --permanent --add -port =10250 / tcp $ sudo Firewall-cmd --permanent --add-port =10251 / tcp $ sudo Firewall-cmd --permanent --add-port =10252 / tcp $ sudo Firewall-cmd --reload $ sudo modprobe br_netfilter $ sudo sh -c "echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables" $ sudo sh -c "echo '1'> / proc / sys / net / ipv4 / ip_forward "

ワーカーノードでは、ファイアウォールで次のポートを許可する必要があります

 $ sudo Firewall-cmd --permanent --add-port =10250 / tcp $ sudo Firewall-cmd --permanent --add-port =30000-32767 / tcp br_netfilter $ sudo sh -c "echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables" $ sudo sh -c "echo '1'> / proc / sys / net / ipv4 / ip_forward "

ステップ4)マスターノードとワーカーノードにDockerをインストールする

マスターノードとワーカーノードにDockerをインストールします。ここで、dockerはコンテナー実行時間(CRI)を提供します。最新のDockerをインストールするには、最初に次のコマンドを実行してリポジトリを有効にする必要があります。

 $ sudo dnf config-manager --add-repo =https://download.docker.com/linux/centos/docker-ce.repo 

次に、すべてのノードでdnfコマンドの下で実行して、docker-ce(docker community edition)をインストールします

 $ sudo dnf install docker-ce -y 

出力

Dockerとその依存関係をインストールしたら、次のコマンドを実行してサービスを開始し、有効にします

 $ sudo systemctl start docker $ sudo systemctl enable docker 

ステップ5)kubelet、Kubeadm、およびkubectlをインストールします

Kubeadmは、Kubernetesクラスターをインストールするためのユーティリティです。 Kubectlは、Kubernetesクラスターとのやり取りに使用されるコマンドラインユーティリティです。 Kubeletは、すべてのノードを実行し、ポッドやコンテナーの開始や停止などのタスクを実行するコンポーネントです。

すべてのノードにkubelet、Kubeadm、kubectlをインストールするには、最初にKubernetesリポジトリを有効にする必要があります。

マスターノードとワーカーノードで下のコマンドを実行します。

 $ cat < 

上記のパッケージをインストールした後、すべてのノード(コントロールノードとワーカーノード)でkubeletサービスを有効にして、実行します

 $ sudo systemctl enable --now kubelet 

ステップ6)Kubeadmを使用してKubernetesクラスターをインストールする

Kubernetesクラスタをインストールする際、コンテナランタイム(CRI)のcgroupがkubeletのcgroupと一致することを確認する必要があります。通常、Dockerではcgroupはcgroupfsであるため、kubeletのcgoupとしてcgroupfsを使用するようにKubeadmに指示する必要があります。これは、Kubeadmコマンドでyamlを渡すことで実行できます

次のコンテンツを使用して、コントロールプレーンにkubeadm-config.yamlファイルを作成します

 $ vi kubeadm-config.yaml#kubeadm-config.yamlkind:ClusterConfigurationapiVersion:kubeadm.k8s.io/v1beta3kubernetesVersion:v1.23.4--kind:KubeletConfigurationapiVersion:kubelet.config.k8s.io/v1beta1cgroupDriver:cgroupfs 
>

注:セットアップに従って、Kubernetesバージョンを置き換えます。

これで、制御ノードからKubeadmコマンドの下で実行してインストール(またはクラスターを初期化)する準備が整いました。

 $ sudo kubeadm init --config kubeadm-config.yaml 

上記のコマンドの出力は次のようになります

上記の出力は、クラスターが正常に初期化されたことを確認します。

次のコマンドを実行して、通常のユーザーがクラスターと対話できるようにします。これらのコマンドはすでに出力に含まれています。

 $ mkdir -p $ HOME / .kube $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config $ sudo chown $(id -u):$(id -g)$ HOME /.kube/config$kubectlgetノード

ノードを準備完了状態にし、クラスターDNSサービス(coredns)を有効にするには、ポッドネットワークアドオン(CNI –コンテナーネットワークインターフェイス)をインストールします。ポッドネットワークアドオンがインストールされると、ポッドは相互に通信を開始します。このガイドでは、ネットワークアドオンとしてcalicoをインストールしています。コントロールプレーンからkubectlコマンドの下で実行します。

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

出力

calico network ad-onのインストールが成功すると、kube-system名前空間のコントロールノードとポッドがそれぞれ準備が整い、利用できるようになります。

次のステップは、ワーカーノードをクラスターに参加させることです。

ステップ7)ワーカーノードをクラスターに参加させる

Kubernetesクラスターの初期化が成功すると、任意のワーカーノードをクラスターに参加させるコマンドが出力に表示されます。したがって、そのコマンドをコピーして、ワーカーノードに貼り付けます。だから、私の場合、コマンドは、

 $ sudo kubeadm join 192.168.1.240:6443 --token jecxxg.ac3d3rpd4a7xbxx4 --discovery-token-ca-cert-hash sha256:1e4fbed060aafc564df75bc776c18f6787ab91685859e74d43449cf5a5d91d86 

両方のワーカーノードで上記のコマンドを実行します。

コントロールプレーンから両方のワーカーノードのステータスを確認し、実行します

<前> [[Eメール保護]〜] $ kubectl GET nodesNAME STATUSの役割AGEバージョン管理ノードレディコントロールプレーン、マスター49メートルのv1.23.4worker-node1の準備<なし> 5m18s v1.23.4worker-node2の準備<なし> 3m57s V1 .23.4 [[メール保護]〜] $

上記の出力は、ワーカーノードがクラスターに参加していることを示しています。このガイドの内容は以上です。このガイドが参考になることを願っています。以下のコメントセクションで質問やフィードバックを共有してください。


No
Rocky Linux
  1. RockyLinux8にMariaDB10.6をインストールする方法

  2. RockyLinux8にDockerをインストールする方法

  3. Rocky Linux 8 に MariaDB をインストールする方法

  1. RockyLinux8にコックピットをインストールする方法

  2. RockyLinux8にGitLabをインストールする方法

  3. RockyLinux8.4のインストール方法

  1. RockyLinux8にFreeIPAをインストールする方法

  2. RockyLinux8にPodmanをインストールする方法

  3. RockyLinux8にFlatpakをインストールする方法