【Kubernetesリソースシリーズ第一弾】Podについて知る!

10月 11, 2023

どもです。イケオジにはkatharine hamnettのアイテムを紹介したくなるsaisaiです。


今回はKubernetesについて学んでみよう第一弾ということで、リソースのPodについて記事にしていきたいと思います。


Kubernetesのリソースの中でも基礎中の基礎に当たる部分ですのでしっかり抑えていきたいと思います。


それでは、やっていきます。

そもそもPodとは

Kubernetesに関する記事を読んでいると頻繁に出てくる"Pod"ですが、そもそもどのようなものなのでしょうか。


Podとは、Kuvernetesの同一環境におけるDockerコンテナの最小集合単位です。つまり、Podというと複数のコンテナをまとめて指しているのだなと解釈できそうです。


まだ少し複雑ですね。実際にPodはマニフェストファイルというもので定義し起動しますので、マニフェストファイルの要素を見つつより具体的に理解していきたいと思います。

Podのマニフェストファイル

マニフェストファイルとはkubernetesのリソースを定義するファイルのことです。例えばPodの場合は以下のように定義することができます。ついでにそれぞれの要素についても説明しておきます。

apiVersion: v1 #api group及びそのバージョン
kind: Pod #リソースの種類
metadata: #リソースそのものに関する情報
  name: test #Podの名前
spec: #リソースの詳細
  containers: #使用するコンテナ情報
  - name: nginx #Podによって起動するコンテナ名(Pod内で一意のもの)
    image: nginx:1.17.2-alpine #使用するイメージ
    volumeMounts: #コンテナへマウントするストレージを定義する
    - name: storage #ボリューム名(volumesで定義する名前と一致させる)
      mountPath: /home/nginx #マウントするパスを指定します
  volumes:
  - name: storage #ボリューム名
    hostPath: #Pod実行サーバのどこに保存するか
      path: "/home/storage"  #保存するパス
      type: Directory #保存する場所の種類(ファイルやディレクトリなど)

上記のマニフェストファイルを適当なディレクトリ内に配置しておきます。

Podの作成

では実際にPodを作成してみます。マニフェストファイルを配置したディレクトリに移動し、以下のコマンドでマニフェストファイルを実行してみましょう。

kubectl apply -f マニフェストファイル名

無事Podが作成されたかと思います。立ち上がったPodないのコンテナに接続するには以下のコマンドを入力します。

kubectl exec -it pod/test sh

無事コンテナにアクセすることができます!


補足:volumeMountsとvolumesについて
マニフェストファイル上の説明では少し分かりにくいかもしれないで補足します。下記のような関係性を抑えておけば分かりやすいかと思います。

volumeMounts:マウント先(コンテナ内特定のパス)
volumes: マウント元(サーバ内特定のパス)

例えば上記マニフェストファイルの指定方法の場合、Kubernetesを稼働しているサーバ内の"/home/storage"の内容が、立ち上がったコンテナ内の"/home/nginx"に反映されているということになります。

ひとこと

というわけで今回はkubernetesリソースの一つであるPodの概要、マニフェストファイルの確認、立ち上げまでを行ってみました。


kubernetesの基礎となるリソースなので、しっかり知識を定着させていきたいと思います。


ここまで読んでいただきありがとうございました!


-saisai-


↓オススメ教材

kubernetes

Posted by CY