Kubernetesはクラスターです およびオーケストレーション Dockerコンテナ用のエンジン。つまり、Kubernetesは、クラスタ環境でDockerコンテナを調整および管理するために使用されるオープンソースのソフトウェアまたはツールです。 Kubernetesはk8sとも呼ばれ、Googleによって開発され、「CloudNativeComputingFoundation」に寄付されました
Kubernetesのセットアップでは、1つのマスターノードと複数のノードがあります。クラスターノードは、ワーカーノードまたはミニオンと呼ばれます。マスターノードから、「 kubeadm」を使用してクラスターとそのノードを管理します ‘および‘ kubectl ‘コマンド。
Kubernetesは、次の方法を使用してインストールおよびデプロイできます。
- Minikube(単一ノードのkubernetesクラスターです)
- Kops(AWSへのマルチノードkubernetesセットアップ)
- Kubeadm(私たちの敷地内のマルチノードクラスター)
この記事では、kubeadmユーティリティを使用してCentOS 7 /RHEL7に最新バージョンのKubernetes1.7をインストールします。私のセットアップでは、最小限のインストールで3台のCentOS7サーバーを使用しています。 1台のサーバーがマスターノードとして機能し、残りの2台のサーバーはミニオンノードまたはワーカーノードになります。
マスターノードに次のコンポーネントがインストールされます
- APIサーバー –http経由でJason/Yamlを使用してkubernetesAPIを提供し、APIオブジェクトの状態はetcdに保存されます
- スケジューラー –これは、リソースの可用性に基づいてワーカーノードでコンテナーを起動するなどのスケジューリングタスクを実行するマスターノード上のプログラムです。
- コントローラーマネージャー –コントローラーマネージャーの主な仕事は、レプリケーションコントローラーを監視し、目的の状態を維持するためのポッドを作成することです。
- etcd –これはキーと値のペアのデータベースです。クラスターとクラスター状態の構成データを保存します。
- Kubectlユーティリティ –ポート6443でAPIサーバーに接続するコマンドラインユーティリティです。管理者がポッドやサービスなどを作成するために使用します。
ワーカーノードには、次のコンポーネントがインストールされます
- Kubelet –これは、すべてのワーカーノードで実行されるエージェントであり、Dockerに接続し、コンテナーの作成、開始、削除を処理します。
- Kube-Proxy –着信要求のIPアドレスとポート番号に基づいて、トラフィックを適切なコンテナーにルーティングします。つまり、ポート変換に使用されていると言えます。
- ポッド –ポッドは、単一のワーカーノードまたはDockerホストにデプロイされる多層またはコンテナーのグループとして定義できます。
CentOS 7 /RHEL7へのKubernetes1.7のインストール手順
マスターノードで次の手順を実行します
ステップ1:SELinuxを無効にしてファイアウォールルールを設定する
kubernetesマスターノードにログインし、次のコマンドを使用してホスト名を設定し、selinuxを無効にします
〜]#hostnamectl set-hostname'k8s-master'〜]#exec bash〜]#setenforce 0〜]#sed -i --follow-symlinks's / SELINUX =enforcing / SELINUX =disable / g'/ etc / sysconfig / selinux
次のファイアウォールルールを設定します。
[[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保護された]〜]#firewall-cmd --permanent --add-port =10252 / tcp [[email protected]〜]#firewall-cmd --permanent --add-port =10255 / tcp [[email protected]〜] #firewall-cmd --reload [[email protected]〜]#modprobe br_netfilter [[email protected]〜]#echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables
注: 独自のdnsサーバーがない場合は、マスターノードとワーカーノードの/ etc/hostsファイルを更新します
192.168.1.30 k8s-master192.168.1.40 worker-node1192.168.1.50 worker-node2
「swapoff-a」を使用して、すべてのノードでスワップを無効にします 」コマンドを実行し、fstabファイルからスワップパーティションまたはスワップファイルを削除またはコメントアウトします
ステップ2:Kubernetesリポジトリを設定する
KubernetesパッケージはデフォルトのCentOS7およびRHEL7リポジトリでは使用できません。以下のコマンドを使用してパッケージリポジトリを設定してください。
[[email protected]〜]#cat </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 [[email protected]〜]#
ステップ3:KubeadmとDockerをインストールする
パッケージリポジトリを構成したら、以下のコマンドを実行してkubeadmおよびdockerパッケージをインストールします。
[[email protected]〜]#yum install kubeadm docker -y
kubectlとdockerサービスを開始して有効にします
[[email protected]〜]#systemctl restart docker &&systemctl enable docker [[email protected]〜]#systemctl restart kubelet &&systemctl enable kubelet
ステップ4:「kubeadminit」を使用してKubernetesマスターを初期化する
以下のコマンドを実行して、kubernetesマスターを初期化してセットアップします。
[[メール保護]〜]#kubeadm init
上記のコマンドの出力は次のようになります
出力からわかるように、kubernetesマスターは正常に初期化されています。以下のコマンドを実行して、クラスターをrootユーザーとして使用します。
[[email protected]〜]#mkdir -p $ HOME / .kube [[email protected]〜]#cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config [[email protected] 〜]#chown $(id -u):$(id -g)$ HOME / .kube / config
ステップ5:ポッドネットワークをクラスターにデプロイする
以下のコマンドを実行して、クラスターとポッドのステータスを取得してみてください。
クラスタステータスを準備完了にしてkube-dnsステータスを実行するには、ポッドネットワークを展開して、異なるホストのコンテナが相互に通信するようにします。 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-net "createdclusterrole" weave-net "createdclusterrolebinding" weave-net "createddaemonset" weave-net "created [[email protected]〜]#
次に、次のコマンドを実行してステータスを確認します
<前> [[Eメール保護]〜]#kubectl GET nodesNAME STATUSのAGE VERSIONk8sマスターレディ1H v1.7.5 [[Eメール保護]〜]#kubectl GETポッド--all-namespacesNAMESPACE NAME READYステータスが再起動AGEkube-システムは-K8Sをetcd 1/1 0 57mkube系KUBE-DNS-2425271678-044ww 3を実行0 57mkube系KUBEコントローラマネージャ-K8Sマスター1/1を実行0 57mkube系KUBE-apiserver-K8Sマスター1/1実行-master / 3実行0 0 1hkube-システムKUBE-スケジューラ-K8S-マスター1/1 0 57mkube-システムは2/2が0 7メートルを実行織りネット-hdjzd実行を実行KUBE-プロキシ-9h259 1/1 [[電子メールが保護さ1hkubeシステム]〜]#それでは、ワーカーノードをKubernetesマスターノードに追加しましょう。
各ワーカーノードで次の手順を実行します
ステップ1:SELinuxを無効にし、両方のノードでファイアウォールルールを構成します
SELinuxを無効にする前に、両方のノードのホスト名をそれぞれ「worker-node1」と「worker-node2」に設定します
〜]#setenforce 0〜]#sed -i --follow-symlinks's / SELINUX =enforcing / SELINUX =disable / g'/ etc / sysconfig / selinux〜]#firewall-cmd --permanent --add -port =10250 / tcp〜]#firewall-cmd --permanent --add-port =10255 / tcp〜]#firewall-cmd --permanent --add-port =30000-32767 / tcp〜]#firewall-cmd --permanent --add-port =6783 / tcp〜]#firewall-cmd --reload〜]#echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables
ステップ2:両方のワーカーノードでKubernetesリポジトリを設定する
〜]#cat </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パッケージをインストールします
[[email protected]〜]#yum install kubeadm docker -y [[email protected]〜]#yum install kubeadm docker -y
Dockerサービスを開始して有効にする
[[email protected]〜]#systemctl restart docker &&systemctl enable docker [[email protected]〜]#systemctl restart docker &&systemctl enable docker
ステップ4:ワーカーノードをマスターノードに参加させる
ワーカーノードをマスターノードに参加させるには、トークンが必要です。 kubernetesマスターが初期化されるたびに、出力でコマンドとトークンを取得します。そのコマンドをコピーして、両方のノードで実行します。
[[email protected]〜]#kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443
上記のコマンドの出力は次のようになります
[[email protected]〜]#kubeadm join --token a3bd48.1bc42347c3b35851 192.168.1.30:6443
出力は次のようになります
次に、kubectlコマンドを使用してマスターノードからノードのステータスを確認します
[[email protected]〜]#kubectlgetnodesNAME年齢バージョンk8s-master準備完了2hv1.7.5worker-node1準備完了20m pre>ご覧のとおり、マスターノードとワーカーノードは準備完了状態です。これで、kubernetes 1.7が正常にインストールされ、2つのワーカーノードに正常に参加したと結論付けられます。これで、ポッドとサービスを作成できます。
この記事がkubernetes1.7の最新バージョンのインストールに役立つ場合に備えて、フィードバックとコメントを共有してください
CentOS 7のKubernetesにポッド、レプリケーションコントローラー、サービスをデプロイする CentOS 7 / RHEL 7 /Fedora26にVirtualBox5.1をインストールする方法Cent OS