Minikubeを使ったwindows10へのkubernetesのインストール
チュートリアル : WindowsラップトップでMinikubeを使ったKubernetes入門
https://rominirani.com/tutorial-getting-started-with-kubernetes-on-your-windows-laptop-with-minikube-3269b54a226
この記事の注意事項
1、2017.01.20現在、kubernetes on windowはまだ実験的で、予測できない様々なバグがあります、もしバグに遭遇したら、kubernetes github search issuesで解決策を探してください( Issues - kubernetes/kubernetes https://github.com/kubernetes/kubernetes/issues )。
2、2017.01.20現在、以下のチュートリアルで作業する場合、すべてのコマンド操作はcmdまたはprowerShellで管理者権限で行い、Cドライブ(システムドライブ)に切り替えてください、他のドライブで操作すると失敗します、これは現在の既知のバグです。
3、テキストはdocker-toolboxをインストールするように求められます、それは自動的にC(システムディスク)にインストールするには、すべてのドッカー、ドッカーコンポーズ、仮想ボックスやその他の環境をインストールします、他のディスクのインストールは、バグが発生します
4、テキストはkubectl 、minikube、etcdを$PATHのパスに入れるよう促されます、システムディスクのパス、できればCディスクのルートに入れることを忘れないでください、そして、システム環境の$PATHにルートディレクトリを追加してください。
5、kubernetesを起動すると、minikubeの起動コマンドを実行すると、プロンプトが表示されることがあります"XXXマシンが見つかりません"、このエラーが問題で見つかったため、上記のインストールは、仮想ボックス、minikube、ドッカー、cmd作業ディレクトリの現在の動作は、Cドライブではないので、インストール時に上記の手順に従ってください。プロンプトが表示された場合 "xxx fail"、最も可能性が高いのは、ドッカーツールボックスがvirtualboxのバージョンとminikubeとwin10のバージョンが一致しないインストールするため、我々はvirtualboxの公式ウェブサイト( ダウンロード virtualboxの最新バージョン( ダウンロード - Oracle VM VirtualBox https。 //をご覧ください。 virtualbox.org/wiki/Downloads )。
チュートリアル : WindowsラップトップでMinikubeを使ったKubernetes入門
最近、複数の記事で取り上げています( 1 & 2 )で、Docker Swarmを始めることができます。
私は個人的にDocker Swarmのシンプルさが好きで、開発者に教えた経験から、Docker Swarmのいくつかの簡単なコマンドを見て、スケールアップ/ダウンやローリングアップデートなどの事柄に関連付けることができれば、ほとんどの人にとってコンテナ管理ソリューションが何であるかを理解するのは簡単であることを発見しました。
個人的には、今日の世界でコンテナ管理ソリューションをお探しなら、時間を投資して クーベルネッツ (k8s)です。私の理解する限りでは、以下のような点が挙げられます。
- Kubernetesは オープンソース
- 活動内容も勢いがある。 オープンソースプロジェクト
- 数十年にわたる同社の運営経験 前任者 Googleにて
- 複数のOS・インフラソフトベンダーをサポート 機能のリリース速度 プロダクションレディネス(畜生。 ポケモンGO は、Kubernetesによってその規模を満たした)
- 利用可能な機能の数 で機能一覧をチェック ホームページ .
この記事は何についてですか?
Kubernetesとは何か、Pod、レプリケーション・コントローラ、サービス、デプロイメントなどの構成要素について説明することに時間を費やしたくはありません。これについては複数の記事がありますので、そちらに目を通すことをお勧めします。
Kubernetesのハイレベルな概要を説明する記事は、他にもいくつか書いています。
コマンドに直接取りかかるために、その概念に関する基本的な資料を見ておくことが重要です。
Kubernetesのような管理ソリューションは、ローカルで試すにはかなりのセットアップが必要だというのが一般的な認識でしょう。これはつまり、セットアップに時間がかかるということですが、セットアップ以上に、ステージング・フェーズの間だけアクセスできるようになるとか、そんな感じでしょうかね。理想的には、開発環境も同じようなものにして、アプリケーションを実行するのに必要なものに近づけたいものです。このことは、あなたが開発を行う可能性が高いラップトップやデスクトップ上でそれを実行したいことを意味します。
の背景には、このような狙いがあったのです。 ミニキューブ これは、限りなくシンプルでポータブルなものです。minikubeプロジェクトのキャッチフレーズが全てを物語っています。 Kubernetesをローカルで実行する"。 .
余談 minikubeロゴのデザイン を読むと面白いですよ。
この記事では、Windowsの開発マシンでMinikubeをセットアップし、Hello Worldを実行してローカルを確認するまでの過程を紹介します。
Windowsでない場合は、LinuxマシンまたはMacマシンでminikubeをセットアップする手順もあります。 こちら . その後、セットアップをスキップして、ローカルでKubernetesをテストドライブするためのクイックHello Worldを行うセクションに進むことができます。
Minikubeは、開発マシン上のVMで動作するシングルノードクラスターを提供することに留意してください。
もちろん、このブログで紹介した内容が終わったら、Google Container Engineのようなマネージド・コンテナ・オーケストレーション・ソリューションにも目を向けることを強くお勧めします。
では、さっそくminikubeのインストールを始めましょう。しかし、その前に、開発マシンにいくつかのプリインストールがあることを確認する必要があります。
Hyper-Vではなく、VirtualBoxを使用する
VirtualBoxとHyperv(Windows 10で利用可能)は幸せなペアにはならず、ツールが混乱する状況に遭遇するはずです。VirtualBoxを使用して、基盤となるDockerホストなどを作成するために必要なすべての難解なコマンドラインスイッチを避けることが望ましいです。
Hyper-Vを無効にするには、「Windowsの機能をオンまたはオフにする」にアクセスすると、以下のようなWindowsの機能一覧が表示されるダイアログが表示されます。Hyper-Vのセクションに移動し、完全に無効化します。
<ブロッククオート <スパン この場合、マシンを再起動する必要があります。私のマシンでは、Windows Updateを行い、設定を行い、10分ほどで終了しました。素晴らしい これで準備は万端です。
開発マシン環境
このようなセットアップを想定しています。Windows 7でも大丈夫だと思いますし、HyperVのようなものは入っていないはずです。私は、あなたがWindows 7上でも大丈夫だと信じていますし、それはHyperVのものを持っていないでしょう。
- Windows 10のノートパソコン。BIOSでVT-x/AMD-vの仮想化を有効にする必要があります。
- Docker Toolbox v1.12.0 . ツールボックスはVirtualBoxをセットアップしてくれるので、それで行っています。
- kubectl これはKubernetesクラスタ用のCLIユーティリティで、これをインストールしてPATHで利用できるようにしておく必要があります。1.4リリースでは、以下を実行します。ブラウザで次の URL を : http://storage.googleapis.com/kubernetes-release/release/v1.4.0/bin/windows/amd64/kubectl.exe . これにより、kubectl CLI の実行ファイルがダウンロードされます。環境のPATH変数で利用できるようにしてください。
注意:kubectlのバージョンは、以下のフォーマットに従って一般的な場所で入手できます。 https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/${GOOS}/${GOARCH}/${K8S_BINARY} です。
Minikubeのインストール
最初のステップは kubectl.exe ファイルを、前のステップでダウンロードし、それを C:\ フォルダーに格納します。
次に、minikubeのバイナリを以下の場所からダウンロードします。 https://github.com/kubernetes/minikube/releases
以下のWindows用ダウンロードリンクにアクセスします。
これでダウンロードが開始されます。 v0.10.0 ファイル名は <スパン minikube-windows-amd64.exe。 . これを次のようにリネームしてください。 minikube.exe に配置し、それを <スパン C:\ ドライブと一緒に kubectl.exe ファイルを作成します。
これでローカルのKubernetes 1ノード・クラスターを起動するための準備はすべて整いました!
これからの手順は、すべてPowershellで行います。Powershellを管理者モードで起動し(Ctrl-Shift-Enter)、kubectl.exeとminikube.exeのファイルがあるC:³³ドライブにナビゲートしてください。
いくつかの注意点
ユーティリティを検証するために、標準的なテストを行いましょう。
今、%HOMEPATH%.minikubeフォルダに行くと、いくつかのフォルダが作成されていることに気がつくでしょう。見てみてください。
Minikubeがサポートするコマンドは複数あります。標準の ` - help` オプションを使用すると、持っているコマンドのリストを見ることができます。
PS C:\> . \minikube --help
Minikube is a CLI tool that provisions and manages single-node Kubernetes clusters optimized for development workflows
Usage:
minikube [command]
Available Commands:
dashboard Opens/displays the kubernetes dashboard URL for your local cluster
delete Deletes a local kubernetes cluster.
docker-env sets up docker env variables; similar to '$(docker-machine env)'
get-k8s-versions Gets the list of available kubernetes versions available for minikube.
ip Retrieve the IP address of the running cluster.
logs Gets the logs of the running localkube instance, used for debugging minikube, not user code.
config Modify minikube config
service Gets the kubernetes URL for the specified service in your local cluster
ssh Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'
start Starts a local kubernetes cluster.
status Gets the status of a local kubernetes cluster.
stop Stops a running local kubernetes cluster.
version Print the version of minikube.
Flags:
--alsologtostderr[=false]: log to standard error as well as files
--log-flush-frequency=5s: Maximum number of seconds between log flushes
--log_backtrace_at=:0: when logging hits line file:N, emit a stack trace
--log_dir="": If non-empty, write log files in this directory
--logtostderr[=false]: log to standard error instead of files
--show-libmachine-logs[=false]: Whether or not to show logs from libmachine.
--stderrthreshold=2: logs at or above this threshold go to stderr
--v=0: log level for V logs
--vmodule=: comma-separated list of pattern=N settings for file-filtered logging
Use "minikube [command] --help" for more information about a command.
PS C:\> . \minikube get-k8s-versions
The following Kubernetes versions are available:
- v1.4.0
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.0
PS C:\> . \minikube.exe start --help
PS C:\> . \minikube.exe start --kubernetes-version="v1.4.0"
--vm-driver="virtualbox"
--show-libmachine-logs --alsologtostderr
W1004 13:01:30.429310 9296 root.go:127] Error reading config file at C:\Users\irani_r\.minikube\config\config.json: o
pen C:\Users\irani_r\.minikube\config\config.json: The system cannot find the file specified.
I1004 13:01:30.460582 9296 notify.go:103] Checking for updates...
Starting local Kubernetes cluster...
Creating CA: C:\Users\irani_r\.minikube\certs\ca.pem
Creating client certificate: C:\Users\irani_r\.minikube\certs\cert.pemRunning pre-create checks...
Creating machine...
(minikube) Downloading C:\Users\irani_r\.minikube\cache\boot2docker.iso from file://C:/Users/irani_r/.minikube/cache/iso
/minikube-0.7.iso...
(minikube) Creating VirtualBox VM...
(minikube) Creating SSH key...
(minikube) Starting the VM...
(minikube) Check network to re-create if needed...
(minikube) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
I1004 13:03:06.480550 9296 cluster.go:389] Setting up certificates for IP: %s 192.168.99.100
I1004 13:03:06.567686 9296 cluster.go:202] sudo killall localkube || true
I1004 13:03:06.611680 9296 cluster.go:204] killall: localkube: no process killed
I1004 13:03:06.611680 9296 cluster.go:202]
# Run with nohup so it stays up. redirect logs to useful places.
sudo sh -c 'PATH=/usr/local/sbin:$PATH nohup /usr/local/bin/localkube --generate-certs=false --logtostderr=true --node
-ip=192.168.99.100 > /var/lib/localkube/localkube.err 2> /var/lib/localkube/localkube.out < /dev/null & echo $! > /var/r
un/localkube.pid &'
I1004 13:03:06.658605 9296 cluster.go:204]
Kubectl is now configured to use the cluster.
PS C:\>
PS C:\> . \minikube.exe status
minikubeVM: Running
localkube: Running
をハイライトしています。 グローバルフラグ これらのフラグは、時にフードの内部で何が起こっているかを見るのに便利ですし、標準出力(コンソール/コマンド)での出力を見るのにも便利です。
MinikubeはKubernetesの複数のバージョンをサポートしており、最新バージョンはv1.4.0です。対応しているバージョンの違いを確認するには、以下のコマンドを試してみてください。
PS C:\> . \kubectl.exe cluster-info
Kubernetes master is running at
クラスターを起動する
これで、ローカルでKubernetesクラスタを起動する準備が整いました。 開始 コマンドを実行します。
注:初めてクラスタを起動する際に、複数の問題に遭遇することがあります。私はそのうちのいくつかを経験し、このブログ記事の最後にトラブルシューティングのセクションを作りました。このブログの記事の最後にトラブルシューティングのセクションを作りました。何か問題が発生したときのために、ご覧になってみてください。
コマンド/フラグ/オプションのヘルプと説明は、以下のようにヘルプオプションから確認することができます。
kubernetes-dashboard is running at
いくつかの フラグ に与えることができます。 開始 コマンドには便利なデフォルト値がありますが、ここでは理解を深めるために少し具体的に説明します。
Kubernetes v1.4.0を使用し、VirtualBoxドライバはWindowsのデフォルトですが、それについて明確に説明するつもりです。
あとは、以下のコマンドを実行するだけです(読みやすくするためにフラグを別行動にしています)。その出力も添付します。
ashboard
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
PS C:\> . \kubectl version
Client Version: version.Info{
Major:"1", Minor:"4", GitVersion:"v1.4.0", GitCommit:"a16c0a7f71a6f93c7e0f222d961f4675cd97a
46b", GitTreeState:"clean", BuildDate:"2016-09-26T18:16:57Z", GoVersion:"go1.6.3", Compiler:" gc", Platform:"windows/amd6
4"}
Server Version: version.Info{
Major:"1", Minor:"4", GitVersion:"v1.4.0", GitCommit:"a16c0a7f71a6f93c7e0f222d961f4675cd97a
46b", GitTreeState:"dirty", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:" gc", Platform:"linux/amd64"
}
PS C:\> . \minikube.exe ip
192.168.99.100
PS C:\> . \minikube.exe dashboard
舞台裏で何が行われているのか、簡単に理解しておこう。また、上の出力で重要な行をいくつかハイライトしています。
- 証明書を生成し、ローカルのDockerホストのプロビジョニングを進めます。この結果、VirtualBox内にVMが作成されます。
- そのホストはboot2DockerのISOイメージでプロビジョニングされます。 セットアップ、IPの割り当て、その他すべての作業を行います。
- 最後に、kubectlがローカルのKubernetesクラスタと対話するように設定されたというメッセージが出力されます。
これで、ローカル・クラスターの状態を ステータス コマンドを実行します。
PS C:\> . \minikube.exe dashboard --url=true
また、kubectl CLIを使用してクラスタ情報を取得することも可能です。
PS C:\> . \kubectl.exe get nodes NAME STATUS AGE minikube Ready 51m
https://192.168.99.100:8443PS C:\> kubectl get nodes error: You must be logged in to the server (the server has asked for the client to provide credentials)
https://192.168.99.100:8443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dPS C:\> kubectl config use-context minikube switched to context "minikube".
PS C:\> . \kubectl.exe run hello-nginx --image=nginx --port=80
deployment "hello-nginx" created
Kubernetesクライアントとサーバーのバージョン
クライアントとサーバーのレベルでKubernetesのバージョンを簡単に確認してみましょう。
PS C:\> . \kubectl.exe get pods NAME READY STATUS RESTARTS AGE hello-nginx-24710... 0/1 ContainerCreating 0 2m
<未定義PS C:\> . \kubectl.exe get pods NAME READY STATUS RESTARTS AGE hello-nginx-24710... 1/1 Running 0 3m
<未定義Major:"1", Minor:"4", GitVersion:"v1.4.0", GitCommit:"a16c0a7f71a6f93c7e0f222d961f4675cd97a 46b", GitTreeState:"dirty", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:" gc", Platform:"linux/amd64" }
クライアントとサーバーの両方が、バージョン 1.4 .
クラスターIPアドレス
クラスタのIPアドレスは ip コマンドを実行します。
PS C:\> . \minikube.exe ip
192.168.99.100
Kubernetes ダッシュボード
Kubernetes Dashboardは、任意のタイミングで ダッシュボード コマンドを実行します。
PS C:\> . \minikube.exe dashboard
これにより、自動的にローカルブラウザでDashboardが起動します。しかし、Dashboard の URL を取得したいだけの場合は、次のフラグを使用します。
PS C:\> . \minikube.exe dashboard --url=true
http://192.168.99.100:30000
があります。 グレートポスト バージョン1.4のKubernetes Dashboardでは、左側のメニューにあるWorkload , Services and Discovery , Storage and Configurationの各セクションに情報が分割され、そこから順次情報をイントロスペクトできるようになっていることが説明されています。これは、情報がそれぞれのセクション、すなわちワークロード、サービス、ディスカバリ、ストレージ、構成に分割され、左側のメニューに存在し、それを経由して順次イントロスペクトできることを説明します。 これらのすべては、上記のNamespace値に対する気の利いたフィルターによって提供されています。
今、Kubernetesのダッシュボードを見ると、何もデプロイされていないことが示されています。一歩下がって、これまで何があったのか考えてみましょう。 シングルノードクラスター ということですね?Nodeのリンクをクリックすると、その情報が表示されます。
上記のノード情報は、kubectl CLIを使用してノード一覧を取得することも可能です。
PS C:\> . \kubectl.exe get nodes
NAME STATUS AGE
minikube Ready 51m
CLIコールの一部がDashboardにも反映されていることがお分かりいただけたかと思います。
ヒント:ユースコンテクスト minikube
クラスタを起動したときによく気がついたと思いますが、出力に " という文があります。 Kubectlがcluster.quotを使用するように設定されました。 これは、最終的にkubectlユーティリティの現在のコンテキストを設定し、どのクラスタと会話しているのか分かるようにするものです。%HOMEPATH%.kubeディレクトリに、Kubernetesクラスタの情報を含む設定ファイルがあり、様々なクラスタに接続するための詳細はそこに存在しています。
要するに、kubectlが正しいクラスタを指していることを確認する必要があるのです。今回の場合、クラスタ名はminikubeです。
以下のようなエラーが出た場合(私は何度か出ました)、おそらくもう一度コンテキストを設定する必要があります。
PS C:\> kubectl get nodes
error: You must be logged in to the server (the server has asked for the client to provide credentials)
そのためのコマンドは
PS C:\> kubectl config use-context minikube
switched to context "minikube".
ワークロードを実行する
では、簡単な Nginxコンテナ を使用して、全体の動作を確認することができます。
以下に示すように、runコマンドを使用することにします。
PS C:\> . \kubectl.exe run hello-nginx --image=nginx --port=80
deployment "hello-nginx" created
これでデプロイが作成され、作成されたPodを調査して、コンテナを実行することができます。
PS C:\> . \kubectl.exe get pods
NAME READY STATUS RESTARTS AGE
hello-nginx-24710... 0/1 ContainerCreating 0 2m
STATUSカラムの値が コンテナ作成中 .
さて、ダッシュボードに戻りましょう(現在起動しているか、または、次のコマンドで再度起動できることを前提としています)。 minikubeダッシュボード コマンドを実行します)。
デプロイメント]オプションに移動すると、デプロイメントが表示され、ステータスがまだ進行中であることに気づくでしょう。また、Podsの値が0/1であることもわかります。
しばらく待っていると、やがてPodが作成され、以下のコマンドのように準備完了となります。
PS C:\> . \kubectl.exe get pods
NAME READY STATUS RESTARTS AGE
hello-nginx-24710... 1/1 Running 0 3m
再びダッシュボードが表示されれば、デプロイの準備が完了したことになります。
今、Replica Setsにアクセスすると、それを見ることができます。
Replica Set名をクリックすると、以下のようにPodの詳細が表示されます。
また、Podへのアクセスには ポッド のリンクは、以下のようにWorkloadsにあります。
関連
-
[解決済み] ポッドにバインドされていないPersistentVolumeClaimsがある
-
[解決済み] WaitForFirstConsumer PersistentVolumeClaim バインドする前に最初のコンシューマが作成されるのを待つ。
-
[解決済み] KubernetesのジョブにおけるbackoffLimitの理解
-
[解決済み] no endpoints available for service \"kubernetes-dashboard"
-
[解決済み] kubectlで現在のコンテキストのconfigの詳細を表示するにはどうすればよいですか?
-
[解決済み] kubernetes UnexpectedAdmissionError ロールアウト後。
-
[解決済み] Nginx Ingress: サービス "ingress-nginx-controller-admission" が見つかりません。
-
[解決済み] Istio Ingressで "no healthy upstream "が発生する。
-
[解決済み] Kubernetes ReplicaFailure FailedCreate でもイベントなし
-
kubenetes: ポッドにバインドされていないPersistentVolumeClaimsがあります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン