0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Volumeを用いて、Kubernetesクラスタに作成したPodの中身を保持する

Posted at

目的

前回の記事の通りにPodを作成すると、クラスタを再起動したときに作成したDjangoプロジェクトが消えると思います。今回はVolumeを用いてPodの中身を保持できるようにしたいと思います。

手順

1. クラスタを作成する

minikube start

2. マニフェストファイルを作成する

次のようなファイルを作成し、保存します。resources:のフィールドは(Visual Studio Codeでは警告が表示されますが)省略可能です。

django.yaml
apiVersion: v1
kind: Pod
metadata:
  name: django-pod
  labels:
    name: django-label
spec:
  containers:
  - name: django-container
    image: python
    command: ["sleep", "infinity"]
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    volumeMounts:
      - mountPath: /app
        name: django-volume
  volumes:
  - name: django-volume

 次のコマンドを実行すると、Podが作成されます。django.yamlの部分はファイルを作成した場所やファイル名に応じて適宜相対パスで記述してください。

kubectl apply -f django.yaml

 しばらく待ってからkubectl get podsを実行すると次のような結果が出力されると思います。

NAME         READY   STATUS    RESTARTS   AGE
django-pod   1/1     Running   0          16m

3. Pod内部にDjangoプロジェクトを作成する

 次のコマンドを実行してPodにアクセスします。django-podの部分は、Podのメタデータとして設定した名前を入力します。

kubectl exec -ti django-pod -- bash

 上のyamlファイルによってマウント先を/appに設定したので、/appディレクトリは保持されることになります。よってこの内部にDjangoプロジェクトを作成します。IPアドレスなどに留意してサーバーを起動するところまで行ってください。

4. Podを外部に公開する(前回とほぼ同じ)

 別の端末で次のコマンドを実行します。ポート番号はDjangoのサーバーを起動させたときのポート番号と合わせてください。(nameオプションは任意)

kubectl expose pod django-pod --name=django-service --port=8000

 kubectl get servicesを実行すると、次のような結果が出力されます。

NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
django-service   ClusterIP   10.99.145.184   <none>        8000/TCP   8s
kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP    3h5m

 minikube service django-serviceと入力すると、ブラウザに"Congratulations!"ページが表示されると思います(django-serviceの部分は上で取得したサービス名を適宜入力)。Podを消去しない限りはクラスタを再起動してもDjangoプロジェクトの中身は保持されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?