前回は、Kubernetesの基本的な用語と主要なコンポーネントの役割について説明しました。今回は、nginxのPodを実際にデプロイしてみたいと思います。
KubernetesでPodなどのリソースをデプロイする場合、主に二つの方法があります。
-
kubectl createコマンドやkubectl runコマンドでデプロイする - マニフェストファイルを作成し、マニフェストファイルを指定して
kubectl createもしくはkubectl applyを実行する
このそれぞれの方法を使ってPodをデプロイしてみます。
前提
Kubernetesのリソースを操作するには、kubectlというツールをインストールする必要があります。お使いのOSに合わせて、ここを参考にしてインストールしてください。また、kubectlのバージョンはKubernetesクラスタのバージョンと合わせる必要がありますので、適宜置き換えてください。本稿では、v1.29.1を用います。
ワンライナーでPodのデプロイ
マニフェストファイルを使わずにリソースを作成するには、基本的にkubectl createコマンドを使います。ですがPodに限り、kubectl runコマンドという簡単にPodが作成できるコマンドが用意されています。
kubectl runコマンドは、kubectl run <pod-name> --image=<image-name>でPodを作成できます。
kubectl run run-nginx --image=nginx:latest
作成したPodを確認するには、kubectl getコマンドを使います。kubectl getコマンドは、kubectl get <resource-type>でリソースの一覧を取得できます。
$ kubectl get pod # リソースタイプにPodを指定
NAME READY STATUS RESTARTS AGE
run-nginx 1/1 Running 0 18s
作成した、run-nginxというPodが確認できます。
マニフェストファイルを使ってPodのデプロイ
Kubernetesでは、基本的にすべてのリソースをマニフェストファイルと呼ばれるYAMLファイルで管理し、クラスタにこのYAMLファイルを適用することでリソースを作成します。
ワンライナーでPodを作成することも可能ですが、ここではマニフェストファイルを使って同様のPodを作成してみます。
apiVersion: v1
kind: Pod
metadata:
name: manifest-nginx-pod
spec:
containers:
- name: manifest-nginx
image: nginx
上記のマニフェストファイルを保存し、以下のコマンドを実行します。
kubectl apply -f manifest-nginx.yaml
作成したPodをkubectl get podで確認します。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
manifest-nginx-pod 1/1 Running 0 4s
run-nginx 1/1 Running 0 11m
注意点
今回nginxのPodを作成しましたが、まだこのPodは外部に対して公開されていません。そのため、下記のようにcurlコマンドを実行しても結果は返ってきません。
curl <IP>:80
まとめ
今回はワンライナーでPodをデプロイする方法と、マニフェストファイルからPodをデプロイする方法を紹介しました。次回は、Serviceというリソースを作成し、外部からこのPodがアクセスできるようにしてみます。