1. ホーム
  2. クーベルネッツ

Minikubeを使ったwindows10へのkubernetesのインストール

2022-02-25 11:22:13




チュートリアル : 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とは何か、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

舞台裏で何が行われているのか、簡単に理解しておこう。また、上の出力で重要な行をいくつかハイライトしています。

  1. 証明書を生成し、ローカルのDockerホストのプロビジョニングを進めます。この結果、VirtualBox内にVMが作成されます。
  2. そのホストはboot2DockerのISOイメージでプロビジョニングされます。
  3. セットアップ、IPの割り当て、その他すべての作業を行います。
  4. 最後に、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:8443


PS 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-d


PS 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にあります。