これな!
立ち上げたままで放置気味だったので、
Kubernetes勉強がてらManifestfile使ってNginx動かしてみました。
■contexts
| 1 2 3 4 5 6 7 8 | $ kubectl config use-context  docker-for-desktop $ kubectl config get-contexts CURRENT   NAME                 CLUSTER                      AUTHINFO             NAMESPACE *         docker-for-desktop   docker-for-desktop-cluster   docker-for-desktop $ kubectl get node NAME                 STATUS    ROLES     AGE       VERSION docker-for-desktop   Ready     master    49d       v1.8.2 | 
とりあえずDocker For MacでKubernetes動かしたら
nodeをdocker-for-desktopに変わってることを確認しましょう。
■Manifestfile
https://qiita.com/mihirat/items/ebb0833d50c882398b0f#service%E3%81%A8%E3%81%AF
せっかくなのでManifestfileを使ったデプロイを試してみましょう。
Pod,Serviceなど出てきますが、簡単に説明していきます。
■Pod 
コンテナの集まりで、nodeの集合のパワー全体を
リソースとしていくつも立ち上がるように動く。
これだけだと外からアクセスができないため
Service(ロードバランサーなど)が必要となる。
■Service
podsに対して外部と通信を行うためのネットワーク的なもの。
serviceに来たアクセスをpodにいい感じで分配してくれるので非常に賢い!
■Deployment
podを管理するコントローラーであるReplication Controllerと
podの両方を一括で管理できるもの。
例えばコンテナのイメージが変わった場合に、
古いimageのpodから更新してくれるので安全にdeployが可能となる!
この設定らをまとめてManifestfileで管理します。
今回はpodとserviceファイルを作成し、
ロードバランサー挟んでwebアクセスできるかやってみました。(ローカル)
ymlなので書きやすい。
・tree
| 1 2 3 4 5 6 | $ tree . ├── html │   └── index.html ├── pod.yml └── service.yml | 
htmlディレクトリをマウントしてindex.htmlが見れればOK。
・pod.yml
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | apiVersion: v1 kind: Pod metadata:   name: nginx-web01   labels:     app: http-app spec:   containers:     - name: nginx-web01       image: nginx:latest       ports:         - name: http-port           containerPort: 80       volumeMounts:         - name: documentroot           mountPath: /usr/share/nginx/html   volumes:     - name: documentroot       hostPath:         path: /Users/adachin/kubernetes/html | 
・service.yml
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | kind: Service apiVersion: v1 metadata:   name: http-service   labels:     app: http-app spec:   selector:     app: http-app   ports:     - port: 8080       targetPort: http-port   type: LoadBalancer | 
■kubectl create
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ kubectl create -f service.yml -f pod.yml service "http-service" created pod "http" created $ docker ps CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES 6dac7f71262b        nginx               "nginx -g 'daemon of…"   7 seconds ago       Up 10 seconds                           k8s_nginx_http_default_1a5af406-1d21-11e8-a908-025000000001_0 $ kubectl get all NAME             READY     STATUS    RESTARTS   AGE po/nginx-web01   1/1       Running   0          1h NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE svc/http-service   LoadBalancer   10.107.169.118   <pending>     8080:31741/TCP   1h svc/kubernetes     ClusterIP      10.96.0.1        <none>        443/TCP          49d | 
ちゃんとpodとserviceが立ち上がってることが分かります!
あとはアクセスできるか確認!
■curl localhost:8080
| 1 2 | $ curl localhost:8080 nginx-web01-kubernetes-adachin | 
キタ━━━━(゚∀゚)━━━━!!?!!
ちなみにコンテナログインしてみると、
psコマンドが使えないw(コンテナの概念を理解しましょう)
| 1 2 3 4 5 6 7 8 | $ docker exec -it faca8109424e /bin/bash root@nginx-web01:/# root@nginx-web01:/# pgrep nginx bash: pgrep: command not found root@nginx-web01:/# ps aux |grep nginx bash: ps: command not found root@nginx-web01:~# /etc/init.d/nginx status [ ok ] nginx is running. | 
■kubectl delete
| 1 2 3 4 5 6 7 8 9 | $ kubectl delete pod nginx-web01 pod "nginx-web01" deleted $ kubectl delete svc http-service kubernetes service "http-service" deleted service "kubernetes" deleted $ kubectl get all No resources found. | 
$ docker rm -fでは消せないのでkuberctlコマンドを使ってpod、serviceを削除しましょう。
■まとめ
なんとなく動きとか理解できたので
次はansible-container試してみる?
参考
http://blue1st-tech.hateblo.jp/entry/2018/01/06/162306
https://qiita.com/mihirat/items/ebb0833d50c882398b0f
https://qiita.com/suzukihi724/items/241f7241d297a2d4a55c


 
													 
													 
													
0件のコメント