pythonコードからkubernetesのpodを作成する方法
はじめに
kubernetesでpodを作るためにはまずpodのyamlファイルを作り、作ったyamlファイルをコマンドでapplyすることにより作成することが出来るが、コマンドを使わずにpythonコードからpodを作成するしたいと思って調べたところ記事が見当たらず、プログラムを書くのに苦労したため共有しておきます。
環境
- Ubuntu 18.04.2 LTS
- python 3.6.9
- kubernetesが動く環境
podの基本的な作成方法
まず基本的なpodが作成できるか試してみる。podを作成するyamlファイルは何でもいいのですが、とりあえず簡単なpod.yamlのファイルを作成する。
$ vim pod.yaml
:set pasteでコピペすると楽
# Podを記述する時のきまり
apiVersion: v1
kind: Pod
# Podの名前やラベルをはじめとする細かい情報
metadata:
name: myapp-pod # Podに名前をつける
labels:
app: myapp # ラベル app -> myapp をつける
# Podに配置するコンテナ本体の情報
spec:
containers:
- name: demo-container # コンテナに名前をつける
image: nginx # コンテナ名(Docker Hubの名前と一致)
ports:
- containerPort: 80 # 80番ポートを使う
pod.yamlをapplyしてpodを作成してみる。
$ kubectl apply -f pod.yaml
pod/myapp-pod created
podが出来たか確認してみる。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-pod 1/1 Running 0 34s
作ったpodは用済みなので消しておく。
$ kubectl delete -f pod.yaml
pod "myapp-pod" deleted
$ kubectl get pod
No resources found in c0118272 namespace.
pythonから作成
必要なものをインストールする。
$ pip3 install flask
$ pip3 install kubernetes
pod.yamlと同じディレクトリにpodcreate.pyという名前でpodを作成するpythonプログラムを作成する。namespaceのところは自分のnamespaceの名前に変更する。基本はdefaultになる。
$ vim podcreate.py
from flask import Flask
from flask import request
from kubernetes import client, config, watch
import yaml
app = Flask(__name__)
@app.route('/')
def pod_create():
config.load_kube_config()
with open("pod.yaml", "r") as f:
pod = yaml.safe_load(f)
k8s_apps_v1 = client.CoreV1Api()
resp = k8s_apps_v1.create_namespaced_pod(body=pod, namespace="c0118272")
print("pod created. status='%s'" % resp.metadata.name)
return "pod created. status='%s'" % resp.metadata.name
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
ファイルの位置関係を確認する。
$ ls
podcreate.py pod.yaml
flaskで書いたのでブラウザに表示して実行してみる。
$ export FLASK_APP=podcreate.py
$ flask run --host=0.0.0.0
* Serving Flask app "podcreate.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
*
ブラウザで実行してみる。urlはローカルならhttp://0.0.0.0:5000でローカルじゃなければポートは5000でIPアドレスが実行環境ごとに異なる。
上の画像のようになれば成功!
コマンドで確認してみる。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-pod 1/1 Running 0 3m11s
podが出来てたらやりたいことは完了!!
おわりに
kubernetesのapiを使っていますが難しくてよくわからないので応用方法はそれぞれ調べてみてください!
良き研究ライフを~
Author And Source
この問題について(pythonコードからkubernetesのpodを作成する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/C0118272/items/ecedc436719949b73c82著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .