minikube startのプロキシ越え

プロキシ環境化でminikubeのセットアップにはまったのでメモ。
詳細は https://github.com/kubernetes/minikube/issues/530 を参照。

環境

プロキシ環境化でのminikube start方法

export HTTP_PROXY=http://xxx.xxx.xxx.xxx:xxxx
export HTTPS_PROXY=http://xxx.xxx.xxx.xxx:xxxx
export NO_PROXY=192.168.99.100

minikube start --vm-driver virtualbox --docker-env HTTP_PROXY=$HTTP_PROXY --docker-env HTTPS_PROXY=$HTTPS_PROXY

環境変数NO_PROXYの設定がない場合、minikube startがタイムアウトして起動しない。

Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Downloading Minikube ISO
 150.53 MB / 150.53 MB [============================================] 100.00% 0s
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
Finished Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
E0427 16:33:36.335447    3153 start.go:276] Error starting cluster:  timed out waiting to unmark master: getting node minikube: Get https://192.168.99.100:8443/api/v1/nodes/minikube: Service Unavailable

miniikube startして1〜2分しても応答がない場合、minikube logs -f でログを確認すると、以下のようなログ数行間隔で繰り返し出力されている。

minikube logs -f 
Apr 27 07:32:45 minikube kubelet[3541]: E0427 07:32:45.564897    3541 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:460: Failed to list *v1.Node: Get https://192.168.99.100:8443/api/v1/nodes?fieldSelector=metadata.name%3Dminikube&limit=500&resourceVersion=0: dial tcp 192.168.99.100:8443: getsockopt: connection refused

起動に途中で失敗した場合、環境をクリーンにした上でリトライする。

minikube delete
rm -rf ~/.minikube