【簡単】自作したDockerイメージをKubernetesで起動する手順

 

★悩み★
・Kubernetesに自作したDockerイメージをデプロイできるのかな。
・自作したDockerイメージをKubernetesで起動する手順を知りたい。
・自作したDockerイメージをKubernetesで停止する手順を知りたい。



こういった「悩み」に答えます。
 

★本記事の内容★
① 自作したDockerイメージをKubernetesで起動するための準備をご紹介
② 自作したDockerイメージをKubernetesで起動する手順をご紹介
③ 自作したDockerイメージをKubernetesで停止する手順をご紹介



これからご紹介する「自作したDockerイメージをKubernetesで起動する手順」を実践したことで、2時間以内で「自作したDokcerのコンテナイメージをKubernetes上で起動」できました。

記事の前半では「自作したDockerのコンテナイメージをKubernetesで起動するための準備」を解説しつつ、記事の後半では「自作したDockerイメージをKubernetes上で起動停止する手順」を紹介します。

この記事を読み終えることで、「Kubernetes上で自作したDockerのコンテナイメージをデプロイできる」状態になります。
 

★Kubernetesとは★
Kubernetesを利用することで、マイクロサービスなシステムを構築できます。Kubernetesを利用したマイクロサービスに関して知りたい方は、以下の記事をご覧ください。
 
Kubernetesとマイクロサービスについて



ちなみに、「Kubernetesを体系的に学習したい」方には、以下の記事がお勧めです。
 


 

 


 

【PR】この記事には広告を含む場合があります

自作したDockerイメージをKubernetesで起動するための準備


「自作したDockerイメージをKubernetesで起動するための準備」に関してご紹介します。

★自作したDockerイメージをKubernetesで起動するための準備の流れ★
手順1:Kubernetesクラスタを構築
手順2:構築したKubernetesクラスタの状態確認
手順3:DockerHubのアカウント(ID)を作成



上記の流れで、「自作したDockerイメージをKubernetesで起動するための準備」ができます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年5月31日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「自作したDockerイメージをKubernetesで起動するための準備の流れ」の各手順に関してご説明します。
 

手順1:Kubernetesクラスタを構築【自作イメージの動作環境用】

「手順1:Kubernetesクラスタを構築」に関してご説明します。
 

自作したDockerのコンテナイメージをKubernetesで起動するために、Kubernetesクラスタを構築しましょう。



「Kubernetesクラスタの構築手順」に関しては、以下の記事をご覧ください。
 



上記手順を実施することで、以下のKubernetesクラスタを構築できます。
 



以降の手順では、上図のKubernetesクラスタを想定としてご説明します。
  

既にKubernetesクラスタを構築済みである場合、本手順を省略してください。



以上で、「手順1:Kubernetesクラスタを構築」は完了です。
 

手順2:構築したKubernetesクラスタの状態確認

「手順2:構築したKubernetesクラスタの状態確認」に関してご説明します。
 

構築したKubernetesクラスタに「自作したDockerのコンテナイメージ」が起動できる状態になっているかを確認しましょう。



以下のコマンドをマスターで実行し、ワーカーノードが存在することを確認してください。

# kubectl get nodes
NAME    STATUS   ROLES                  AGE     VERSION
node1   Ready    control-plane,master   3m47s   v1.20.5
node2   Ready    <none>                 2m55s   v1.20.5
node3   Ready    <none>                 2m55s   v1.20.5



コマンド実行結果において、上記のように「worker」が存在しない場合、ワーカーノードを割り当てるために、以下のコマンドをマスターで実行しましょう。

# kubectl label node node2 node-role.kubernetes.io/worker=worker
# kubectl label node node3 node-role.kubernetes.io/worker=worker



ワーカーノードが割り当たったことを確認するために、以下のコマンドをマスターで実行してください。

# kubectl get nodes
NAME    STATUS   ROLES                  AGE     VERSION
node1   Ready    control-plane,master   3m47s   v1.20.5
node2   Ready    worker                 2m55s   v1.20.5
node3   Ready    worker                 2m55s   v1.20.5



コマンド実行結果において、上記のように「worker」が出力された場合、「無事にワーカーノードを割り当てられた」と判断できます。

以上で、「手順2:構築したKubernetesクラスタの状態確認」は完了です。
 

手順3:DockerHubのアカウント(ID)を作成

「手順3:DockerHubのアカウント(ID)を作成」に関してご説明します。
 

自作したDockerイメージをKubernetesで起動するために、DockerHubのアカウント(ID)を作成しましょう。



「DockerHubのアカウント(ID)作成手順」に関しては、以下の記事をご覧ください。
 


 

既にDockerHubのアカウント(ID)を持っている場合、本手順を省略してください。



以上で、「手順3:DockerHubのアカウント(ID)を作成」は完了です。
 

上記の流れで、自作したDockerのコンテナイメージをKubernetesで起動するための準備ができました。

 
 

自作したDockerイメージをKubernetesで起動する手順


「自作したDockerイメージをKubernetesで起動する手順」に関してご紹介します。

★自作したDockerイメージをKubernetesで起動するまでの流れ★
手順1:Dockerのコンテナイメージを自作
手順2:自作したDockerのコンテナイメージをDockerHubへ公開
手順3:自作したDockerイメージを起動するPod定義ファイルを作成
手順4:自作したDockerイメージをKubernetes上で起動
手順5:Kubernetes上で起動したDockerイメージの動作確認



上記の流れで、「自作したDockerイメージをKubernetesで起動」できます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年5月31日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)



以降で、上記「自作したDockerイメージをKubernetesで起動するまでの流れ」の各手順に関してご説明します。
 

手順1:Dockerのコンテナイメージを自作

「手順1:Dockerのコンテナイメージを自作」に関してご説明します。
 

Kubernetes上で起動させたいDockerのコンテナイメージを自作しましょう。



「Dockerのコンテナイメージを自作する手順」に関しては、以下の記事をご覧ください。
 



以上で、「手順1:Dockerのコンテナイメージを自作」は完了です。
 

手順2:自作したDockerのコンテナイメージをDockerHubへ公開

「手順2:自作したDockerのコンテナイメージをDockerHubへ公開」に関してご説明します。
 

自作したDockerのコンテナイメージをKubernetes上で起動するためには、DockerHubへ公開(アップロード)する必要があります。



「手順2:自作したDockerのコンテナイメージをDockerHubへ公開」に関しては、以下の記事をご覧ください。
 



以上で、「手順2:自作したDockerのコンテナイメージをDockerHubへ公開」は完了です。
 

手順3:自作したDockerイメージを起動するPod定義ファイルを作成

「手順3:自作したDockerイメージを起動するPod定義ファイルを作成」に関してご説明します。
 

「自作したDockerイメージをKubernetes上で起動する」ためには、Pod定義ファイルの作成が必要です。



Kubernetes上で「自作したDockerのコンテナイメージ」を起動するために、以下の定義ファイルを作成してください。定義ファイル内の「適宜変更」と書いてある部分は、自分用に書き換えてください。

apiVersion: v1
kind: Pod
metadata:
  name: fastapi-pod
spec:
  containers:
    - name: fastapi-pod
      image: docker.io/herokakedashi/fastapi
      # ↑↑ docker.io/<DockerHubのアカウント名>/fastapiの形式で記載(適宜変更) ↑↑
      ports:
        - containerPort: 8000
          name: "fastapi"
  nodeSelector:
        type: node2



上記の定義を「pod.yaml」というファイル名で保存しましょう。

以上で、「手順3:自作したDockerイメージを起動するPod定義ファイルを作成」は完了です。
 

手順4:自作したDockerイメージをKubernetes上で起動

「手順4:自作したDockerイメージをKubernetes上で起動」に関してご説明します。
 

自作したDockerのコンテナイメージをKubernetes上で起動しましょう。



自作したDockerのコンテナイメージをKubernetes上で起動するために、マスターで以下のコマンドを順に実行してください。

# kubectl create -f pod.yaml
pod/fastapi-pod created
# kubectl get po
NAME             READY   STATUS      RESTARTS   AGE
fastapi-pod      1/1     Running     0          20m
#



コマンド実行後、「Running」が表示された場合、「自作したDockerのコンテナイメージをKubernetes上で起動できた」と判断できます。

以上で、「手順4:自作したDockerイメージをKubernetes上で起動」は完了です。
 

手順5:Kubernetes上で起動したDockerイメージの動作確認

「手順5:Kubernetes上で起動したDockerイメージの動作確認」に関してご説明します。
 

Kubernetes上で起動した「自作したDockerのコンテナイメージ」の動作確認をしましょう。



マスターで以下のコマンドを順に実行し、Pod(アプリ)の動作を確認してください。

# kubectl describe all
Name:         fastapi-pod
Namespace:    default
Priority:     0
Node:         node2/192.168.10.151
Start Time:   Mon, 31 May 2021 20:36:41 +0900
Labels:       <none>
Annotations:  cni.projectcalico.org/podIP: 10.233.96.186/32
              cni.projectcalico.org/podIPs: 10.233.96.186/32
Status:       Running
IP:           10.233.96.186
IPs:
  IP:  10.233.96.186
Containers:
  fastapi-pod:
    Container ID:   docker://d85e3239722358bb056cd96624c7b2932086f5100ce68962f43bfb1d2e66d77a
    Image:          docker.io/herokakedashi/fastapi
    Image ID:       docker-pullable://herokakedashi/fastapi@sha256:bb340553ac39643f6828bfd5d018522036c982015c477f033cde5e59ec4b1109
    Port:           8000/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Mon, 31 May 2021 20:36:55 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-hsxf6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-hsxf6:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-hsxf6
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  type=node2
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  27m   default-scheduler  Successfully assigned default/fastapi-pod to node2
  Normal  Pulling    27m   kubelet            Pulling image "docker.io/herokakedashi/fastapi"
  Normal  Pulled     27m   kubelet            Successfully pulled image "docker.io/herokakedashi/fastapi" in 12.317886738s
  Normal  Created    27m   kubelet            Created container fastapi-pod
  Normal  Started    27m   kubelet            Started container fastapi-pod
# curl 10.233.96.186:8000
{"text":"hello!!"}
# 



上記のように「{“text”:”hello!!”}」が表示された場合、「Kubernetes上で起動した自作のDockerコンテナイメージは正常に動作している」と判断できます。

以上で、「手順5:Kubernetes上で起動したDockerイメージの動作確認」は完了です。
 

上記の流れで、自作したDockerイメージをKubernetesで起動できました。

 
 

自作したDockerイメージをKubernetesで停止する手順


「自作したDockerイメージをKubernetesで停止する手順」に関してご説明します。

Kubernetes上で起動させた「自作したDockerのコンテナイメージ」を停止させてみましょう。



「自作したDockerイメージをKubernetesで停止する手順」に関しては、以下の記事「KubernetesでPodを削除(停止)する手順」部分をご覧ください。
 


 

以上で、Kubernetes上で起動した「自作したDockerイメージ」を停止できます。



ちなみに、「Kubernetesのアーキテクチャを体系的に学びたい」方は、以下の参考書がオススメです。


動画で学びたいという方には、以下がオススメです。

Kubernetes入門@udemy

 
 

【まとめ】自作したDockerイメージをKubernetesで起動する手順


今回の記事を通して、「自作したDockerイメージをKubernetesで起動する手順」をご紹介することで、以下の悩みを解消しました。

★悩み★
・Kubernetesに自作したDockerイメージをデプロイできるのかな。
・自作したDockerイメージをKubernetesで起動する手順を知りたい。
・自作したDockerイメージをKubernetesで停止する手順を知りたい。



「自作したDockerイメージをKubernetesで起動/停止する手順?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。


 

 


 

コメント