Kubernetes は無料のオープンソースコンテナオーケストレーションツールです。これは、クラスター環境でコンテナーベースのアプリケーションを自動的にデプロイするために使用されます。これとは別に、Dockerコンテナーの管理にも使用されます。 kubernetesクラスターホスト全体。 KubernetesはK8sとも呼ばれます 。
この記事では、2つのノード Kubernetesをインストールして構成する方法を示します。 (1.13) kubeadmの使用 Ubuntu 18.04/18.10システム。ラボのセットアップの詳細は次のとおりです。
3つのUbuntu18.04LTSシステムを使用します。1つのシステムがKubernetesマスターノードとして機能します。 他の2つのノードはスレーブのうなずきとして機能します eとKubernetesクラスターに参加します。これらの3つのシステムには最小限の18.04LTSがインストールされていると想定しています。
- Kubernetesマスターノード–(ホスト名:k8s-master、IP:192.168.1.70、OS:最小のUbuntu 18.04 LTS)
- Kubernetesスレーブノード1–(ホスト名:k8s-worker-node1、IP:192.168.1.80、OS:最小Ubuntu 18.04 LTS)
- Kubernetesスレーブノード2–(ホスト名:k8s-worker-node2、IP:192.168.1.90、OS:最小Ubuntu 18.04 LTS)
注: Kubernetesスレーブノードはワーカーノードとも呼ばれます
k8sのインストールと設定の手順に進みましょう。
手順:1)ホスト名を設定してhostsファイルを更新する
マスターノードにログインし、hostnamectlコマンドを使用してそのホスト名を構成します
[メール保護]:〜$ sudo hostnamectl set-hostname "k8s-master" [メール保護]:〜$ exec bash [メール保護]:〜$
スレーブ/ワーカーノードにログインし、hostnamectlコマンドを使用してそれぞれのホスト名を構成します。
[email protected]:〜$ sudo hostnamectl set-hostname k8s-worker-node1 [email protected]:〜$ exec bash [email protected]:〜$ [email protected]:〜$ sudo hostnamectl set-hostname k8s- worker-node2 [メール保護]:〜$ exec bash [メール保護]:〜$
3つのシステムすべての/etc/hostsファイルに次の行を追加します
192.168.1.70 k8s-master192.168.1.80 k8s-worker-node1192.168.1.90 k8s-worker-node2
手順:2)マスターノードとスレーブノードにDockerサービスをインストールして開始します
以下のapt-getコマンドを実行して、Dockerをマスターノードにインストールします。
[メール保護]:〜$ sudo apt-get install docker.io -y
以下のapt-getコマンドを実行して、Dockerをスレーブノードにインストールします。
[メール保護]:〜$ sudo apt-get install docker.io -y [メール保護]:〜$ sudo apt-get install docker.io -y
Dockerパッケージが3つのシステムすべてにインストールされたら、以下のsystemctlコマンドを使用してdockerサービスを開始して有効にします。これらのコマンドは、マスターノードとスレーブノードで実行する必要があります。
〜$ sudo systemctl start docker〜$ sudo systemctl enable docker / lib / systemd / systemd-sysv-install.Executing:/ lib / systemd / systemd-sysv-installenabledockerを使用したSysVサービススクリプトによるdocker.serviceの状態の同期〜$
以下のdockerコマンドを使用して、これらのシステムにインストールされているDockerのバージョンを確認します。
〜$ docker --versionDockerバージョン18.06.1-ce、ビルドe68fc7a〜$
手順:3)マスターノードとスレーブノードでKubernetesパッケージリポジトリを設定する
注: このステップのすべてのコマンドは、マスターノードとスレーブノードで実行する必要があります
まず、必要なパッケージをいくつかインストールし、マスターノードを含むすべてのノードで次のコマンドを実行します
〜$ sudo apt-get install apt-transport-https curl -y
次に、次のコマンドを使用してKubernetesパッケージリポジトリキーを追加します
:〜$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key addOK:〜$
次に、以下のaptコマンドを使用してKubernetesリポジトリを構成します。現時点では、Ubuntu 18.04(bionic weaver)Kubernetesパッケージリポジトリは利用できないため、XenialKubernetesパッケージリポジトリを使用します。
:〜$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
手順:4)すべてのノードでスワップを無効にしてKubeadmをインストールします
注: このステップのすべてのコマンドは、マスターノードとスレーブノードで実行する必要があります
Kubeadmは、kubernetesクラスターをデプロイするために使用される最も一般的な方法の1つです。つまり、kubernetesクラスターに複数のノードをデプロイするために使用されたと言えます。
Kubernetesの公式ウェブサイトによると、マスターノードを含むすべてのノードでスワップを無効にすることをお勧めします。
次のコマンドを実行して、一時的なスワップを無効にします。
:〜$ sudo swapoff -a
永続的なスワップを無効にするには、/ etc/fstabファイルのswapfileまたはswappartitionエントリをコメントアウトします。
次に、マスターを含むすべてのノードにKubeadmパッケージをインストールします。
:〜$ sudo apt-get install kubeadm -y
kubeadmパッケージが正常にインストールされたら、underコマンドを使用してkubeadmのバージョンを確認します。
:〜$ kubeadm versionkubeadm version:&version.Info {Major: "1"、Minor: "13"、GitVersion: "v1.13.2"、GitCommit: "cff46ab41ff0bb44d8584413b598ad8360ec1def"、GitTreeState: "clean"、BuildDate: "2019 -01-10T23:33:30Z "、GoVersion:" go1.11.4 "、コンパイラ:" gc "、プラットフォーム:" linux / amd64 "}:〜$
ステップ:5)Kubeadmを使用してマスターノードでKubernetesクラスターを初期化して起動する
マスターノードで以下のkubeadmコマンドを使用するのは、Kubernetesを初期化する場合のみです
[メール保護]:〜$ sudo kubeadm init --pod-network-cidr =172.168.10.0 / 24
上記のコマンドでは、同じポッドネットワークを使用することも、環境に適した独自のポッドネットワークを選択することもできます。コマンドが正常に実行されると、次のような出力が得られます。
上記の出力は、マスターノードが正常に初期化されたことを確認するため、クラスターを開始するには、以下のコマンドを次々に実行します。
[メール保護]:〜$ mkdir -p $ HOME / .kube [メール保護]:〜$ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config [メール保護]:〜 $ sudo chown $(id -u):$(id -g)$ HOME / .kube / config [メール保護]:〜$
次のコマンドを使用して、マスターノードのステータスを確認します。
[メール保護]:〜$ kubectlgetnodesNAMEステータスロール年齢VERSIONk8s-masterNotReadymaster 18m v1.13.2 [メール保護]:〜$
上記のコマンド出力からわかるように、現時点ではポッドをデプロイしていないため、マスターノードの準備ができていません。
ポッドネットワークをデプロイしましょう。ポッドネットワークは、クラスターノードが相互に通信するためのネットワークです。 フランネルを展開します ポッドネットワークとして、Flannelはオーバーレイネットワークを提供します クラスタノード間。
ステップ:6)マスターノードからポッドネットワークとしてフランネルをデプロイし、ポッドの名前空間を確認します
次のkubectlを実行します マスターノードからポッドネットワークを展開するコマンド
[メール保護]:〜$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
上記のコマンドの出力は次のようになります
clusterrole.rbac.authorization.k8s.io/flannelcreatedclusterrolebinding.rbac.authorization.k8s.io/flannelcreatedserviceaccount/flannelcreatedconfigmap/kube-flannel-cfgcreateddaemonset.extensions/kube-flannel-ds-amd64createddaemonset.extensions/ kube-flannel-ds-arm64 createddaemonset.extensions / kube-flannel-ds-arm createddaemonset.extensions / kube-flannel-ds-ppc64le createddaemonset.extensions / kube-flannel-ds-s390x created [email protected]:〜$
次に、kubectlコマンドを使用してマスターノードのステータスとポッドの名前空間を確認します。
[email protected]:〜$ sudo kubectl get nodeNAME STATUS AGE VERSIONk8s-master Ready master 78m v1.13.2 [email protected]:〜$ [email protected]:〜$ sudo kubectl get pods READY状態に再起動AGEkube系coredns-86c58d9df4-px4sj 1/1実行0 79mkube系coredns-86c58d9df4-wzdzk 1/1 1 79mkube系KUBE-apiserver-K8S実行0 79mkube系etcd-K8Sマスター1/1を実行します-master 1/1ランニング1 79mkube系KUBEコントローラマネージャ-K8Sマスター1/1 1 79mkube系KUBE-フランネル-DS-amd64-9tn8z 1/1実行0 14mkube系KUBE-プロキシcjzz2 1を実行します/1実行中179mkube-systemkube-scheduler-k8s-master1/1実行中179m[メール保護]:〜$
上記の出力からわかるように、マスターノードのステータスが「準備完了」に変更されました。 」とポッドのすべての名前空間が実行状態にあるため、これにより、マスターノードが正常な状態にあり、クラスターを形成する準備ができていることが確認されます。
ステップ:7)スレーブノードまたはワーカーノードをクラスターに追加します
注: ステップ5で、kubeadmコマンドの出力は、クラスターに参加するためにスレーブノードまたはワーカーノードで使用する必要がある完全なコマンドを取得しました
最初のスレーブノード(k8s-worker-node1)にログインし、次のコマンドを実行してクラスターに参加します。
[メール保護]:〜$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f上記のコマンドの出力は次のようになります
同様に、2番目のワーカーノードで同じkubeadmjoinコマンドを実行します
[メール保護]:〜$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e3f上記の出力は以下のようになります
次に、マスターノードに移動し、以下のコマンドを実行して、マスターノードとスレーブノードのステータスを確認します
[メールで保護]:〜$ kubectl get nodeNAME STATUS AGE VERSIONk8s-master Ready master 100m v1.13.2k8s-worker-node1 Ready 4 13.2 [メール保護]:〜$上記のコマンドは、クラスターに2つのワーカーノードが正常に追加され、その状態がReadyであることを確認します。これで、Ubuntu18.04システムに2つのノードのKubernetesクラスターが正常にインストールおよび構成されたと結論付けられます。
続きを読む: Kubernetesでのポッド、レプリケーションコントローラー、サービスのデプロイ
Ubuntu