LoginSignup
7
8

More than 5 years have passed since last update.

minikubeとVirtualBoxで手元でKubernetesを試す

Last updated at Posted at 2017-01-18

概要

minikubeをインストールすれば、手元のマシーンでVirtualBoxを使ってKubernetesを試すことができるようなので軽く触った。
環境は、mac。

前編

kubernetes入門しました

入門編

  • インストール
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
  • 起動
$ minikube start
$ minikube status
  • Kubernetesサーバにssh接続
$ minikube ssh
  • 操作するクラスタ(context)をminikubeにする
$ kubectl config use-context minikube

minikubeインストールすると勝手にこれが行われる模様。

  • Kubernetesでコンテナーを起動してみる
$ kubectl run my-nginx --image=nginx --replicas=2 --port=80
$ kubectl get pods
NAME                       READY     STATUS    RESTARTS   AGE
my-nginx-379829228-jft31   1/1       Running   0          1m
my-nginx-379829228-kc18n   1/1       Running   0          1m
$ kubectl get deployment
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
my-nginx   2         2         2            2           2m
$ kubectl expose deployment my-nginx --port=80 --type=LoadBalancer
$ kubectl get services
NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes   10.0.0.1     <none>        443/TCP        16h
my-nginx     10.0.0.188   <pending>     80:32453/TCP   8m

EXTERNAL-IPが生成されない・・

  • サービスのURLを取得する
$ minikube service my-nginx --url
http://192.168.99.101:32453
  • dashboard
$ minikube dashboard

コンテナーが正しく起動できなかった時などエラーが見えるのでいいかも。
実際あとで、ここのログみて、privateレポジトリーイメージpullできていないことに気づく。

  • Kubernetes環境の削除
$ minikube stop
$ minikube delete

privateレポジトリーイメージからpodを作成する

  • dockerからimage pullできるようにsecretキーを作成する
$ kubectl create secret [key-name] --docker-server=https://gcr.io --docker-username=oauth2accesstoken --docker-password="$(gcloud auth print-access-token)" --docker-email=[mail-address]

※この時、キー名は、deployment.ymlのimagePullSecrets.nameと同一のものにする
https://github.com/lovelytokyo/gcp-starter/blob/master/k8s/deployment.yml#L16

  • git cloneする
$ git clone git@github.com:lovelytokyo/gcp-starter.git
  • デプロイする
$ kubectl apply -f k8s/deployment.yml
$ kubectl apply -f k8s/service.yml
  • アクセスしてみる
$ curl $(minikube service web-server  --url)
  • imageバージョンアップなどの場合、deployment更新
$ kubectl replace -f k8s/deployment.yml

docker psでコンテナーが参照しているイメージ確認できる

mountする

①mac  →  minikube host 
②minikube host  →  minikube container (pod )

① : mac /Users ディレクトリーは、すでにminikubeの/Usersにマウントされている。
minikube
②:deployment.ymlなどにて定義してあげる

deployment.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mount-test
spec:
  template:
    metadata:
      labels:
        name: mount-test
    spec:
      imagePullSecrets:
        - name : gcp-registry-key
      containers:
        - image: gcr.io/lovelytokyo-018/nginx:v1
          name: test-container
          volumeMounts:
            - mountPath: /opt/  ← pod側のディレクトリー 
              name: test-volume
      volumes:
        - name: test-volume
          hostPath:
            path: /Users/lovelytokyo  ← minikube hostのディレクトリ
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8