RancherでKubernetesクラスタを作る
Kubernetesクラスタの作成
今回は、Rancherを用いたKubernetesクラスタの構築について解説していきます。
1. Node用のLinuxホストの準備
表1に示したスペックで、Google Compute Engine(GCE)のインスタンスを準備します。
項目 | 入力概要 |
---|---|
名前 | rancher-host |
リージョン | asia-northeast1(東京) |
ゾーン | asia-northeast1-b |
マシンタイプ | vCPUx1 |
ブートディスク | Ubuntu 16.04 LTS ディスクサイズ20GB |
ファイアウォール | 「HTTPトラフィックを許可する」「HTTPSトラフィックを許可する」の両方にチェック |
2. Dockerのインストール
準備したNode用のLinuxホストにSSHクライアントからログインして、Dockerをインストールします。※Dockerのバージョンについては、前回の記事内「1. Rancherインストール」の表2を参照してください。
$ curl https://releases.rancher.com/install-docker/18.09.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 15225 100 15225 0 0 21881 0 --:--:-- --:--:-- --:--:-- 21875 + sudo -E sh -c apt-get update ・ ・ ・途中省略 ・ ・ Git commit: 6247962 Built: Sun Feb 10 04:13:50 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.2 API version: 1.39 (minimum version 1.12) Go version: go1.10.6 Git commit: 6247962 Built: Sun Feb 10 03:42:13 2019 OS/Arch: linux/amd64 Experimental: false If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker iyutaka2018 Remember that you will have to log out and back in for this to take effect! WARNING: Adding a user to the "docker" group will grant the ability to run containers which can be used to obtain root privileges on the docker host. Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface for more information.
3. プロビジョニング
「Clusters」画面で、「Add Cluster」ボタンをクリックします(図1)。
「From my own existing nodes」の「CUSTOM」を選択、「Cluster Name」に任意の名前を入力(ここではrancher-kubernetes-clusterとします)し、「Next」ボタンをクリックします(図2)。
「Add Cluster:rancher-kubernetes-cluster」画面で、「Show advanced options」をクリックします(図3)。
「Node Role」の「etcd」と「Control Plane」にチェックを入れて、「Public Address」にインスタンスの外部IP、「Internal Address」にインスタンスの内部IPを入力します。生成されたDockerコマンドの右にある「Copy to Clipboard」ボタンをクリックします(図4)。
4. Kubernetesクラスタの作成
先ほどコピーしたDockerコマンドを、rancher-hostのインスタンスで実行します。
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.5 --server https://xx.xx.xx.xxx --token w84smxlhvq8bpwrc7lgx8sj8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --ca-checksum b0049d24d19eb867773de9bb3c2f0c6207b363f32d99e2d208255bc700cb1e91 --address 34.85.95.91 --internal-address 10.xxx.xx.xx --etcd --controlplane --worker Unable to find image 'rancher/rancher-agent:v2.1.5' locally v2.1.5: Pulling from rancher/rancher-agent 84ed7d2f608f: Pull complete be2bf1c4a48d: Pull complete a5bdc6303093: Pull complete e9055237d68d: Pull complete ecda3d2d744e: Pull complete c2a506194467: Pull complete 224a48e7f77b: Pull complete 7a6deb26f059: Pull complete 03ee61b2892f: Pull complete Digest: sha256:ab1f06bcdd6d41f201cfd423d44c0047525d7547e76635e57afb096322392757 Status: Downloaded newer image for rancher/rancher-agent:v2.1.5 96f7637a8abb4224d08771815c33187f1a7348d5885380629278102ca7f9c34a
Dockerコマンド実行後、下部に「1 new node has registered」と表示されますので、確認後「Done」ボタンをクリックします(図5)。
しばらくすると「state」がProvisioningからActiveに変わり、Kubernetesクラスタの構築が完了します(図6)。
ここでクラスタ名をクリックすると、対象クラスタのリソースを確認できます(図7)。
ここで表示されるリソースは、クラスタ全体のリソースとなります(図8)。
※今回は1ノードですが、複数ノードの場合はその全体のリソースが表示されます。
以上でKubernetesクラスタの作成は完了となります。
アプリケーションデプロイ(Catalog機能)
Kubernetesクラスタが作成できたので、次はRancherのCatalog機能を利用してアプリケーションのデプロイを行ってみます。
1. Catalog機能の有効化
まず上部メニュー「rancher-kubernetes-cluster」から「Global」を選択します(図9)。
すると「Clusters」画面が表示されますので、さらに上部メニューの「Catalogs」を選択します(図10)。
「Helm Stable」をDisableからEnabledに変更します(図11)。これでCatalog機能が有効化されました。
2. Catalogからアプリケーションデプロイ
ここでは、デフォルトで用意されているWeave Scopeというアプリケーションのデプロイを例に、Rancherのカタログ機能を実践してみます。今回デプロイしてみるWeave Scopeは、Kubernetesクラスタ上のPod配置を可視化するツールです。
上部メニューから「Global」-「Default」を選択します(図12)。
上部メニューから「Catalog Apps」を選択します(図13)。
下部の「Launch」ボタンをクリックします(図14)。
検索フィールドに「weave-scope」と入力します(図15)。
検索の結果が何も表示されない場合は、「Refresh」ボタンをクリックしてください。それでも表示されない場合は少し時間を置いてから再度実行してください。環境によっては、Helmリポジトリの読み込みに時間を要することがあります。weave-scopeのアイコンが表示されたら、「View Details」ボタンをクリックします(図16)。
画面下部の「Launch」ボタンをクリックします(図17)。
2個のPodがデプロイされていることを確認します(図18)。
現状では、Kubernetesクラスタの内部通信のみとなるので、ブラウザを起動して外部通信できるようにIngressの設定を行います。
Ingress機能
1. Ingress作成
KubernetesクラスタにIngressを作成する場合、YAML形式のマニフェストファイルを用います。RancherではUIからIngressを作成することができます。
上部メニューから「Workloads」、「Load Balancing」を選択して、「Add Ingress」ボタンをクリックします(図19)。
「Name」に任意名を入力(ここではweavescopeとします)し、「Namespace」では「weave-scope」を選択します。「Rules」で「Automatically generate a .xip.io hostname」にチェックが入っていることを確認します。「Target」で「weave-scope-frontend-weave-scope」を選択して、「Port」で「4040」を入力します。そして最後に「Save」ボタンをクリックします(図20)。
Rulesで選択できる各項目は、以下のような意味を持ちます。
Automatically generate a xip.io hostname
この設定を選択すると、xip.ioという外部のワイルドカードDNSサービスを利用して、「Name.Namespace.インスタンス外部IP.xio.io」という形式で、外部IPを名前解決できるようになります。
Specify a hostname to use
この設定を選択すると、Ingressによって入力したドメインからプルダウンメニューで指定したServiceやWorkloadにルーティングされるようになります。
Use as the default backend
この設定は、他のどの入力ルールとも一致しない要求を処理するルールを設定します。たとえば、見つからないリクエストを404ページにルーティングすることができます。
「Save」ボタンをクリック後しばらくすると、ワイルドカードDNSサービスを利用したURLが生成されます(図21)。そのURLをクリックするとWeave Scopeの画面(図22)が表示されます。
連載の第二回は、ノード追加後にRancherUIからKubernetesクラスタ構築、カタログ機能からWave Scopeのデプロイ、Ingressの追加という流れを紹介しました。次回は、WordPressをベースにRancherのカタログ機能についての詳細と、RancherUIからkubectlコマンドを実行してアプリケーションをデプロイする流れを紹介します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- グラフィック編集ソフトウェア「GIMP 2.10.22」リリース
- グラフィック編集ソフトウェア「GIMP 2.10.22」リリース
- グラフィック編集ソフトウェア「GIMP 2.10.24」リリース
- GNUグラフィック編集ソフトGIMPの開発版となる「GIMP 2.99.18」リリース、「GIMP 3」に向けた最終版
- グラフィック編集ソフトウェア「GIMP 2.10.28」リリース
- グラフィック編集ソフトウェア「GIMP 2.10.28」リリース
- GNUグラフィック編集ソフト「GIMP 2.10.10」リリース
- GNUグラフィック編集ソフト「GIMP 2.9.4」リリース
- GNUグラフィック編集ソフト「GIMP 2.8.22」リリース
- GNUグラフィック編集ソフト「GIMP 2.10.0」リリース