※このブログではサーバー運用、技術の検証等の費用のため広告をいれています。
記事が見づらいなどの問題がありましたらContactからお知らせください。

<前のページ
【Ubuntu18.04】KVMでMinikubeのKubernetes環境を構築
次のページ>
【解説】kubectlコマンドでyamlファイルからKubernetesオブジェクトを作成

kubectlでKubernetesを操作して簡単なサーバーを起動してみよう

kubernetes Minikube kubectl k8s マイクロサーイビス サーバー開発

投稿日:2020年10月3日

このエントリーをはてなブックマークに追加
kubectlはKubernetesのクラスタを操作することのできるコマンドラインツールです。この記事ではKubernetes初心者向けにkubectlで簡単なサーバーを起動する方法を解説します。

はじめに

この記事について

この記事ではkubectlを実際に使ってKubernetesのクラスタを操作してざっくり流れを理解することを目的としています。Kubernetesのそれぞれの単語、Deployment、Service、Podなどの単語については解説はしていません。
この記事でKubernetesの全体の流れを掴んでから解説を見に行くことをオススメします。

前提条件

この記事ではMinikubeとkubectlがすでに環境にインストールされていることを前提としています。まだインストールできていない方は前の記事、または公式サイトを参考にインストールしてから記事を読み始めることをオススメします。


kubectlで簡単なサーバー環境を作成

まずはMinikubeを実行してクラスターを実行します。

自分の場合driverがkvm2なのでkvm-qemu-uriオプションをつけていますが、virtualboxやdockerを使用する場合このオプションは必要ありません。

ターミナル
$ minikube start --driver=kvm2 --kvm-qemu-uri qemu:///system

Minikubeはminikube startコマンドでクラスタの起動をすることができます。このコマンドはVirtualMachineの作成と初期設定をし、そこで単一ノードのKubernetesクラスタを実行してくれます。

このコマンドは追加でkubectlのインストールと設定もしてくれます。

ではkubectl使ってクラスタをいじってみましょう。
まずはechoserverというDockerイメージのDeploymentを作成します。
ちなみにここで使用するechoserverはポート8080番でサンプルのHTTPサーバーを起動するイメージです。
deploymentの作成はkubectl create deploymentというコマンドを使います。

ターミナル
$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
deployment.apps/hello-minikube created

k8s.gcr.io/echoserver:latestというImageを使うDeploymenthello-minikubeという名前で作成しました。

作成したDeploymentの情報はkubectl get deploymentコマンドやkubectl describe deploymentコマンドで見ることができます。

ターミナル
$ kubectl get deployment hello-minikube
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
hello-minikube   1/1     1            1           65s
$ kubectl describe deployment hello-minikube
Name:                   hello-minikube
Namespace:              default
CreationTimestamp:      Fri, 02 Oct 2020 23:14:32 +0900
Labels:                 app=hello-minikube
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=hello-minikube
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=hello-minikube
  Containers:
   echoserver:
    Image:        k8s.gcr.io/echoserver:1.10
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   hello-minikube-5d9b964bfb (1/1 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  78s   deployment-controller  Scaled up replica set hello-minikube-5d9b964bfb to 1

作成したDeploymentServiceとして公開してみましょう。
Deploymentの公開はkubectl expose deploymentコマンドを使います。

ターミナル
$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed

ここで渡しているオプションの--type=NodePortServiceのタイプの指定です。
Serviceが公開されたことでPodも起動しています。
現在起動しているPodを確認するにはkubectl get podコマンドを使用します。

ターミナル
$ kubectl get pod
NAME                              READY   STATUS    RESTARTS   AGE
hello-minikube-5d9b964bfb-77zwg   1/1     Running   0          2m31s

STATUSの値はRunningになっています。ContainerCreatingだった場合にはPodは起動中なので少し待ちましょう。

Podの起動が確認できたら動作を確認してみましょう。Serviceが公開されているローカルのURLはminikube serviceコマンドに--urlオプションをつけることで確認できます。

ターミナル
$ minikube service hello-minikube --url
http://192.168.39.47:32317

ブラウザでURLを開くと、HTTPリクエストの内容と起動しているPodの内容を表示してくれます。

最後に環境をキレイにしておきます。

  • Serviceの削除
  • Deploymentの削除
ターミナル
$ kubectl delete services hello-minikube
service "hello-minikube" deleted
$ kubectl delete deployment hello-minikube
deployment.apps "hello-minikube" deleted
このエントリーをはてなブックマークに追加

<前のページ
【Ubuntu18.04】KVMでMinikubeのKubernetes環境を構築
次のページ>
【解説】kubectlコマンドでyamlファイルからKubernetesオブジェクトを作成

関連記事

記事へのコメント