Docker DesktopでKubernetesを使ってnginxを動作させる
環境
Docker Desktop fo Mac: 2.3.0.2
Docker Engine: 19.03.8
Kubernetes: v1.16.5
目的
Docker DesktopでKubernetesを使ってnginxコンテナを動かせるようになる。
流れ
- Docker DesktopでKubernetesを有効化する
- Podの作成
- Serviceの作成
- 作成したnginxにアクセス
Docker DesktopでKubernetesを有効化する
Docker DesktopでKubernetesを有効にすると、Kubernetesクラスタとマスターノードが構築される。
// クラスタ上の全てのノードを表示 $ kubectl get nodes NAME STATUS ROLES AGE VERSION docker-desktop Ready master 97s v1.16.6-beta.0
Podの作成
nginxコンテナ1つを含むPodを作成。
$ kubectl run my-nginx --image nginx:latest kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead. deployment.apps/my-nginx created
my-nginxというDepoloymentリソースが作成される。
通常はマニフェストファイルでPodを作成するが、kubectl run
でも作成できる。
// 作成されたDeploymentを確認 $ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 1/1 1 1 2m36s // 作成されたPodを確認 $ kubectl get pod NAME READY STATUS RESTARTS AGE my-nginx-667764d77b-8krjp 1/1 Running 0 3m25s // 作成されたコンテナを確認。 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d69c57dbef0 nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes k8s_my-nginx_my-nginx-667764d77b-8krjp_default_56654cce-42f3-4314-a1e8-cad388f85a40_0
Serviceの作成
Podに対してクラスタ外部からアクセスするためにはServiceを作成する必要がある。
$ kubectl expose deployment my-nginx --port 80 --type NodePort service/my-nginx exposed
deploymentにmy-nginx
、ポート番号に80
、--typeオプションにNodePort
を指定している。
Serviceの一覧を見ると、my-nginxが作成され、ポート番号31916でアクセスできることが分かる。
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25m my-nginx NodePort 10.103.77.36 <none> 80:31916/TCP 5s
作成したnginxにアクセス
http://localhost:31916
にアクセスするとnginxのホーム画面が表示される!
今回作ったリソースが不要になったらDeployment, Serviceを削除する。
$ kubectl delete deployment my-nginx deployment.apps "my-nginx" deleted $ kubectl delete service my-nginx service "my-nginx" deleted