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

RHEL 8にKubernetes(k8s)クラスターをインストールする方法

k8sとも呼ばれるKubernetesは、コンテナ化されたアプリケーションのデプロイと管理を自動化するための、オープンソースのポータブルコンテナオーケストレーションプラットフォームです。 Kubernetesは、もともとGoogleによってGoプログラミング言語で作成されました。現在、Cloud NativeComputingFoundationによって管理されています。

このガイドでは、RHEL 8にKubernetesクラスターをインストールする方法を段階的に説明します。クラスターに追加する1つのマスターノードと1つのワーカーノードを使用して、これをデモンストレーションします。

ラボのセットアップ

  • マスターノード:master-node-k8 10.128.15.228
  • ワーカーノード:worker-node-1-k8 10.128.15.230

注:ステップ1から6は、マスターノードとワーカーノードの両方に適用する必要があります。

ステップ1)スワップスペースを無効にする

最高のパフォーマンスを得るには、Kubernetesでホストシステムでスワップを無効にする必要があります。これは、メモリスワッピングが不安定性とパフォーマンスの低下につながる可能性があるためです。

スワップスペースを無効にするには、次のコマンドを実行します。

 $ sudo swapoff -a 

変更を永続的にするには、/ etc / fstabファイルを編集し、スワップエントリのある行を削除またはコメントアウトして、変更を保存します。

ステップ2)SELinuxを無効にする

さらに、ノードとポッド間のスムーズな通信を可能にするために、SELinuxを無効にして「パーミッシブ」に設定する必要があります。

これを実現するには、SELinux構成ファイルを開きます。

 $ sudo vi / etc / selinux / config 

SELINUXの値を強制から許容に変更します。

 SELINUX =permissive 

または、次のようにsedコマンドを使用します。

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

ステップ3)マスターノードとワーカーノードでネットワークを構成する

マスターノードとワーカーノードが効果的に通信するには、いくつかの追加のネットワーク構成が必要です。各ノードで、/ etc/hostsファイルを編集します。

 $ sudo vi / etc / hosts 

次に、図のようにエントリを更新します

 10.128.15.228master-node-k8//マスターノードの場合10.128.15.230worker-node-1-k8//ワーカーノードの場合

構成ファイルを保存して終了します。次に、交通管制ユーティリティパッケージをインストールします:

 $ sudo dnf install -y iproute-tc 

ステップ4)k8sのファイアウォールルールを許可する

マスターノードとワーカーノード間のシームレスな通信を行うには、ファイアウォールを構成し、以下に概説するようにいくつかの関連するポートとサービスを許可する必要があります。

マスターノードで、次のポートを許可します

 $ 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 Firewall-cmd --permanent --add-port =10250 / tcp $ sudo Firewall-cmd --permanent --add-port =30000-32767 / tcp load->> 

ステップ5)CRI-Oコンテナランタイムをインストールする

Kubernetesを実行するには、ポッドを実行するためのコンテナランタイムが必要です。 Kubernetes 1.23以降のバージョンでは、コンテナランタイムインターフェイスで確認するコンテナランタイムをインストールする必要があります。

コンテナランタイムは、コンテナの実行をサポートするアプリケーションです。 Kubernetesは次のコンテナランタイムをサポートしています:

  • コンテナ
  • CRI-O
  • Dockerエンジン
  • Mirantisコンテナランタイム

このガイドでは、高レベルのコンテナランタイムであるCRI-Oをインストールします。そのためには、overlayモジュールとbr_netfilterモジュールの2つの重要なカーネルモジュールを有効にする必要があります。

これを実現するには、前提条件を次のように構成する必要があります。

まず、Kubernetesのモジュール構成ファイルを作成します。

 $ sudo vi /etc/modules-load.d/k8s.conf 

これらの行を追加して変更を保存します

 overlaybr_netfilter 

次に、modprobeコマンドを使用して両方のモジュールをロードします。

 $ sudo modprobe overlay $ sudo modprobe br_netfilter 

次に、必要なsysctlパラメーターを次のように構成します

 $ sudo vi /etc/sysctl.d/k8s.conf 

次の行を追加します:

 net.bridge.bridge-nf-call-iptables =1net.ipv4.ip_forward =1net.bridge.bridge-nf-call-ip6tables =1 

変更を保存して終了します。変更が適用されたことを確認するには、次のコマンドを実行します。

 $ sudo sysctl --system 

CRI-Oをインストールするには、CRI-Oのバージョンと一致するように$VERSION環境変数を設定します。たとえば、CRI-Oバージョン1.21をインストールするには、次のように$VERSIONを設定します。

 $ export VERSION =1.21 

次に、次のコマンドを実行します。

 $ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable /CentOS_8/devel:kubic:libcontainers:stable.repo 
 $ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic :libcontainers:stable:cri-o:$ VERSION / CentOS_8 / devel:kubic:libcontainers:stable:cri-o:$ VERSION.repo 

次に、DNFパッケージマネージャーを使用してCRI-Oをインストールします:

 $ sudo dnf install cri-o 

次に、起動時にCRI-Oを有効にして、起動します。

 $ sudo systemctl enable cri-o $ sudo systemctl start cri-o 

ステップ6)Kubernetesパッケージをインストールする

Kubernetesが機能するために必要なすべてのものがインストールされたら、先に進んで、kubelet、kubeadm、kubectlなどのKubernetesパッケージをインストールします。 Kubernetesリポジトリファイルを作成します。

 $ sudo vi /etc/yum.repos.d/kubernetes.repo 

そして、次の行を追加します。

 [kubernetes] name =Kubernetesbaseurl =https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/ yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubelet kubeadm kubectl 

変更を保存して終了します。最後に、次のようにk8sパッケージをインストールします。

 $ sudo dnf install -y kubelet kubeadm kubectl --disableexcludes =kubernetes 

インストールしたら、必ずKubeletサービスを有効にして開始してください。

 $ sudo systemctl enable kubelet $ sudo systemctl start kubelet 

この時点で、Kubernetesクラスターをインストールする準備が整いました。

ステップ7)Kubernetesクラスタを作成する

次のように、kubeadmコマンドを使用してKubernetesクラスターを初期化します。これにより、マスターノードのコントロールプレーンが初期化されます。

 $ sudo kubeadm init --pod-network-cidr =192.168.10.0 / 16 

コントロールプレーンが作成されたら、クラスターの使用を開始するためにいくつかの追加コマンドを実行する必要があります。

したがって、コマンドを順番に実行します。

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

出力の最後に、クラスターに参加するためにワーカーノードで実行するコマンドが表示されます。これについては、次のステップで後で説明します。

また、必ずマスターノードから汚染を削除してください:

$ kubectl taintノード–すべてのノード-role.kubernetes.io/master-

ステップ8)CalicoPodNetworkアドオンをインストールします

次のステップは、Calico CNI(Container Network Interface)をインストールすることです。これは、コンテナネットワークとセキュリティを提供するために使用されるオープンソースプロジェクトです。 Calico CNIをインストールすると、ノードの状態がReady状態に変わり、クラスター内のDNSサービスが機能し、コンテナーが相互に通信を開始できるようになります。

Calicoは、スケーラビリティ、高性能、および既存のKubernetesワークロードとの相互運用性を提供します。オンプレミスおよびGoogleCloud、AWS、Azureなどの一般的なクラウドテクノロジーにデプロイできます。

Calico CNIをインストールするには、マスターノードから次のコマンドを実行します

 $ kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml 

完了したら、これを実行します。

 $ kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml 

ポッドが起動したかどうかを確認するには、次のコマンドを実行します。

 $ watch kubectl get pods -n calico-system 

3番目の列に示すように、各ポッドが「準備完了」であり、「実行中」のステータスになっていることがわかります。

クラスタ内のマスターノードの可用性を確認するには、次のコマンドを実行します。

 $kubectlgetノード

さらに、-owideオプションを使用してより多くの情報を取得できます。

 $ kubectl get node -o wide 

上記の出力は、マスターノードの準備ができていることを確認します。さらに、ポッドの名前空間を確認できます:

 $ kubectl get pods --all-namespaces 

ステップ9)クラスターへのワーカーノードの追加

ワーカーノードをKubernetesクラスターに追加するには、ステップ1からステップ6までを実行します。完了したら、マスターノードによって生成されたコマンドを実行してワーカーノードをクラスターに参加させます。私たちの場合、これは次のようになります:

 $ sudo kubeadm join 10.128.15.228:6443 --token cqb8vy.iicmmqrb1m8u9cob --discovery-token-ca-cert-hash sha256:79748a56f603e6cc57f67bf90b7db5aebe090107d540d6cc8a8f65b785de754 

すべてがうまくいけば、ノードがクラスターに参加したという通知を受け取るはずです。複数のワーカーノードがある場合は、他のノードに対して同じ手順を繰り返します

ここで、マスターノードに戻り、もう一度、クラスター内のノードを確認します。今回は、ワーカーノードがクラスター内のノードのリストに表示されます

 $kubectlgetノード

結論

これは、RHEL8にKubernetesクラスターをインストールする方法のウォークスルーでした。このガイドに関するフィードバックを歓迎します。


Linux
  1. CentOS7にKubernetesクラスターをインストールする方法

  2. RHEL8にsparkをインストールする方法

  3. CentOS /RHEL8にElasticsearchをインストールする方法

  1. RHEL8にActiveMQをインストールする方法

  2. RHEL8にcassandraをインストールする方法

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

  1. CentOS 7 / RHEL 7にKubernetes(k8s)1.7をインストールする方法

  2. Ubuntu 20.04 LTSサーバーにKubernetes(k8s)をインストールする方法

  3. Kubeadmを使用してHAでKubernetes(k8s)クラスターをセットアップする方法