Kubernetesは、コンテナオーケストレーションの主要なソフトウェアです。 Kubernetesは、コンテナ化されたアプリケーションを実行するためのホストのセットであるクラスタを管理することで機能します。 Kubernetesクラスタを作成するには、少なくとも2つのノード(マスターノード)が必要です。 およびワーカーノード 。もちろん、必要な数のワーカーノードを追加することでクラスターを拡張できます。
このガイドでは、2つのノードで構成されるKubernetesクラスターをデプロイします。どちらもUbuntu 20.04FocalFossaを実行しています。クラスタに2つのノードを含めることは、可能な限り最も基本的な構成ですが、必要に応じて、その構成を拡張し、ノードを追加することができます。
このチュートリアルでは、次のことを学びます。
- Dockerのインストール方法
- Kubernetesのインストール方法
- マスターノードとワーカーノードを構成する方法
- ワーカーノードをKubernetesクラスターに参加させる方法
- KubernetesクラスターにNginx(またはコンテナー化されたアプリ)をデプロイする方法
Ubuntu 20.04FocalFossaへのKubernetesのデプロイ
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
Ubuntu20.04をインストールまたはUbuntu20.04FocalFossaをアップグレード | |
Kubernetes | |
rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
シナリオ
飛び込む前に、シナリオの詳細を確立しましょう。上記のように、クラスターには2つのノードがあり、両方のノードでUbuntu 20.04FocalFossaが実行されています。 1つはマスターノードになります ホスト名はkubernetes-master
で簡単に識別できます 。 2番目のノードはワーカーノードになります ホスト名はkubernetes-worker
です。 。
マスターノードはKubernetesクラスターをデプロイし、ワーカーノードは単にクラスターに参加します。 Kubernetesクラスターはコンテナー化されたソフトウェアを実行するように設計されているため、クラスターを起動して実行した後、概念実証としてNginxサーバーコンテナーをデプロイします。
Dockerをインストールする
KubernetesはDockerに依存しているため、両方のノードにDockerをインストールする必要があります。ターミナルを開き、マスターノードとワーカーノードの両方で次のコマンドを入力して、Dockerをインストールします。
$ sudo apt update $ sudo apt install docker.io
Dockerのインストールが完了したら、次のコマンドを使用してサービスを開始し、再起動するたびにサービスが自動的に開始されるようにします。
$ sudo systemctl start docker $ sudo systemctl enable docker
Kubernetesをインストールする
これで、Kubernetesをインストールする準備が整いました。これまでの他のすべてのコマンドと同様に、両方のノードでこれを実行していることを確認してください。 Kubernetesマスターとワーカーに、最初にapt-transport-https
をインストールします パッケージ。これにより、Ubuntuのリポジトリでhttpとhttpsを使用できるようになります。 curl
をインストールする良い機会でもあります すぐに必要になるので:
$ sudo apt install apt-transport-https curl
次に、Kubernetes署名キーを両方のシステムに追加します。
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
次に、Kubernetesパッケージリポジトリを追加します。この記事の執筆時点では、Ubuntu 16.04XenialXerusが利用可能な最新のKubernetesリポジトリであることに注意してください。これは最終的にUbuntu20.04Focal Fossaに取って代わられるはずであり、次のコマンドはxenial
から更新できます。 focal
。
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
これで、Kubernetesをインストールできます:
$ sudo apt install kubeadm kubelet kubectl kubernetes-cni
スワップメモリを無効にする
システムがスワップメモリを使用している場合、Kubernetesは機能を拒否します。先に進む前に、次のコマンドでマスターノードとワーカーノードのスワップメモリが無効になっていることを確認してください。
$ sudo swapoff -a
このコマンドは、システムが再起動するまでスワップメモリを無効にするため、この変更を継続するには、nanoまたはお気に入りのテキストエディタを使用してこのファイルを開きます。
$ sudo nano / etc / fstab
このファイル内で、/swapfile
をコメントアウトします #
を前に付けて行 以下に示すように、記号。次に、このファイルを閉じて変更を保存します。
ホスト名を設定
次に、すべてのノードに一意のホスト名があることを確認します。このシナリオでは、ホスト名kubernetes-master
を使用しています およびkubernetes-worker
ホストを簡単に区別し、その役割を特定します。ホスト名を変更する必要がある場合は、次のコマンドを使用します。
$ sudo hostnamectl set-hostname kubernetes-master
そしてワーカーノード:
$ sudo hostnamectl set-hostname kubernetes-worker
新しいホスト名を開くまで、ターミナルでホスト名が変更されたことに気付くことはありません。最後に、すべてのノードに正確な日時があることを確認してください。そうしないと、無効なTLS証明書で問題が発生します。
Kubernetesマスターサーバーを初期化する
これで、Kubernetesマスターノードを初期化する準備が整いました。これを行うには、マスターノードで次のコマンドを入力します。
kubernetes-master:〜$ sudo kubeadm initUbuntu20.04マスターノード上のKubernetesが初期化されました
これで、Kubernetesマスターノードが初期化されました。出力は、kubeadm join
を提供します。 後でワーカーノードをマスターノードに結合するために使用する必要があるコマンド。したがって、後で使用するためにこのコマンドに注意してください。
上記の出力は、Kubernetesクラスターの使用を開始するために通常のユーザーとしていくつかのコマンドを実行することもアドバイスしています。マスターノードで次の3つのコマンドを実行します。
kubernetes-master:〜$ mkdir -p $ HOME / .kubekubernetes-master:〜$ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / configkubernetes-master:〜$ sudo chown $( id -u):$(id -g)$ HOME / .kube / config
ポッドネットワークを導入する
次のステップは、ポッドネットワークを展開することです。ポッドネットワークはホスト間の通信に使用され、Kubernetesクラスターが正しく機能するために必要です。このために、フランネルポッドネットワークを使用します。マスターノードで次の2つのコマンドを発行します。
kubernetes-master:〜$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubernetes-master:~$ kubectl apply -f https:// raw .githubusercontent.com / coreos / flannel / master / Documentation / k8s-manifests / kube-flannel-rbac.yml
環境によっては、フランネルネットワーク全体が起動するまでに数秒または1分かかる場合があります。 kubectl
を使用できます すべての準備が整っていることを確認するコマンド:
kubernetes-master:〜$ kubectl get pods --all-namespacesポッドネットワークが正常に展開されました
すべての[ステータス]列に[実行中]と表示されている場合は、すべての展開が完了し、準備が整っていることを示しています。
Kubernetesクラスターに参加する
これで、クラスターでワーカーノードを参加させる準備が整いました。 kubeadm join
を使用します Kubernetesクラスターに参加するためにKubernetesマスターノード初期化出力から以前に取得したコマンド:
kubernetes-worker:〜$ sudo kubeadm join 192.168.1.220:6443 --token 1exb8s.2t4k3b5syfc3jfmo --discovery-token-ca-cert-hash sha256:72ad481cee4918cf2314738419356c9a402fb609263adad48c13797d0c ワーカーノードをKubernetesクラスターに参加させるKubernetesマスターノードに戻り、
kubernetes-worker
であることを確認します これで、次のコマンドを使用してKubernetesクラスターの一部になります:kubernetes-master:〜$kubectlgetノード現在Kubernetesクラスタにあるノードを表示しますKubernetesクラスターへのサービスのデプロイ
これで、Kubernetesクラスターにサービスをデプロイする準備が整いました。この例では、概念実証としてNginxサーバーを新しいクラスターにデプロイします。マスターノードで次の2つのコマンドを実行します。
kubernetes-master:〜$ kubectl run --image =nginx nginx-server --port =80 --env ="DOMAIN =cluster" kubernetes-master:〜$kubectl公開展開nginx-server--port =80 --name =nginx-httpこれで、ワーカーノードにデプロイされた新しいnginxdockerコンテナーが表示されます。
kubernetes-worker:〜$ sudo docker ps新しいDockerNginxコンテナがKubernetesワーカーノードで稼働していますKubernetesメーザーノードから発行された次のコマンドを使用して、クラスターで実行されているすべての利用可能なサービスの実行リストを確認できます。
kubernetes-master:〜$ kubectl get svcKubernetesクラスターで実行されているコンテナー化されたサービスを表示します結論
この記事では、Ubuntu 20.04FocalFossaにコンテナー化されたアプリケーションをデプロイするようにKubernetesをセットアップする方法を学びました。マスターとワーカーの2つのホストで構成される基本的なクラスターをセットアップしますが、必要に応じて、さらに多くのワーカーノードに拡張できます。
Dockerやその他の前提条件を構成する方法と、概念実証として新しいクラスターにNginxサーバーをデプロイする方法を確認しました。もちろん、これと同じ構成を使用して、コンテナー化されたアプリケーションをいくつでもデプロイできます。
Ubuntu