LoginSignup
3

More than 5 years have passed since last update.

Ubuntu16.04のminikubeをアップデートした

Posted at

TL;DR

Ubuntu16.04にminikubeをアップデートしてみた時にハマったことメモ。
つらつらと書いていきます。

環境

  • アップデート対象マシン: Ubuntu16.04 LTS。これ自体がVM。社内のお遊び用(外からは見えない)
  • 手元のマシン: macOS Mojave 10.14.2
  • minikube: v0.22.1 -> v0.33.1
  • kubectl: アップデート前を忘れた... ->
{
  Major:"1",
  Minor:"13",
  GitVersion:"v1.13.2",
  GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def",
  GitTreeState:"clean",
  BuildDate:"2019-01-10T23:35:51Z",
  GoVersion:"go1.11.4",
  Compiler:"gc",
  Platform:"linux/amd64"
}
  • その他: proxyあり

minikubeのupdate

古いminikubeの停止

古いminikubeを停止させる。

minikube stop
minikube delete

新しいminikubeのインストール

公式のwithout vmを参考に実施。

proxyが存在するため、proxy設定を含めてコマンドを実行。
以下のコマンドを叩いた。

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash # helmコマンドをget
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube # minikubeバイナリをget
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl # kubectlコマンドをget

export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
mkdir $HOME/.kube || true
touch $HOME/.kube/config

export KUBECONFIG=$HOME/.kube/config
sudo -E minikube start --vm-driver=none --docker-env HTTP_PROXY="<http_proxyをいい感じに>" --docker-env HTTPS_PROXY="<https_proxyをいい感じに>" --docker-env NO_PROXY="<no_proxyをいい感じに>"

# this for loop waits until kubectl can access the api server that minikube has created
for i in {1..150} # timeout for 5 minutes
do
   ./kubectl get po &> /dev/null
   if [ $? -ne 1 ]; then
      break
  fi
  sleep 2
done

普通はこれで起動するはずだが、今回はこのようなエラーがでた。

[ERROR Port-10250]: Port 10250 is in use

portが使われている。見たらlocalkubeなるプロセスが10250ポートを使用していた。
minikubeの生き残りのようだ。

こちらを参考にし、sudo systemctl stop localkubeで止めた。
kill <localkubeのPID>では無限に復活するので注意。

minikube dashboardでdashboardの確認

minikube service listを叩くと、現在動いているサービスの一覧が見られる。
以前は何もしなくてもdashboardが起動していた気がするが、起動しなくなったようだ。

minikube dashboardを叩くとdashboardが起動し、ブラウザも起動する機能があるが、
今回はサーバ機なのでminikube dashboard --urlでURLだけ教えてもらおうとしたが、hangしたためCtrl + cで停止。

こちらにあるように、セキュリティの問題からdashboardを表示する機能をやめたらしい。
なお、minikube dashboard --urlでhangするのは仕様通りのよう。

kubectl proxyコマンドを叩くとポートフォワードが行われ、
http://localhost:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/overview?namespace=default
にアクセスすると目的のdashboardが見られる。
ただ、手元のマシンにkubectlを入れていないので、今はまだdashboardが見られない。

手元のマシンからサーバのminikubeを操作

macOSなのでhomebrewでインストールする。
kubectlのインストールは公式を参考に
helmのインストールも公式を参考に

brew install kubernetes-cli
brew install kubernetes-helm

kubectlのセッティング

kubectlは~.kube/configを見て動いている。なので、いい感じに書き換える。

apiVersion: v1
clusters:
- cluster:
    certificate-authority: <ca.crtへのパス>
    server: https://<minikube_serverのIP>:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: <client.crtへのパス>
    client-key: <client.keyへのパス>

上記の証明書関係はkubernetesのユーザ認証関係を見ていい感じに作る(はず)。
今回は面倒だったので、デフォルトユーザの証明書をサーバ機からscpでパクってきて使用した。

接続テスト

kubectl cluster-infoで情報が取れればok.
初回実行時は、あらかじめ設定されていたhttps_proxyに阻まれてレスポンスが返ってこなかったため、no_proxyにサーバのIPを追加したところ無事に動いた。
kubectl proxyを打つと、ポートフォワーディング状態になるので、その状態でdashboardのURLを打ち込んだところ、見えた。

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
3