Docker DesktopでKubernetes入門

2019年4月11日

Kubernetes(クーバネティス)はコンテナの運用を自動化するためのオーケストレーションツールです。

 

下記関連ページでは、1つのホスト上でコンテナを起動させていますが、複数のホストにおいてコンテナを運用していく際に利用するのがKubernetesです。

 

Docker入門 [Hello World] コマンドの基本

 

 

 

Kubernetesを利用する環境は、大まかに以下3つに分けられます。

 

・GCPやAWS、Azureなどのマネージドサービス
・Rancher、Kubesprayなどを利用したオンプレミスによる構築
・MinikubeやDocker Desktop(Docker for Mac/Win)などのローカル環境

 

本記事ではDocker Desktopを利用してKubernetesを立ち上げます。その前にKubernetesの構成を大まかに説明してみます。

 

Kubernetesは、Dockerコンテナを実行するノード(Node)によって構成されます。ノードを管理するのがマスターノードであり、これらノード群をKubernetesクラスタと呼びます。

 

 

 

 

DockerホストとしてのノードにはPodが配置されます。Podは1つ以上のコンテナから構成され、このPod単位でアプリケーションとしてのコンテナが実行されます。各Podには一意の仮想NIC(プライベートIP)が割り当てられ、同じPod内のコンテナ同士はlocalhostで通信できます。

 

 

 

Docker DesktopでKubernetesを立ち上げる


開発環境

Docker Desktop
Version 2.0.0.3 (31259)
Kubernetes: v1.10.11

 

Docker DesktopのPreferenceを開き、「Enable Kubernetes」にチェックを入れたら「Apply」ボタンをクリックします。しばらくすると、下記のように「Kubernetes is running」と表示されます。

 

以上でKubernetesクラスタが構築されています。ターミナルでノードの情報を確認してみます。KubernetesのCLIツールであるkubectlコマンドを利用します。

docker-for-desktopという名前のマスターノードが作成されているのが確認できました。本記事ではこの1つのノード(シングルノード)において、Podを起動します。

 

 

Podの起動


 

Podを起動させてみます。今回は単純に1つのコンテナであるNginxが起動するPodを作成します。

testnginxという名前を指定しています。正確にはkubectl runの実行によってtestnginxという名前のDeployment(後述)が作成されます。–imageオプションにはダウンロードする公式のnginxイメージを指定しています。※通常ではマニフェストファイル(docker-compose.ymlのようなYAMLファイル)によってPod作成をおこないます。関連ページをご覧下さい。

 

関連ページ

Kubernetesのマニフェスト(Manifest)ファイルでNginxを起動

 

kubectl runの実行によって作成されたDeployment(デプロイメント)の確認です。

DeploymentはReplicaSet(レプリカセット)を作成し管理します。そしてこのReplicaSetPodによってPodは複数作成され管理されます。Deployment>ReplicaSet>Pods のような関係を持ち、Deploymentがアプリケーションのデプロイにおいて基本単位となるリソースです。NAMEにtestnginxが表示されていることが確認できますが、後にPodを削除する場合などにこの名前を利用します。

 

Podの一覧を表示させます。podsは略してpoだけでも機能します。

Deployment名であるtestnginxがプレフィックスとして付加され、testnginx-d9695875f-4df2qという名前のPodが確認できました。

 

 

Serviceの作成


 

ブラウザで起動しているNginxを確認するには、Podに対してクラスタ外部からアクセスするためのService(サービス)を作成する必要があります。kubectl exposeを利用してServiceを作成します。

deploymentにtestnginxを指定しています。–typeオプションにはNodePortを指定していますが、これはクラスタ外からアクセスするためのServiceです。他にもClusterIPLoadBalancerなどのServiceがあります。

 

Serviceの一覧を表示させます。

testnginxのServiceを確認できました。TYPEが作成時に指定したNodePortになっています。PORT(S)を見ると、30055ポートからアクセスできるようになっています。

 

以上で http://localhost:30055/ にて「Welcome to nginx!」の画面を確認できます。

 

 

 

PodとServiceの削除


 

作成した「testnginx」の削除をおこないます。

 

作成した「testnginx」のServiceの削除をおこないます。

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー