docker を触ったことすらないけど kubernetes を始める。
どの記事もやたら長くてややこしいのでひとまずチュートリアル触ってみる。
Mac で動かす(ローカル環境)
- チュートリアル記事 - Minikubeのインストール - kubernetes
# 出力にVMXが表示されている場合(色付けされているはずです)、VT-x機能がマシンで有効になっています。
$ sysctl -a | grep -E --color 'machdep.cpu.features|VMX'
VirtualBox のインストール
Minikube のインストール
- kubectl も使えるようになる。
- ローカルで作業する時に必要?
$ brew install minikube
# 確認(ヘルプっぽいのが出る)
$ minikube
$ kubectl
# 必要であれば
# $ sudo mv minikube /usr/local/bin
クイックスタート
# クラスターの起動
$ minikube start
VirtualBox を使って色々起動する
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent
# クラスターの停止
$ minikube stop
✋ ノード "minikube" を停止しています...
🛑 1台のノードが停止しました。
# クラスターの削除
$ minikube delete
http サーバー を立てて URL にアクセスする
# クラスターの起動
$ minikube start
# echoserver という http サーバーのイメージを利用して hello-minikube という名前のサービスの作成する
$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
deployment.apps/hello-minikube created
# ポート番号 8080 でサービスを公開する
$ kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
# 動いているか確認
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-minikube-xxxxxxxxxx-xxxxx 1/1 Running 0 41s
# サービスの確認
$ minikube service hello-minikube --url
http://192.168.xx.xx:xxxx
URL をコピペして確認する。
ダッシュボードの表示
# URL が表示されるけど勝手にブラウザに移動する
$ minikube dashboard
ctl + c で終了
作成したサービスを削除する
# サービスの削除
$ kubectl delete services hello-minikube
service "hello-minikube" deleted
# deployment の削除
$ kubectl delete deployment hello-minikube
deployment.apps "hello-minikube" deleted
Kubernetes と Docker を使用したチュートリアルを触ってみる
例: Redisを使用したPHPのゲストブックアプリケーションのデプロイ
# RedisのマスターのDeploymentを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml
$ kubectl get pods
# POD-NAMEの部分を実際のPodの名前に書き換えてください。
# 起動までに少し時間がかかる
$ kubectl logs -f POD-NAME
# RedisのマスターのServiceを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/redis-master-service.yaml
$ kubectl get service
# RedisのスレーブのDeploymentを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-deployment.yaml
$ kubectl get pods
# RedisのスレーブのServiceを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/redis-slave-service.yaml
$ kubectl get services
# ゲストブックのフロントエンドのDeploymentを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-deployment.yaml
$ kubectl get pods -l app=guestbook -l tier=frontend
# フロントエンドのServiceを作成する
$ kubectl apply -f https://k8s.io/examples/application/guestbook/frontend-service.yaml
$ kubectl get services
# フロントエンドのServiceをNodePort経由で表示する
# IPアドレスをコピーして、ブラウザー上でページを読み込み、ゲストブックを表示しましょう。
$ minikube service frontend --url
# フロントエンドのServiceをLoadBalancer経由で表示する
# もしfrontend-service.yamlマニフェストをtype: LoadBalancerでデプロイした場合、ゲストブックを表示するためのIPアドレスを見つける必要があります。
# 外部IPアドレス(EXTERNAL-IP)をコピーして、ブラウザー上でページを読み込み、ゲストブックを表示しましょう。
$ kubectl get service frontend
# ウェブフロントエンドをスケールする
$ kubectl scale deployment frontend --replicas=5
$ kubectl get pods
# スケールダウン
$ kubectl scale deployment frontend --replicas=2
$ kubectl get pods
クリーンアップ
$ kubectl delete deployment -l app=redis
$ kubectl delete service -l app=redis
$ kubectl delete deployment -l app=guestbook
$ kubectl delete service -l app=guestbook
$ kubectl get pods
or
全て削除する場合
$ kubectl delete deployment --all
$ kubectl delete service --all