DockerDesktop(Kubernetes) + WSL環境構築
ローカルPCにDcokerDesktopとWSLをインストールし、
Kubernetesをローカル環境で使ってみよう!
■環境
ローカルPCのOS:Windows 10 Pro(Edition:1909)
Docker Desktopバージョン:2.4.0.0(Kubernetes1.18.8)
WSL種別:Ubuntu 18.04 LTS
環境構築のため、Docker DesktopとWSLをインストールする必要があるが、
先にローカルPCにて以下の設定をしないといけない。
●Hyper-V有効化、Linux用Windowsサブシステム有効化
ローカルPCにてスタートボタンをクリックし、設定画面を開いて以下に移動する
「アプリ」⇒「プログラムと機能」⇒「Windowsの機能の有効化または無効化」
リストからHyper-VとLinux用Windowsサブシステムを有効化する。
(再起動を求められるので、再起動しましょ)
●vmcompute.exeのCFG設定
ローカルPCにてスタートボタンをクリックし、設定画面を開いて以下に移動する
「更新とセキュリティ」⇒「Windowsセキュリティ」⇒「アプリとブラウザの制御」⇒「Exploit protection の設定」⇒「プログラム設定」
vmcompute.exeの編集画面から「制御フローガード(CFG)」⇒「厳密なCFGを使用する」のチェックを外す。
(再起動を求められるので、再起動しましょ)
ここまで出来たら、次にDocker DesktopとWSLをインストールする。
●Docker Desktopインストール
今回はKubernetes1.18を使いたいので、1.18が対応されているDocker Desktop 2.4.0.0をダウンロードしてインストールしよう
ダウンロード:Docker Desktop2.4.0.0
インストールの時やインストール後、バージョンアップ画面が出たら、Skipをする。
Docker Desktopバージョンによって対応されているkubernetesのバージョンが異なるので、アップデートしたらダメ!
インストール時に以下の画面が出たら、「Install required Windows compomnets for WSL 2」を外してインストールする。
そもそもWindows 10 Pro(Edition:1909)でWSL2は使えない。
WSL2を使うためにはbuild editionが2004以上のものにアップデートしないといけないし、
WSL2を使ってみたけど、なんか怪しい気がするのでここでWSL2は使わない。
インストール完了後、勝手にDocker Desktopが起動されるはずだが、
じゃない場合はデスクトップからDocker Desktopアイコンをクリックして起動させる。
kubernetes使用のため、次の画面でSettingsボタンをクリックして諸々設定を行う。
General画面で以下の項目のチェックを外す。
●automatically check for updates
●Use the WSL 2 based engine
Kubernetes画面で以下の項目のチェックを入れる。
●Enable Kubernetes
「Apply & Restart」をクリックして、以下の画面が出たら、installをクリックしてkubernetesをインストールする。
Kubernetes初期化のため、Docker Desktopが色々頑張っているので、終わるまで待つ!
以下の画面のように「Start a Kubernetes single-node cluster when starting Docker Desktop.」が表示されたら、終わり~
●WSLインストール
WSLをローカルPCに入れなくても実はWindowsのcliでDocker Desktopで設置したkubernetesの操作はできるが、
Windows野郎のcliではできないことが多すぎて個人的には使い勝手が悪すぎる
なので、Linux様のcliが使えるwslをインストールするぞ!
デスクトップの検索バーにてstoreを検索してMicrosoft Storeを実行する。
Store画面にて検索バーから「wsl」を検索する。
ここではUbuntu 18.04 LTSを使うので、該当画面をクリックしよ
インストールボタンをクリックしてインストールする。
Mircrosoftのログイン画面が表示されるけど、ログインしなくてもいいので、ログイン画面は閉じる。
インストールが終わったら、次の画面で「起動」ボタンをクリックしてWSLを起動する。
起動後、しばらく待つとユーザー作成画面が表示されるので、好みのユーザー名でユーザーを作成する
ユーザー作成が終わって、以下の画面みたいに表示されたら、WSL使用が可能になる。
●Kubernetesの初期設定
ここからの作業はすべて設置したWSLにてroot権限で行う
#root権限に変更
sudo su -
# 一応、最新に更新
root@wsl:~# apt-get update
# cliでjqが使いたいので、jqインストール
root@wsl:~# apt-get -y install jq
# kubectlコマンドのリンク作成
# Docker Desktop設置時にkubectlコマンドも設置されるので、windowsのkubectlを使う
root@wsl:~# ln -s /mnt/c/'Program Files'/Docker/Docker/resources/bin/kubectl.exe /usr/local/bin/kubectl
# dockerイメージ作成もしたいので、dockerコマンドのリンク作成
# Docker Desktop設置時にdockerコマンドも設置されるので、windowsのdockerを使う
root@wsl:~# ln -s /mnt/c/'Program Files'/Docker/Docker/resources/docker.exe /usr/local/bin/docker
# kubectlのバージョン確認
root@wsl:~# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-13T16:12:48Z", GoVersion:"go1.1
3.15", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-13T16:04:18Z", GoVersion:"go1.1
3.15", Compiler:"gc", Platform:"linux/amd64"}
root@wsl:~# kubectl get all -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-66bff467f8-rcb9z 1/1 Running 1 116m
kube-system pod/coredns-66bff467f8-xlvmg 1/1 Running 1 116m
kube-system pod/etcd-docker-desktop 1/1 Running 1 115m
kube-system pod/kube-apiserver-docker-desktop 1/1 Running 1 115m
kube-system pod/kube-controller-manager-docker-desktop 1/1 Running 1 114m
kube-system pod/kube-proxy-pzsrk 1/1 Running 1 116m
kube-system pod/kube-scheduler-docker-desktop 1/1 Running 1 115m
kube-system pod/storage-provisioner 1/1 Running 2 114m
kube-system pod/vpnkit-controller 1/1 Running 1 114m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 116m
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 116m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 116m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/coredns 2/2 2 2 116m
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/coredns-66bff467f8 2 2 2 116m
# nginx ingressを使うため、nginx ingress controller設置
root@wsl:~# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/cloud/deploy.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
configmap/ingress-nginx-controller created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
service/ingress-nginx-controller-admission created
service/ingress-nginx-controller created
deployment.apps/ingress-nginx-controller created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
serviceaccount/ingress-nginx-admission created
# nginx ingress controller配置確認
root@wsl:~# kubectl get all -n ingress-nginx
NAME READY STATUS RESTARTS AGE
pod/ingress-nginx-admission-create-97cx2 0/1 Completed 0 80s
pod/ingress-nginx-admission-patch-ccrd4 0/1 Completed 0 80s
pod/ingress-nginx-controller-c96557986-bjkcd 0/1 Running 0 90s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ingress-nginx-controller LoadBalancer 10.102.159.223 localhost 80:31924/TCP,443:31964/TCP 90s
service/ingress-nginx-controller-admission ClusterIP 10.108.94.107 <none> 443/TCP 90s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/ingress-nginx-controller 0/1 1 0 90s
NAME DESIRED CURRENT READY AGE
replicaset.apps/ingress-nginx-controller-c96557986 1 1 0 90s
NAME COMPLETIONS DURATION AGE
job.batch/ingress-nginx-admission-create 1/1 21s 90s
job.batch/ingress-nginx-admission-patch 1/1 26s 90s
root@wsl:~#
これで、環境構築は完了!
デプロイしたいアプリケーションに合わせてDocker Imageやyamlを作成してデプロイしてみよう!
Author And Source
この問題について(DockerDesktop(Kubernetes) + WSL環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/masaru_sakamoto/items/05eea5f786d377683ea3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .