この記事では、RHEL 8でKubeadmを使用したKubernetesクラスターのインストールと、AlmaLinux 8、CentOS 8、RockyLinux8などのクローンについて学習します。
始める前に、Kubernetesの概念とアーキテクチャに関する基本的な理解が必要です。 。この記事では、2ノードクラスターについて説明します。
インストールを続行するには、以下の基本要件が必要です。
- 最低2つのホスト。
- 2つのCPU。
- 2GBの物理メモリ(RAM)。
- 20GBのディスク容量。
- パッケージをダウンロードするためのインターネット接続。
1。ホスト名とIPアドレスを構成する
マスターとワーカーでホスト名を設定し、ホストを構成します。オペレーティングシステムのファイルhostsは、ホスト名またはドメイン名をIPアドレスに変換するために使用されます。
ここでは、2つのホストがあります:
- ostechmaster-マスター
- ostechworker –ワーカー
以下のコマンドを使用してホスト名を設定します。ホスト名を設定した後、再起動する必要があります。
#hostnamectl set-hostname ostechmaster
/etc/hosts
を編集します ファイル:
#vi / etc / hosts
/etc/hosts
にサーバーとクライアントの両方のホスト名とIPアドレスを追加します ファイル:
接続を確認するためにpingテストを実行します:
[[email protected]〜]#ping ostechworkerPING ostechworker(172.31.5.141)56(84)bytes of data.64 bytes from ostechworker(172.31.5.141):icmp_seq =1 ttl =64 time =0.472 ms64 bytes from ostechworker (172.31.5.141):icmp_seq =2 ttl =64 time =0.492 ms64 bytes from ostechworker(172.31.5.141):icmp_seq =3 ttl =64 time =1.43 ms64 bytes from ostechworker(172.31.5.141):icmp_seq =4 ttl =64時間=0.425ミリ秒
2。 SElinuxを無効にする
マスターとワーカーでSElinuxを無効にして、SElinuxが無効になっている場合、すべてのコンテナーがホストファイルシステムに簡単にアクセスできるようにします。
'SELINUX=disabled
を作成します '設定ファイル/etc/selinux/config
にあります viエディターを使用します。 SElinuxの変更を反映するには、再起動が必要です。
[[メール保護]〜]#vi / etc / selinux / config
以下のコマンドを使用して、SElinuxのステータスを確認します。
[[email protected]〜]#sestatusSELinux status:disabled
3。マスターとワーカーのスワップを無効にする
すべてのKubernetesホスト(マスターとワーカー)でスワップを無効にする必要があります。これは、Kubernetesコミュニティで推奨されるデプロイ方法です。スワップが無効になっていない場合、マスターとワーカーでkubeletサービスは開始されません。
以下のコマンドを実行して、SWAPを無効にします。
[[email protected]〜]#swapoff -a &&sed -i'/ swap / d'/ etc / fstab
4。ファイアウォールで必要なポートを許可する
Kubernetesコンポーネントが相互に対話するには、特定の重要なポートが使用可能である必要があります。以下は、Kubernetesコンポーネント間の接続を利用するために開くポートです。
コントロールプレーン/マスターサーバー:
プロトコル | 方向 | ポート範囲 | 目的 | 使用者 |
TCP | インバウンド | 6443 | KubernetesAPIサーバー | すべて |
TCP | インバウンド | 2379-2380 | etcdサーバークライアントAPI | kube-apiserverなど |
TCP | インバウンド | 10250 | Kubelet API | セルフ、コントロールプレーン |
TCP | インバウンド | 10259 | kube-scheduler | 自己 |
TCP | インバウンド | 10257 | kube-controller-manager | 自己 |
ワーカーノード:
プロトコル | 方向 | ポート範囲 | 目的 | 使用者 |
TCP | インバウンド | 10250 | Kubelet API | セルフ、コントロールプレーン |
TCP | インバウンド | 30000-32767 | NodePortサービス | すべて |
必要なポートがファイアウォールを通過できるようにするには、次のコマンドを実行します。
マスターノード:
[[email protected]〜]#firewall-cmd --permanent --add-port =6443 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =2379-2380 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =10250 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =10251 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =10259 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =10257 / tcp
[[email protected]〜]#firewall-cmd --reload
ワーカーノード:
[[email protected]〜]#firewall-cmd --permanent --add-port =10250 / tcp
[[email protected]〜]#firewall-cmd --permanent --add-port =30000-32767 / tcp
[[email protected]〜]#firewall-cmd --reload
デモンストレーションの目的で、マスターとワーカーの両方でファイアウォールを無効にしています。ただし、リアルタイムの制作練習にはお勧めしません。
以下のコマンドを使用して、ファイアウォールを停止および無効にします。
[[email protected]〜]#systemctl stop Firewalld
[[email protected]〜]#systemctl disable Firewalld
5。 Dockerをインストールする
Dockerを使用すると、コンテナーを「構築」しやすくなりますが、Kubernetesを使用すると、コンテナーをリアルタイムで「管理」できます。ソフトウェアをパッケージ化して出荷するには、Dockerを使用します。アプリを起動してスケーリングするには、Kubernetesを使用します。
Cluster内のすべてのマシンにDockerリポジトリを追加します。
docker.repo
という名前のファイルを作成します /etc/yum.repos.d/
の下 ディレクトリ:
[[メール保護]〜]#vi /etc/yum.repos.d/docker.repo
その中に次の行を追加します:
[docker] baseurl =https://download.docker.com/linux/centos/8/x86_64/stable/gpgcheck=0
Escキーを押して、:wq
と入力します ファイルを保存して閉じます。
マスターノードとワーカーノードの両方にDockerをインストールします:
#yum -y install docker-ce
インストールしたら、両方のノードでDockerを有効にして起動します。
#systemctl enable docker
#systemctl start docker
Dockerが両方のマシンで実行されていることを確認してください。
#systemctl status docker
6。 Kubernetesをインストールする
マスターとワーカーにKubernetesリポジトリを追加します。
ファイルkubernetes.repo
を作成します /etc/yum.repos.d/
の下のマスターとワーカーの両方で ディレクトリ:
#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.gpg
ESCを押して、:wq
と入力します ファイルを保存して閉じます。
次のコマンドを使用して、マスターノードとワーカーノードにkubeadm、kubelet、kubectlをインストールします。
#yum install -y kubelet kubeadm kubectl --disableexcludes =Kubernetes
kubelet
を有効にして開始します 両方のマシンでのサービス:
#systemctl enable kubelet
#systemctl start kubelet
Kubeletサービスのステータスをチェックし、両方のマシンで正常に実行されていることを確認します。
#systemctl status kubelet
7。 Kubernetesを初期化します
以下のコマンドを使用して、マスターサーバーでKubernetesを初期化します
[[メール保護]〜]#kubeadm init
以下の出力は、Kubernetesコントロールプレーンが正常に初期化されたことを示しています。そして、クラスターの使用を開始するための特定の手順について説明します。それに従ってください。
また、'kubeadm join'
をコピーして保存します 出力からのコマンドは、クラスター内のワーカーノードに参加するために使用されます。
出力例:
Kubernetesコントロールプレーンが正常に初期化されました! クラスタの使用を開始するには、通常のユーザーとして次を実行する必要があります。mkdir -p $ HOME / .kube sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config sudo chown $(id- u):$(id -g)$ HOME / .kube / configまたは、rootユーザーの場合は、次のコマンドを実行できます: export KUBECONFIG =/ etc / kubernetes / admin.conf ここで、ポッドネットワークをクラスターにデプロイする必要があります。https://kubernetes.io/docs/concepts/cluster-administration/addons/Thenにリストされているオプションのいずれかを使用して「kubectlapply -f[podnetwork].yaml」を実行します。ルートとしてそれぞれで以下を実行することで、任意の数のワーカーノードに参加できます。強い>
root
を進めているので ユーザーは、上記の出力に記載されているように、マスターサーバーで以下のコマンドを実行します。
[[email protected]〜]#export KUBECONFIG =/etc/kubernetes/admin.conf
8。 PODネットワークの構成
Kubernetes Podネットワークは、Kubernetesで相互接続されたコンポーネントのネットワークです。このネットワークの概念は、いくつかの異なる方法で実装できます。デモンストレーションでは、「WeaveNet」を使用します 。
マスターサーバーで以下のコマンドを実行して、PODネットワークをセットアップします。
[[email protected]〜]#export kubever =$(kubectl version | base64 | tr -d'\ n')
[[email protected]〜]#kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever
出力例:
serviceaccount / weave-netcreatedclusterrole.rbac.authorization.k8s.io/weave-netcreatedclusterrolebinding.rbac.authorization.k8s.io/weave-netcreatedrole.rbac.authorization.k8s.io/weave-netcreatedrolebinding.rbac .authorization.k8s.io / weave-net createddaemonset.apps / weave-net created [[email protected]〜]#
9。ワーカーノードに参加する
'kubeadm join
を実行します 'ワーカーノードをクラスターに参加させるコマンド。これは、'kubeadm init
からコピーしたコマンドです。 '出力。
[[email protected]〜]#kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1以下のコマンドを使用して、マスターサーバーのノードを確認できます
#kubectlgetノード出力例:
名前ステータスロール年齢バージョンostechmasterReadyコントロールプレーン、master 32m v1.23.1ostechworker Ready30m v1.23.1 結論
この記事では、Kubeadmを使用してKubernetesクラスターをセットアップおよび構成するための詳細な手順について説明しました。以前のkubernetesシリーズを参照してください Kubernetesのアーキテクチャと概念について詳細に理解するための記事。今後の記事でKubernetesの操作を確認します。
次を読む:
- LinuxでKubernetesポッドを作成および管理する方法
リソース:
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/