ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

minikubeを利用9-minikubeでqemu使う

2023年はGKEから派生して、ローカルmacの中で minikube使い始めた。 先月までのminikubeのクラスタは、hyperkitの中で独自のlinuxが動いて、dockerコンテナとしてkubernetesのコントロールプレーンが動いてた。 2024年6月ぐらいからhyperkitが非推奨になったので、脱却して qemuを使い始める 。 今年の下期にm4のmacmini仕入れて使いたいから、qemuで練習始めたる。 minikubeのドライバ指定と、qemu2用のサービス指定 最初にminikubeアンインストールしてhyperkitの入ってた領域も潰した。 もう1回minikubeインストールしてqemuを仮想マシン指定して使い始める。 minikubeのサイトに指定の方法が書いてある。 qemu | minikube minikube.sigs.k8s.io 名前はqemuってあるけど、実際はqemu2をドライバに指定する。 前に一回やってみた けど深くは調べずにあきらめた。 nari@gvis-mac script % minikube config set driver qemu2 よー見たら、socket_vmnetってのを使わなアカンらしい。 え、これrootで動かさなあかんのか。 そういえば、ubuntu24をqemuでbridgeネットワーク使って動かすときには、特権いるみたいなこと書いてるところあったっけ。 ログ捨てたけど、これやっとかんとディスクのマウントがうまくいかんかったし、「トンネリングにいるで」ってある。 とりあえずbrewでインストールやっとく。 1 2 brew install socket_vmnet brew tap homebrew/services せっかくスクリプト化してんのにパスワード打たなアカンのかぁ。 この時点でhyperkitのほうがええなぁ。 クラスタ作り替えのスクリプト 普段はクラスタのバージョンあげるためのスクリプトを作って用意してる。 このへん で手動でやってることをまとめた処理。 それを少しいじって、qemuでのクラスタを用意する。 処理の後半でpv/configmap/serviceの定義もやってる。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 ## ------------------------------------------------------------------------- ## Script Name : 300_minikubeClusterRecreate.sh ## Created by : T.Naritomi ## on : 2023.08.26 ## Updated by : 2024.06.23 ## on : ## Parameters : ## Return Code : 0=Normal End ## Comments : change driver hyperkit -> qemu2 ## ------------------------------------------------------------------------- ## ---define---------------------------------------------------------------- EXEC_HOME=/Users/nari/Documents/personal/script # Execute Home directory MINK_HOME=/Users/nari/Documents/personal/minikube # minikube Home directory LOG_FILE=/Users/nari/Documents/personal/log/300_minikube.log # Log file NEWEST_VER=`minikube config defaults kubernetes-version | head -1 | awk '{ print $2}'` GVIS_CPU=4 GVIS_MEM=6000 GVIS_DSK=90GB ⭐️50GBにしてたのを、qcow2でどうなるかやってみたかったから容量増やした GVIS_DRV=qemu2 ⭐️書き換えた ## ---detail---------------------------------------------------------------- echo '---newest version---' echo ${NEWEST_VER} read -p "--- minikube Data save ready ? ---(y/N):" yn case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac read -p "--- minikube Recreate cluster ready ? ---(y/N):" yn case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac echo '---Recreate start---' rm -f ${LOG_FILE} echo ${LOG_FILE} minikube delete --purge --all ⭐️クラスタ完全削除 ## add socket_vmnet because use qemu2 HOMEBREW=$(which brew) && sudo ${HOMEBREW} services restart socket_vmnet ⭐️sudoせなアカン残念な行、再実行することあるからrestart指定 minikube config set cpus ${GVIS_CPU} minikube config set memory ${GVIS_MEM} minikube config set disk-size ${GVIS_DSK} minikube config set driver ${GVIS_DRV} echo -------- `date +%F_%T` -------- >> ${LOG_FILE} minikube config view >> ${LOG_FILE} minikube delete >> ${LOG_FILE} minikube start --kubernetes-version ${NEWEST_VER} \ --driver=${GVIS_DRV} \ --network socket_vmnet >> ${LOG_FILE} ## --mount --mount-string ${MINK_HOME}/:/minikubeMac >> ${LOG_FILE} ⭐️マウントしたらクラスタ落ちることあるからやめとく cat ${LOG_FILE} sleep 20 ⭐️kubernetesクラスタが安定するまでちょっと一息、こっから下のapplyしてる箇所で永続化領域作ったり他の定義も作ってもらいましょ kubectl config get-contexts kubectl get pod -n kube-system kubectl apply -f ${MINK_HOME}/gvis-PersistentVol-mariadb1011.yaml kubectl apply -f ${MINK_HOME}/gvis-PersistentVol-mariadb1011conf.yaml kubectl apply -f ${MINK_HOME}/gvis-PersistentVol-sv_django-ssl_certs.yaml kubectl apply -f ${MINK_HOME}/gvis-PersistentVol-sv_django-uwsgi-nginx.yaml kubectl apply -f ${MINK_HOME}/gvis-PersistentVol-ubun.yaml kubectl apply -f ${MINK_HOME}/mariadb11-txt-configmap.yaml kubectl apply -f ${MINK_HOME}/sv-django-service.yaml kubectl apply -f ${MINK_HOME}/sv-https-portal-service.yaml kubectl apply -f ${MINK_HOME}/sv-mariadb1011-service.yaml echo -------- `date +%F_%T` -------- >> ${LOG_FILE} minikube dashboard & sleep 300 ⭐️何度かやって必要って思った ls -lh ~/.minikube/machines/minikube ⭐️目で見て確認 ## minikube cp ${MINK_HOME}/nariDockerDat/gvis-pv-ubun.tar.gz /data/ ⭐️ここでコピー処理するとクラスタ停止してまう exit $? qemuでminikube発進 マシンを作ってる途中のファイルを確認してみる。 ...

 ⭐️

qemuでubuntu

brewで定期更新してたら、hyperkitが非推奨って出た。 minikubeで使ってるから次の手考えはじめる。 appleがarmのcpu出しはじめたときから、いつかはこの日が来るかなって思ってた。 hyperkitはintel系のcpuでvm動かすためにあるから、arm載せてるマシンでは動かん。 m4のmacmini出たら買うつもりやから、今年あたりqemuでminikube動かす練習し始める。 どんな感じか試すため、qemuをmacに入れてubuntu動かしてみる。 だいたいの動き方つかんだら、qemuベースのminikubeに踏み込む。 hyperkitとminikubeアンインストール いったんhyperkit外してqemuやってみた。 hyperkitの代わり探せっていうメッセージはこんな感じ。 1 2 3 4 5 6 7 8 9 nari@gvis-mac ~ % brew doctor Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks! Warning: Some installed formulae are deprecated or disabled. You should find replacements for the following formulae: hyperkit nari@gvis-mac ~ % hyperkitは1年ほど使ったな。 ...

minikubeを利用8-dockerとkubernetesの使いこなし

dockerはもう5年以上、GKEのkubernetesとminikubeは今年の春から使い始めた。 普段使う開発言語はdjango(python)なんやけど、どう扱えば改善・テスト・本番反映・利用がうまくいくかってことを考えてみた。 ちょうどインボイス対応でdjangoの処理書き換えるから、そのための消費税計算機能とかもつけるし。 開発はやっぱりローカルPCでのdocker 自分にはこれが一番しっくりくる。 本番環境のGCPにあるVMもこれと同じ。 フロントエンドマシンはmacやから、ubuntu22でssdドライブに置いたvmdkのデータ領域をsamba共有させてvscodeで編集。 vscodeのremote developmentって方法もあるけど、シンプルやなかったから使ってない。 1 2 3 4 5 6 7 8 9 10 11 12 13 +-local ubuntu22 linux VM-----+ | +-docker---------+ +-vmdk-+ | | | +-container-+ | | data | | | | | Django | | | d1 | | | | +-----------+ | +------+ | | | +-container-+ | | | | | | | mariadb | | | d2 | | | | +-----------+ | +------+ | | | +-container-+ | | | | | | | xrdp-ubu22| | | d3 | | | | +-----------+ | +------+ | | +----------------+ | +-----------------------------+ GKE/EKSのkubernetesで動かすのはどんなとき? s3にデータを溜め込んでるとか、機械学習で大量のデータを作ってpvにcsv置いてるとか、スケーラブルなサーバ運用したいならGKE/EKS使えばええ。 ...

 ⭐️

minikubeを利用7-細かい不具合

朝起動して昼頃まで放置したり、時々xrdpのpodへ繋いでPodのデータベースをdjangoアプリ越しに見つけた細かい不具合がある。 なんでかわからんけどエラーになってたり、こうなったらええなぁってことをメモ。 まだkubernetesの理解は深くないから、何年かしたら自力解決できるかもしれん。 ポートフォワードでエラー出る たまにポートフォワードができてないときある(dbつながらんとか)。 httpsのポートフォワードがたまに勝手にエラーになって止まってる(djangoアプリを拾ってるhttpsのpodにつながらんとか)。 1 2 E0829 07:23:36.624039 3267 portforward.go:409] an error occurred forwarding 30443 -> 443: error forwarding port 443 to pod e3445d2af9dd86a800da92e7608887459fafbd9ccfc13db409acbef081a79769, uid : exit status 1: 2023/08/28 22:23:36 socat[11858] E write(5, 0x1109000, 24): Broken pipe error: lost connection to pod なんでBroken pipeになるんやろな。 いきなり表示されるし、まったく発生せんときもある。 minikube特有のポートフォワード使わずに、ingressってのを学んで使ったらええんかなぁ。 できたらええなと思うこと hyperkitの永続化領域(/data)を直接macで開けんからvscodeでdjangoのソースを修正しながら動作確認できん 👉ローカルlinuxのdocker環境はsambaで共有してて、macからvscodeでいじってる。 hyperkitはubuntuでもredhatでもないし、samba入れる方法がわからん(どっかに書いてるんかなぁ) 👉aptとかdnfあらへんし、gcc入ってたらmakeできるかもっと思ったけど、gccも入ってへん。そもそもkubernetesのバージョン上げるためにクラスタ作り直したらhyperkitも吹っ飛ぶから毎回設定することになる。そんなんやってられへん。 コントロールプレーンをdockerコンテナで動かしてるんやから、hyperkitやなくてノードもコンテナで動かしてくれたらええのに 👉軽いlinuxをコンテナとして動かしたら、kubernetesのワーカーノードにしたとき性能劣化しまくるんかなぁ virtualboxとかvmware fusionとか動きが重たいvm使うのイヤ。 秋から来年にかけて m3のmacmini出てくれるかもしれん って記事があった。 今のintel-macとはオサラバして別のアプローチやってみるかなぁ。 今年にm2出てたのに、もう次の出すんやなぁ。 m2のmac miniは売値高いんやけど、メモリ少ないねん。 後でメモリ追加できんらしいし、やっかいやなぁ。 ...

minikubeを利用6-クラスタのバージョンアップ

前回まで でdjangoアプリの色合い変更まで作ったので、その続き。 2023年6月にはkubernetesのバージョンは1.27が出てたけど、minikubeで使えるクラスタは1.26やった。 7月3週目ぐらいにbrewの更新見てたら1.27が使えるようになってた。 kubernetesの親バージョンリリースがあったら、minikubeには1ヶ月後にリリースがあるんかなぁ。 その後、何回かminikubeのバージョン上げた。 2024年5月中にminikube v1.33.1、Docker 26.0.2 で Kubernetes v1.30.0 2024年4月末にminikube v1.33.0、Docker 26.0.1 で Kubernetes v1.30.0 2023年11月にminikube v1.32.0、Docker 24.0.7 で Kubernetes v1.28.3 2023年8月にminikube v1.31.2、Docker 24.0.4 で Kubernetes v1.28.0-rc.1 brewで見てると定期的なアップデートがある minikubeが使えるkubernetesのバージョンはコマンドラインで確認できる。 brewでkubectlやminikubeのバージョンが上がったのを見たので、もしかしてバージョンあげれるかもって使えるバージョンの確認やってみた。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 nari@gvis-mac script % minikube config defaults kubernetes-version | more * v1.27.3 * v1.27.2 * v1.27.1 * v1.27.0 * v1.27.0-rc.1 * v1.27.0-rc.0 * v1.27.0-beta.0 * v1.27.0-alpha.3 * v1.27.0-alpha.2 * v1.27.0-alpha.1 * v1.26.6 * v1.26.5 * v1.26.4 * v1.26.3 * v1.26.2 * v1.26.1 * v1.26.0 * v1.26.0-rc.1 * v1.26.0-rc.0 * v1.26.0-beta.0 * v1.26.0-alpha.3 * v1.26.0-alpha.2 * v1.26.0-alpha.1 * v1.25.11 :(中略) これ発見したときのkubectlのバージョンはこんな感じ。 ...

 ⭐️