MacOSに minikubeをインストールして、使えていたが、バージョンを上げたら動かなくなった(汗), まぁ、とっても良くある話だけど、目的が達成できなくイライラとストレスになる。 そうは言っても、仕方が無いので、解決のために、最初のステップから再実行した記録です。
minikube インストール
minikubeは、VirtualBoxの仮想サーバー上で動作するので、まずは、VirtualBoxインストールする。もし既にvagrantなどを利用していて、VirtualBoxを利用していれば、このステップは不要です。
VirtualBox のインストール
Download VirtutalBoxのウェブページを参照してインストールする。 インストーラーの指示に従ってインストールすれば、完了です。
HomeBrewのインストール
minikubeやkubectlは、HomeBrewパッケージマネージャーでインストールできるので、brewコマンドが利用できる様に、HomeBrew macOS 用パッケージマネージャーをウェブページの指示に従ってインストールする。
minikubeのインストール
brew cask install minikube
コマンドで、最新版のminikube (0.26 2018/4/30現在) をインストールできます。
kubectlのインストール
brew install kubectl
でインストールします。 それから、cask は無用です。
kubectlコマンドでの操作
minikubeをインストールすると、自動的に minikubeのコンテキストがセットアップされるので、そのまま利用する。
imac:~ maho$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* minikube minikube minikube
minikube起動
minikubeを開始するには、minikube start
で実行すれば良い.
imac:~ maho$ minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.
稼働確認のコマンドは、minikube status
が利用できる。
imac:~ maho$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
起動後の確認として、クラスタにアクセスするには kubectl get node
を実行する。
imac:~ maho$ kubectl get node
NAME STATUS ROLES AGE VERSION
minikube Ready master 14m v1.10.0
minikube停止
minikubeクラスタを停止して、仮想サーバーが占有する資源を解放するには、minikube stop
とする。 サブコマンド status
で状態を確認できる。
imac:~ maho$ minikube stop
Stopping local Kubernetes cluster...
Machine stopped.
imac:~ maho$ minikube status
minikube: Stopped
cluster:
kubectl:
k8sクラスタの削除
k8sクラスタは、minikube start
を実行した際に、最新バージョンのkubelet, kubeadm がダウンロードされてセットアップされる。 バージョンを最新化したい場合など、一旦削除して、スタートさせると最新化する事ができる。 この場合、作成していたAPIオブジェクトなども削除されることも忘れてはいけない。
imac:~ maho$ minikube delete
Deleting local Kubernetes cluster...
Machine deleted.
imac:~ maho$ minikube status
minikube:
cluster:
kubectl:
ダッシュボードの利用
minikube dashboard
を実行すると、ウェブ・ブラウザが起動して、ダッシュボードが表示される。 認証に設定も必要ないので簡単です。
imac:~ maho$ minikube dashboard
Opening kubernetes dashboard in default browser...
ネットワーク
VirtualBoxのアイコンから、VirtualBoxマネージャーを起動して、ネットワークを確認してみます。 k8sダッシュボードのアドレスは、vboxnet4のアドレスレンジになっている事がわかります。
imac:~ maho$ ifconfig vboxnet4
vboxnet4: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:04
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
VirtualBoxマネージャーのネットワークをクリックして、ネットワークの詳細を表示すると、ホストオンリーアダプターに割り当てられています。
アプリへのアクセス
VirtualBoxのホストオンリーアダプター上に開くサービスのポートを、MacOSからcurlコマンドでアクセスして、応答を得るまでを確認する。
模擬的なアプリケーションとしてnginxのコンテナをデプロイするために、 次のYAMLファイルを kubectl apply -f nginx.yml
で適用する。
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
その結果、minikubeのIPアドレスで 30017で、サービスのポートが開かれる。
imac:yaml maho$ kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1h <none>
nginx NodePort 10.104.223.190 <none> 80:30017/TCP 59m app=nginx
minikube status
で 仮想マシンのIPアドレスを確認して、NodePortのTCPポート番号でアクセスすることで、nginxの応答を得ることができる。
imac:yaml maho$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
imac:yaml maho$ curl http://192.168.99.100:30017/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
参考資料
- Install Minikube, https://kubernetes.io/docs/tasks/tools/install-minikube/, 2018/4/30
- Download VirtutalBox, https://www.virtualbox.org/wiki/Downloads, 2018/4/30
- Install and Set Up kubectl, https://kubernetes.io/docs/tasks/tools/install-kubectl/, 2018/4/30
- HomeBrew macOS 用パッケージマネージャー, https://brew.sh/index_ja, 2018/4/30
- Homebrew cask, https://caskroom.github.io/, 2018/4/30