インストールのプロセス Kubernetesクラスター オン CentOS 8 とほぼ同じです CentOS 7 (あなたが通過することができます ここ)が、ここでのプロセスにはいくつかの変更があります。 これらの変更は、主にのインストールを中心に展開します Docker.
から始まる CentOS 8 (そしてひいては RHEL 8), docker ネイティブに置き換えられました podman と buildah からのツールです Redhat. 実際のところ、dockerパッケージはデフォルトのパッケージリポジトリから削除されました。
この動きで、 Redhat チームは、特別な権限を必要とせずに、コンテナの作成と使用のプロセスを簡素化することを目指しています。 同時に、Dockerイメージとの互換性を維持し、Dockerイメージを必要とせずに操作します。 デーモン。 ポッドマン 実行時に柔軟性を高めることを約束します Kubernetes 環境が、陪審員はそこに残ります。
この記事では、インストールのプロセスを実行します Kubernetes に CentOS 8 プラットフォーム、実行中 Docker-CE (コミュニティエディション). 後の記事では、同様のインストールを実行します。 podman 私たちのコンテナのために。
ほとんどのノードには通常、固有のものが付属しています
マック ただし、一部の固有のケースでは、 仮想マシン 同一のMACアドレスを持つ場合があります。 したがって、次のことを確認することをお勧めします。 Product_UUID そしてその マック アドレスはどのノードでも同一ではありません。Kubernetes これらの値を使用して、クラスター内のノードを一意に識別します。 これらの値が各ノードに固有でない場合、インストールプロセスが失敗する可能性があります。
ネットワークインターフェースのMACアドレスを確認して比較します。
#IPリンク。
確認するには product_uuid 比較して、次のコマンドを実行します。
#cat / sys / class / dmi / id / product_uuid
私たちのインストールは、 マスターノード 制御 ワーカーノード. このインストールの最後に、論理アーキテクチャは次のようになります。
マスターノード –このマシンは通常、コントロールプレーンとして機能し、クラスターデータベースとAPIサーバー(kubectl CLIが通信する)を実行します。
私たちの3ノード Kubernetesクラスター 次のようになります。
にとって Kubernetes 動作するには、コンテナ化エンジンが必要です。 前述のように、 Docker-CE.
以下の機関が上演されます CentOS8マスターノード.
あなたに CentOS8マスターノード、システムのホスト名を設定し、DNSを更新します /etc/hosts ファイル。
#hostnamectlset-hostnameマスターノード。 #猫<> / etc / hosts。 192.168.0.47マスターノード。 192.168.0.48ノード-1ワーカーノード-1。 192.168.0.49ノード2ワーカーノード2。 EOF。
次に、pingを実行します ワーカーノード-1 と ワーカーノード-2 更新されたホストファイルが正しく機能しているかどうかを確認するには、 pingコマンド.
#ping192.168.0.48。 #ping192.168.0.49。
次に、無効にします Selinux、これは、コンテナがホストファイルシステムにアクセスできるようにするために必要であり、ポッドネットワークやその他のサービスに必要です。
#setenforce0。
設定 setenforce に 0
SELinuxをパーミッシブに効果的に設定します。これにより、次の再起動までSELinuxが効果的に無効になります。 完全に無効にするには、以下のコマンドを使用して再起動します。
#sed -i --follow-symlinks's / SELINUX = enforcing / SELINUX = disabled / g '/ etc / sysconfig / selinux。 #再起動します。
Kubernetesは、通信とアクセスにさまざまなポートを利用します。これらのポートは、ファイアウォールによって制限されずに、Kubernetesからアクセスできる必要があります。
ポートにファイアウォールルールを構成します。
#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。 #modprobebr_netfilter。 #echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables。
追加する必要があります Docker 以下を使用してデフォルトのパッケージリストに含まれなくなったため、最初にリポジトリを作成します dnf config-manager 指図。
#dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
また、インストールします containerd.io ホストシステムの完全なコンテナライフサイクルを管理するデーモンとして利用可能なパッケージ。 画像の転送とストレージからコンテナへの実行と監視から低レベルのストレージへのネットワーク接続と 超えて。
#dnfインストール https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
次に、の最新バージョンをインストールします。 docker-ce パッケージ。
#dnf installdocker-ce。
これで、Dockerサービスを有効にして開始できます。
#systemctl enabledocker。 #systemctl startdocker。
次に、追加する必要があります Kubernetes リポジトリはデフォルトではインストールされないため、手動で CentOS 8.
#猫</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。
クベアドム ベストプラクティスに準拠する、実行可能な最小限のKubernetesクラスターをブートストラップするのに役立ちます。 と kubeadm、クラスタはKubernetes適合性テストに合格する必要があります。
クベアドム アップグレード、ダウングレード、ブートストラップトークンの管理など、他のクラスターライフサイクル機能もサポートします。 Kubeadmは、次のような他のオーケストレーションツールとも統合できます。 Ansible と Terraform.
パッケージリポジトリの準備ができたら、先に進んでインストールできます kubeadm パッケージ。
#dnf install kubeadm -y
インストールが正常に完了したら、サービスを有効にして開始します。
#systemctl enablekubelet。 #systemctl startkubelet。
として機能するKubernetesマスター コントロールプレーン クラスターは、クラスターに必要ないくつかの重要なサービスを実行します。 そのため、初期化プロセスは一連の事前チェックを実行して、マシンがKubernetesを実行する準備ができていることを確認します。 これらの事前チェックにより、警告が表示され、エラーが発生すると終了します。 kubeadm init 次に、クラスターコントロールプレーンコンポーネントをダウンロードしてインストールします。
次に、Kubernetesマスターを初期化しますが、その前に、「kubeadm init" 指図。
#swapoff-a。
初期化中 Kubernetes マスターは完全に自動化されたプロセスであり、「kubeadm init「示されているコマンド。
#kubeadminit。
次に、後でワーカーノードでこのコマンドを実行する必要があるため、次のコマンドをコピーしてどこかに保存します。
kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7
ヒント:上記のコマンドは、渡された引数についてエラーをスローする場合があるため、エラーを回避するには、を削除する必要があります。 ‘\’
文字と最終的なコマンドは次のようになります。
#kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7。
一度 Kubernetes 正常に初期化されたら、ユーザーがクラスターの使用を開始できるようにする必要があります。 このシナリオでは、rootユーザーを使用します。 図のように、sudoユーザーを使用してクラスターを開始することもできます。
使用するには 根、 走る:
#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コマンド がアクティブになります。
#kubectlgetノード。
この時点で、マスターノードのステータスは「準備ができていない’. これは、ポッドネットワークをまだクラスターにデプロイしていないためです。
ポッドネットワークは、クラスターのオーバーレイネットワークであり、現在のノードネットワークの上に展開されます。 ポッド全体の接続を可能にするように設計されています。
ネットワーククラスターの展開は、ニーズに応じて非常に柔軟なプロセスであり、利用可能な多くのオプションがあります。 インストールはできるだけシンプルにしたいので、 ウィーブネット 構成や追加のコードを必要とせず、ポッドごとに1つのIPアドレスを提供するプラグインは私たちにとって素晴らしいものです。 より多くのオプションを見たい場合は、チェックしてください ここ.
これらのコマンドは、ポッドネットワークをセットアップするために重要になります。
#export kubever = $(kubectl version | base64 | tr -d '\ n') #kubectl apply -f " https://cloud.weave.works/k8s/net? k8s-version = $ kubever "
マスターノードのステータスを確認すると、「準備’.
#kubectlgetノード。
次に、 ワーカーノード クラスターに。
以下の指示は、それぞれに対して実行されます ワーカーノード Kubernetesクラスターに参加するとき。
まず、ホスト名を設定します ワーカーノード-1 と ワーカーノード-2、次にホストエントリをに追加します /etc/hosts ファイル。
#hostnamectl set-hostname'node-1 ' #猫<> / etc / hosts。 192.168.0.47マスターノード。 192.168.0.48ノード-1ワーカーノード-1。 192.168.0.49ノード2ワーカーノード2。 EOF。
次に、pingを実行します マスターノード あなたから ワーカーノード 更新されたホストファイルが正常に機能していることを確認するには、 pingコマンド.
# 192.168.0.47.
次に、無効にします SElinux ファイアウォールルールを更新します。
#setenforce0。 #sed -i --follow-symlinks's / SELINUX = enforcing / SELINUX = disabled / g '/ etc / sysconfig / selinux。 #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。
最初にDNFconfig-managerを使用してDockerリポジトリを追加します。
#dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
次に、を追加します containerd.io パッケージ。
#dnfインストール https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
これらの2つのパッケージをインストールした状態で、の最新バージョンをインストールします。 docker-ce.
#dnf installdocker-ce。
Dockerサービスを有効にして開始します。
#systemctl enabledocker。 #systemctl startdocker。
追加する必要があります Kubernetes リポジトリはプリインストールされていないため、手動で CentOS 8.
#猫</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。
パッケージリポジトリの準備ができたら、先に進んでインストールできます kubeadm.
#dnf install kubeadm -y
サービスを開始して有効にします。
#systemctl enablekubelet。 #systemctl startkubelet。
今、次のトークンが必要です kubeadm init 生成され、クラスターに参加します。 コピーして貼り付けることができます ノード1 と ノード2 どこかにコピーした場合。
#kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78。
最後の行で提案されているように、 マスターノード 労働者かどうかを確認します ノード1 と ワーカーノード-2 次のコマンドを使用してクラスターに参加しました。
#kubectlgetノード。
すべてのステップが正常に実行されると、次のように表示されます。 ノード1 と ノード2 で準備完了ステータス マスターノード. この時点で、Kubernetesクラスターが正常にデプロイされました CentOS 8.
おすすめの読み物: KubernetesクラスターにNginxをデプロイする方法
ここで作成したクラスターには、単一のクラスターがあります マスターノード、およびそのため、 マスターノード 失敗すると、クラスターのデータが失われ、最初から再作成する必要がある場合があります。
このため、高可用性セットアップをお勧めします。