どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

【おかわり】Kubernetesについて勉強する

f:id:nogawanogawa:20190812202110p:plain:w250
 

最近、k8sの勉強をしてるんですが、はっきり言って全然理解できてる感じがしないので、何回かおかわり勉強します。 多分、年内はk8sと格闘することになりそうな勢いですが、なんとか年内には普通に使いこなせるように頑張ってます。はい。

基本

多分どんな本にも書いてあるであろうnginxを使ったpodを作ります。

キホン、スゴクダイジ。

Step 1 : nginxのPodを作る

イメージこんな感じです。

f:id:nogawanogawa:20190818222119j:plain:w500

マニフェストファイル

一応外部から疎通が取れるようにserviceをつけておきます。

apply

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

確認

Pod
kubectl get pods
NAME                           READY   STATUS      RESTARTS   AGE
nginx-65f88748fd-tqqks         1/1     Running     0          13s

まあPodはできてますよね。

疎通

http://localhost:8080/

Hello Kubernetes!

ここまでは、まあ順調。

Step 2 : nginx + FlaskのPodを作る

下の記事あるマイクロサービスアーキテクチャのFabric Modelってやつを想定してます。

codezine.jp

参考にしたのはこちら。

github.com

イメージはこんな感じ。

f:id:nogawanogawa:20190818222629j:plain:w500

前準備

Dockerイメージを作成します。

拝借したのは、"example-flask-python3.7"です。

Dockerfileをちょいといじりました。

これでイメージを作成します。

docker image build -t flask-nginx .

起動すると

docker run -p 80:80 flask-nginx

~ $curl localhost:80
Hello World from Flask in a uWSGI Nginx Docker container with      Python 3.7 (from the example template)

こんな感じになります。

マニフェストファイル

さて、本題に戻ります。 今回のマニフェストファイルはこんな感じです。

apply

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

確認

Pod/Service
$kubectl get pods
NAME                     READY   STATUS             RESTARTS   AGE
nginx-86955d745d-jktmp   1/1     Running            0          2m40s
$kubectl get service
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP          11h
sample-lb    LoadBalancer   10.110.87.77   localhost     8080:30082/TCP   119s
疎通
$curl localhost:8080
Hello World from Flask in a uWSGI Nginx Docker container with      Python 3.7 (from the example template)

外からつながってますね。

Step 3 : HTMLをホスティングする

Flaskを使って、アクセスすると画面が返るようにします。

こんな感じ。

f:id:nogawanogawa:20190818231021j:plain

下準備

vueのデフォルト画面をそのまま表示します。

作り方は過去の記事を参照。

nogawanogawa.hatenablog.com

distをapp/に配置して、flaskのコードをちょいと書き換えます。

そんでもって、Dockerimageを作り直します。

docker image build -t flask-nginx .

マニフェストファイル

さっきと一緒なんで省略。

apply

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

確認

疎通

今度はブラウザから。

http://localhost:8080

f:id:nogawanogawa:20190818230811p:plain

外からつながってますね。

感想

かけ足になりましたが、一旦ここまで。 もう一回くらいやれば、自由研究に追いつくと思います。