2
3

More than 1 year has passed since last update.

Desktop 用の OpenShift (CRC : Code Ready Container) を Windows 10にインストールする。

Last updated at Posted at 2021-10-26

必要スペック

Desktop 用の OpenShift である CRC (Code Ready Container) をインストールしてみます。OpenShift 3で使われていたMniniShiftOpenShift 4 版の、シングルノードのOpenShiftです。(GitHub のレポジトリへのリンク)

今回使用した、CRC 1.34 の必要スペックは、マニュアルによると以下の通りです。

4物理CPUコア
9 GByte Mem
35 GByte Disk

作成されるのは、Single Node (MasterWorker) のOpenShift 環境になりますが、バニラKubernetes (素のKubernetes) に較べると、いろいろ入って居るので結構、CPU / Memory が必要のようです。

この仮想マシンですが、Windowsの場合、DドライブをCRCのインストールディレクトリに指定しても、仮想マシンの本体は C:\Users\User名\.crcというディレクトリの配下に作成されるので、Cドライブの容量が必要です。

また私の環境は Windows 10 Professionalですが、Windows としての Requirement に、Windows 10 Fall Creators Update (version 1709) or newerとあり、Home Edition はサポートされてないようです。特に記述はありませんが、Hyper-Vが使用されます。

マニュアルの Hardware / Software Requirement ページは以下です。
https://access.redhat.com/documentation/en-us/red_hat_codeready_containers/1.34/html/getting_started_guide/installation_gsg#minimum-system-requirements_gsg

ダウンロード

Red Hatのアカウントにログインします。(アカウントの作成は無料です)
image.png

ログイン後、メニューからダウンロードページまで辿ってもいいのですが、以下のリンクをクリックすると直接ダウンロードページに飛べます。
https://developers.redhat.com/download-manager/link/3868678

私の環境は Windows なので、Windows を選択します。
image.png

オレンジの枠で囲った部分をダウンロードします。CRC本体とpull secretと呼ばれるクレデンシャルのファイルです。

後は以下のマニュアルに従ってセットアップするだけです。

マニュアルは事、細かに手順が書いているので、この記事では上記のマニュアルを参考にしながら、必要最小限の所だけピックアップした手順にとどめます。

インストール

前述のマニュアルを読みながらインストールを進めて行きます。

ダウンロードしたファイルを解凍すると、インストーラーが出てくるので実行します。

image.png

「次へ」で完了するタイプのインストーラーです。特に難しいインストーラーではないので、細かいキャプチャーは省略します。

image.png

インストールの最後に、再起動を要求されます。
image.png

インストール自体は、Windowsの再起動で完了です。

CRCを起動する

Windwos 再起動後は、crc startCRCを起動する事ができます。
このコマンドを実行するとHyper-V上でCRCの仮想マシンが起動しますが、Hyper-Vを特に意識する必要はありません。

C:\Users\yuhki>crc start
<省略>
INFO Check DNS query from host...
WARN Failed to query DNS from host: lookup foo.apps-crc.testing: no such host  # このWarningが出ても動作は問題なさそう
INFO Verifying validity of the kubelet certificates...
<省略>
INFO Updating root CA cert to admin-kubeconfig-client-ca configmap...
INFO Starting OpenShift cluster... [waiting for the cluster to stabilize]
INFO Operator openshift-apiserver is degraded
INFO Operator openshift-controller-manager is progressing
INFO All operators are available. Ensuring stability...
INFO Operators are stable (2/3)...
INFO Operators are stable (3/3)...
INFO Adding crc-admin and crc-developer contexts to kubeconfig...
Started the OpenShift cluster.

The server is accessible via web console at:
  https://console-openshift-console.apps-crc.testing

Log in as administrator:
  Username: kubeadmin
  Password: UNHGv-6mXfD-FC4Mb-GgwMb

Log in as user:
  Username: developer
  Password: developer

Use the 'oc' command line interface:
  > @FOR /f "tokens=*" %i IN ('crc oc-env') DO @call %i
  > oc login -u developer https://api.crc.testing:6443
C:\Users\yuhki>

GUIでも「crc start」と同じ操作に相当する 「start」というメニューがあります。 そちらを使った場合、pull secret (はじめの方の手順で、Red Hat のサイトからダウンロードしたクレデンシャルファイル) の入力を求められる事がありました。何度か削除、再インストールして、この手順を書いたのですが、CLIでは今の所、クレデンシャルの入力を要求された事はありませんでした。(GUIがクレデンシャルの入力を求めてきたタイミングで、クレデンシャルを入力せずGUIでの作業を止めて、CLIでの作業に切り替えてもCLIの場合はクレデンシャルを求められませんでした。)

コマンド出力の最後に kubeadmindeveloper というユーザーのパスワードが出力されます。

表示された kubeadmin とそのパスワードで、ログインしてみます。

C:\Users\yuhki>oc.exe login -u kubeadmin -p UNHGv-6mXfD-FC4Mb-GgwMb https://api.crc.testing:6443
Login successful.

You have access to 64 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

C:\Users\yuhki>

問題なさそうです。

通常のOpenShiftでは、kubectlも使えますが、同じように使えるか試して見ます。

C:\Users\yuhki>kubectl get nodes
NAME                 STATUS   ROLES           AGE   VERSION
crc-dzk9v-master-0   Ready    master,worker   11d   v1.22.0-rc.0+894a78b

C:\Users\yuhki>

kubectlも行けるようです。

次に、ブラウザを起動するには以下のコマンドを実行します。

crc console

以下のようにブラウザーが立ち上がりコンソールの URLも自動入力してくれ、ログイン画面が出てくるはずです。

image.png

WSLからCRCにアクセスする

kubectl / oc コマンドを使用する時に Linux の grep 等はよく使うと思います。Windows でも同様な事ができますが、Linux の各種ツールがないと苦しいので、WSLからCRCにアクセスできるようにセットアップしてみます。

WSLから Code Ready Container にアクセスする方法については、そのままではできないようで、以下の GitHubの issueが上がっています。

https://github.com/code-ready/crc/issues/374
https://github.com/code-ready/crc/issues/2641

いろいろ書いているのですが、現在では当てはまらない記述もあるようです。CRC側でどうにかできる問題というよりWindows側の設定を工夫してあげる必要があるようです。

GitHubissue を参考にしつつ、いろいろ実験してみた所、WSL/etc/hosts を編集するだけで、WSLからCRCにアクセスできるようになりました。

WSLからCRCにアクセスできるようにするための設定

以下、手順になります。

WSLの Linux マシン上で /etc/hosts を開きます。

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
<省略>
127.0.0.1       api.crc.testing canary-openshift-ingress-canary.apps-crc.testing        console-openshift-console.apps-crc.testing      default-route-openshift-image-registry.apps-crc.testing downloads-openshift-console.apps-crc.testing    kubernetes.docker.internal      oauth-openshift.apps-crc.testing
<省略>

127.0.0.1 api.crc.testing ....という、CRCが使っているドメインのエントリーがあるので、その部分の127.0.0.1のループバックIPアドレスを、自分のPCのローカルIPに変更します。自分のPCのローカルIPが192.168.11.19の場合、以下のようになります。

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
<省略>
192.168.11.19(←これを書き替えた)       api.crc.testing canary-openshift-ingress-canary.apps-crc.testing        console-openshift-console.apps-crc.testing      default-route-openshift-image-registry.apps-crc.testing downloads-openshift-console.apps-crc.testing    kubernetes.docker.internal      oauth-openshift.apps-crc.testing
<省略>

のようにします。

このエントリーはCRCの停止のタイミングで?書き替えられて元に戻る事があるようなので、以下のように作業をシェル化しておいた方が良いでしょう。私はWSLを開き直すと書き替えが再実行されるように「~/.bash_profile」 に以下を加えました。(ただ、書き換わらない事もあり、いまいち条件が掴めてません)

~/.bash_profile
<省略>
export PASSWORD=<rootのパスワード>
echo $PASSWORD | sudo -S sed -i -e '/api.crc.testing/s/127.0.0.1/<ローカルIPアドレス>/g' /etc/hosts  > /dev/null 2>&1

次に、Windows のドライブにあるCRCが生成した kubeconfigKUBECONFIG にセットします。kubeconfigは、C:\Users\<ユーザー名>\.crc\machines\crc\の下に作られています。これも~/.bash_profile 等に書き加えておくと良いと思います。

$ export KUBECONFIG=/mnt/c/Users/<user名>/.crc/machines/crc/kubeconfig

oc login できるか確認します。

$ oc login -u kubeadmin -p dUL4c-LvQGC-q4nXS-6znZz https://api.crc.testing:6443
Login successful.

You have access to 64 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".

適当にコマンドを打って動作確認してみましょう。ここでは、oc get nodes を実行しています。

$ oc get nodes
NAME                 STATUS   ROLES           AGE   VERSION
crc-dzk9v-master-0   Ready    master,worker   12d   v1.22.0-rc.0+894a78b
$

良く使うコマンド

CRCの起動

crc start

CRCの停止

crc stop

CRCの状態の確認

crc status

デフォルトのブラウザでOpenShiftのコンソールを開く

crc console

マニア向けの情報

CRCのデフォルトで起動しているCluster Operatorの一覧
$ oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
authentication                             4.9.0     True        False         False      10h
config-operator                            4.9.0     True        False         False      12d
console                                    4.9.0     True        False         False      10h
dns                                        4.9.0     True        False         False      10h
etcd                                       4.9.0     True        False         False      12d
image-registry                             4.9.0     True        False         False      10h
ingress                                    4.9.0     True        False         False      12d
kube-apiserver                             4.9.0     True        False         False      12d
kube-controller-manager                    4.9.0     True        False         False      12d
kube-scheduler                             4.9.0     True        False         False      12d
machine-api                                4.9.0     True        False         False      12d
machine-approver                           4.9.0     True        False         False      12d
machine-config                             4.9.0     True        False         False      12d
marketplace                                4.9.0     True        False         False      12d
network                                    4.9.0     True        False         False      12d
node-tuning                                4.9.0     True        False         False      10h
openshift-apiserver                        4.9.0     True        False         False      51s
openshift-controller-manager               4.9.0     True        False         False      10h
openshift-samples                          4.9.0     True        False         False      12d
operator-lifecycle-manager                 4.9.0     True        False         False      12d
operator-lifecycle-manager-catalog         4.9.0     True        False         False      12d
operator-lifecycle-manager-packageserver   4.9.0     True        False         False      3m14s
service-ca
$

VMware上に通常インストールした 4.8.10OpenShift と比較すると以下の Cluster Operator がありませんでした。

baremetal
cloud-credential
cluster-autoscaler
insights
csi-snapshot-controller
kube-storage-version-migrator
monitoring
storage

PVの取り扱い

事前に100GiPVが30個作られていました。これらをPVCを通して使用する事になりそうです。
PVのうち一つは、OpenShiftに付属しているContainer Registryに既に使用されていました。

$ oc get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                                 STORAGECLASS   REASON   AGE
pv0001   100Gi      RWO,ROX,RWX    Recycle          Bound       openshift-image-registry/crc-image-registry-storage                           12d
pv0002   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0003   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0004   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0005   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0006   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0007   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0008   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0009   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0010   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0011   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0012   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0013   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0014   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0015   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0016   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0017   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0018   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0019   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0020   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0021   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0022   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0023   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0024   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0025   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0026   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0027   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0028   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0029   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d
pv0030   100Gi      RWO,ROX,RWX    Recycle          Available                                                                                 12d

Cluster Monitoringの有効化 (Memory富豪向け)

仮想マシンに割り当てる Memory を 14GiB に増やす事でさらに Cluster Monitoring を使用する事ができます。
(14GiB以下だと設定をしても Warningで仮想マシンが起動しません)

Cluster Monitoring を有効化する

crc config set enable-cluster-monitoring true

仮想マシンへの Memory の割り当てを 14 GiB に増やす

crc config set memory 14336

設定の確認

C:\Users\yuhki>crc config view
- consent-telemetry                     : no
- enable-cluster-monitoring             : true
- memory                                : 14336

C:\Users\yuhki>

仮想マシンを再起動します。

$ oc get co | grep monitoring
monitoring                                 4.9.0     True        False         False      12m

monitoring の Cluster Operator が稼働している事がわかります。
projectopenshift-monitoring に移動して Cluster Monitoring 用の Podが起動しているか確認します。

$ oc project openshift-monitoring
Now using project "openshift-monitoring" on server "https://api.crc.testing:6443".
$ oc get pods
NAME                                           READY   STATUS    RESTARTS      AGE
alertmanager-main-0                            5/5     Running   0             13m
cluster-monitoring-operator-55c84d8bc5-fgq4h   2/2     Running   2 (13m ago)   14m
grafana-7bddb8d546-xrccg                       2/2     Running   0             13m
kube-state-metrics-5f6567c8f8-vh5jc            3/3     Running   0             13m
node-exporter-szgqm                            2/2     Running   0             13m
openshift-state-metrics-8f874c588-f42mq        3/3     Running   0             13m
prometheus-adapter-69dcbc4f56-x9hdd            1/1     Running   0             13m
prometheus-k8s-0                               7/7     Running   0             13m
prometheus-operator-74dddf98cc-hdkct           2/2     Running   1 (13m ago)   13m
telemeter-client-b7f885cc4-rg5nw               3/3     Running   0             13m
thanos-querier-66957b9966-v8qbt                5/5     Running   0             13m
$

Cluster Montirong用のPodが起動しています。

遭遇したエラーと解決した方法

エラー・ケース1

現象 :CRCのVMが中々起動しない。(VMが作られない)

原因:Cドライブの容量不足
CRCのインストーラー起動時に、インストールディレクトリとして、D:ドライブD:\Program Files\CodeReady Containers\ を指定したが、C:\Users\<ユーザー名>\.crc の下にVMcrc.vhdxファイル等が作成される。

なので、例えD:ドライブ にインストールしようとしてもC:ドライブの容量が足りないとVMが作成されない。

D:\Program Files\CodeReady Containers\にも crc.vhdxは配置されるが、Hyper-Vコンソールから作成されたCRCVMを確認すると実際に参照されている仮想マシンファイルは、C:\Users\<ユーザー名>\.crc配下に配置されたcrc.vhdxである。

image.png

ドキュメントピクチャ等はDドライブに移動済みで(これらはフォルダのプロパティでパスを変更するだけで簡単に移動できる)、さらにそれ以外の C:\Users\ 配下のディレクトリを移動させるのは大変だったので、CドライブSSDを大きい容量に換装する事で解決しました。

課金で解決。

エラー・ケース2

現象
oc login 時に「error: converting to : type names don't match (Unknown, RawExtension), and no conversion 'func (runtime.Unknown, runtime.RawExtension) error' registered.」とエラーがでる。

C:\Users\yuhki>oc.exe login -u kubeadmin -p qCk7i-5LZGS-A87Uo-jd4Hb https://api.crc.testing:6443
Login successful.

You have access to 64 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "openshift-ingress".
error: converting  to : type names don't match (Unknown, RawExtension), and no conversion 'func (runtime.Unknown, runtime.RawExtension) error' registered.

C:\Users\yuhki>mkdir tmp

原因:これは個人的な環境の問題だった。
ググると kubectl とクラスターのバージョンがマッチしていないと同じエラーが起きる事があるらしいので、別のバージョンのocコマンドを参照しているのでは?と当たりをつけて検索。

丁度コマンドを実行したディレクトリに昔インストールした oc.exe コマンドが残っていた。古い oc.exeコマンドを削除(rename) する事で解決。

図: rename された oc.exe
image.png

ちなみにCRCによってインストールされる oc.exe は、C:\Users\<ユーザー名>\.crc\bin\oc\oc.exe とその近くの cache と名前が付いたディレクトリに存在している。CRCのインストーラーを起動した時にインストールディレクトリとして指定した D:\Program Files\CodeReady Containers\ のディレクトリには存在していなかった。

エラー・ケース3

現象:GUIの「Status and Logs」を確認すると以下のエラーがログに大量に表示されている。
image.png

原因:多分、問題無い?

C:\Users\<ユーザー名>\.crc\crdc.log を見ると同様のエラーが記録されているものの、タイムスタンプを見る限り、テンポラリーのエラーで間欠的に出る感じで、動作的には問題があるように見えない。

time="2021-10-25T15:32:45+09:00" level=error msg="net.Dial() = dial tcp 192.168.122.1:16509: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond."
2
3
0

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
2
3