フリーランスエンジニアのブログ

Elixir,Kubernetes,Terraformをいじっているエンジニアのブログ。メモ帳

【Kubernetes】ローカルにクラスタを作成してNginxをLoadBalancerタイプでデプロイ

こんにちは。

この記事は Kubernetes Advent Calendar 2019 の2日目の記事になります。
qiita.com

前提

  • kubectlコマンドが使える。
  • Minikubeが利用できる環境にある。

クラスタの用意

ローカルにクラスタを用意。

$ minikube start

確認。

$ minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Dashboardを確認する。

$ minikube dashboard

Deploymentの作成

deployment.yaml の作成

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.9.1
        ports:
        - containerPort: 80

apply する

$ kubectl apply -f ./deployment.yaml

Serviceの作成

service.yaml の作成

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
    - name: http
      port: 8080
      targetPort: 80

apply する

$ kubectl apply -f ./service.yaml

確認

MinikubeのDashboardで見てみる。

f:id:ruby-deve:20191124023957p:plain
dashboard_pods

Podが3つ。

サービスとURLの確認

$ kubectl get services
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          87m
nginx        LoadBalancer   10.101.66.247   <pending>     8080:31695/TCP   110s

$ minikube service nginx --url
http://192.168.64.6:31695

minikube service nginx --url
で表示されたURLにブラウザでアクセスする。
この場合だと、http://192.168.64.6:31695にアクセスするとNginxの表示が確認できる。

f:id:ruby-deve:20191124022154p:plain
Nginx