unix/linuxは1番目のプロセスが起動してから、ツリー構造でいっぱい処理が起動してく。花火がパーっと上がる感じ。

その1つ1つを追いかけるのはけっこうたいへん。 見落としそうにもなるし。

なるべく直観的に、なるべく素早く状況をつかむためのスクリプト。 sshしたらほぼ必ず結果見る。

結論

sshしたコマンドラインでonlchkって入力すると、サービスが動いているかどうかを教えてくれて、そのバージョンも拾う。

 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
nari@nafslinux-ubu22:/gvis/script/proc$ onlchk
... linux CHECK END      Description: Ubuntu 22.04.1 LTS
... httpd CHECK END      Server version: Apache/2.4.52 (Ubuntu)
... smb CHECK END        Version 4.15.9-Ubuntu
... docker CHECK END     Docker version 20.10.17, build 100c701
=== Google STATUS===
...rtx1210-status > 
...rtx1210-status   Current status is disabled.
...Google -status
...Google -status jelly-fslinux us-east1-b e2-standard-8 192.168.100.218 xx.xx.xx.xx RUNNING
=== SSH Tunnel STATUS===
nafslinux.intra.gavann-it.com:43306:gcp-gvis-dklinux.intra.gavann-it.com:3306
nafslinux.intra.gavann-it.com:50022:gcp-gvis-dklinux.intra.gavann-it.com:20022
nafslinux.intra.gavann-it.com:53389:gcp-gvis-dklinux.intra.gavann-it.com:23389
nafslinux.intra.gavann-it.com:63389:gcp-gvis-dklinux.intra.gavann-it.com:33389
=== Docker Container STATUS===
docker-cl_red8-1: redhat:8gvis Up 2 hours
docker-cl_red9-1: redhat:9gvis Up 2 hours
docker-cl_ubu22-1: ubu:22gvis Up 2 hours
docker-sv_django-1: sv_django:4 Up 2 hours
docker-sv_https-portal-1: steveltn/https-portal:1 Up 2 hours
docker-sv_mariadb-1: mariadb:10.5.7 Up 2 hours
docker-sv_php74-1: docker_sv_php74 Up 2 hours
docker-sv_web118-1: nginx:1.18.0-alpine Up 2 hours
svldap-admin: osixia/phpldapadmin:latest Up 2 hours
svldap-server: osixia/openldap:latest Up 2 hours
nari@nafslinux-ubu22:/gvis/script/proc$

自分にとってはローカルlinuxは母艦みたいなもんで、その役割状態が今どうなってるのかがわかるようになってて欲しい。

大昔にhp-uxで作ったものがベース。 業務で作ったものを持ち出すわけにはいかなかったので、構成を思い出しながら自分用にsolarisで最初は作った。

その後linuxに移植してからプロセス確認以外の機能を追加して今まで使ってる。

OS変えたり、バージョン上げたりすると、コマンドのオプションとか、awkで表示させるフィールド番号とか、少しずつ微調整が必要。

チェック対象はlstって引数渡すと表示してくれる。

それぞれのサービスが生きていると判断できるためのプロセス名を、別ファイルで定義する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
nari@nafslinux-ubu22:/gvis/script/proc$ onlchk lst

### Online Check Target List

LINUX
HTTPD
SMB
DOCKER

nari@nafslinux-ubu22:/gvis/script/proc$

dockerコンテナ使う前はいっぱい書いてた。 コンテナのおかげでグッと減ってくれてる。

onlchkの本体

chkって処理を呼び出してサービス状態を表示させてから、別処理で作ってるGoogle cloud接続状態表示・sshトンネル状態・起動コンテナ一覧を表示させてる。

 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
nari@nafslinux-ubu22:/gvis/script/proc$ cat onlchk
#!/bin/sh

## -------------------------------------------------------------------------
## Script Name  :
##  Created by  : T.Naritomi
##          on  : 2007.12.24
##  Updated by  : 2014.04.05
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------
#--- Common Variables -----------------------------------------
LANG=C
SC_NAME=`/bin/basename $0`          # Script Name
SC_HOME=`/usr/bin/dirname $0`       # Script Home directory

#--- Local Variables ------------------------------------------
CONF=$SC_HOME/$SC_NAME.conf
RC=0

#--- Parameter Check ------------------------------------------
case    $1 in
        "lst")
                echo ""
                echo "### Online Check Target List"
                echo ""
                cat $CONF | grep '@(1)' | cut -b 6- | tr [a-z] [A-Z]
                echo ""
                exit 0
                ;;
        *)
                if      [ "$1" ]; then
                        echo ""
                        echo "usase : $0 [lst]"
                        echo ""
                        exit 1
                fi
                ;;
esac

#--- Process Check --------------------------------------------
RC=0
cat     $CONF | grep '@(1)' | cut -b 6- | \
while   read TARGET; do
        ##echo "sc_home=" $SC_HOME
        $SC_HOME/chk $TARGET
done

#--- Google Status -------------------------------------------
echo === Google STATUS===
cat /gvis/script/gcp/TunnelStatusRes.txt

#--- SSH Tunnel status ---------------------------------------
echo === SSH Tunnel STATUS===
ssh -V
ps -ef | grep ssh | grep gvis | awk '{print $29 "\n" $31 "\n" $33 "\n" $35 }'

#--- DockerContainer Check ------------------------------------
echo === Docker Container STATUS===
docker ps --format "{{.Names}}: {{.Image}} {{.Status}}" | sort

exit 0

nari@nafslinux-ubu22:/gvis/script/proc$

onlchkから呼ばれるchk

こんな感じ。

 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
nari@nafslinux-ubu22:/gvis/script/proc$ cat chk
#!/bin/sh

## -------------------------------------------------------------------------
## Script Name  :
##  Created by  : T.Naritomi
##          on  : 2007.12.20
##  Updated by  :
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------

LANG=C
SC_NAME=`/bin/basename $0`          # Script Name
SC_HOME=`/usr/bin/dirname $0`       # Script Home directory
CONF=${SC_HOME}/${1}_chk.conf
#TARGET=`echo $1 | tr [a-z] [A-Z]`
TARGET=$1

#--- Config File Check ----------------------------------------
if      [ ! -f $CONF ]; then
        echo ""
        echo "$CONF not found ... or invalid option [ $1 ]"
        echo ""
        exit 1
fi

#--- Parameter Check ------------------------------------------
case    $2 in
        "lst")
                echo ""
                echo "### $TARGET Check Process List"
                echo ""
                cat $CONF | grep '@(1)' | cut -b 6-
                echo ""
                exit 0
                ;;
        *)
                if      [ "$2" ]; then
                        echo ""
                        echo "usase : $0 [lst]"
                        echo ""
                        exit 1
                fi
                ;;
esac
#--- Process Check --------------------------------------------
RC=0
cat $CONF | grep '@(1)' | cut -b 6- | awk '{ print $1}' | \
while   read PROCESS; do
        PS_RC=`ps aux | awk ' {print $11,$12} ' | grep "$PROCESS" | grep -v grep | wc -l`
        if      [ $PS_RC -eq 0 ]; then
                echo    "### ENVIRON[`hostname`] : $TARGET      $PROCESS" \
                        "PROCESS_NOT_FOUND" ;
        fi
done

#--- EXIT Status Check ----------------------------------------
VER=`tail -1 $CONF`
echo "... $TARGET CHECK END     " `${VER} | head -1`
exit

nari@nafslinux-ubu22:/gvis/script/proc$

unixはps -efって書いてたけどlinuxはps auxって書いてる。

unix/linuxでps -efwwって書いたらプロセス名が省略されずに表示される。 jenkinsとかjava使うサービスの引数見たいときに使う(ヒープの確保量とかね)。

状態確認のスクリプトで使うときに長い名前表示は必要ないから淡白にしといていい。

linuxがちゃんと稼働しているかどうかのプロセス確認

昔はinitとsshdとかを確認してた。

そういえばxinetdなんてのもあったな。 メモリ貧乏な時代に、ポートにリクエストがあったら初めてデーモン起動するって動き方してたっけ。intel solarisに突っ込んだとき書いたはず。

ubuntu22としてはsystemd/sshd/cronあたりを確認する。

定義ファイルに候補を書いといて、チェック対象に@(1)って書いておく。 最終行にはそのサービスのバージョンが拾えるコマンドラインを書く。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
nari@nafslinux-ubu22:/gvis/script/proc$ cat linux_chk.conf
#=======================#
# (1)   : Check Process #
# other : No Check      #
#=======================#
@(0) init
@(1) systemd
@(0) usb-storage
@(0) automount
@(1) sshd
@(0) xinetd
@(1) cron
lsb_release -d
nari@nafslinux-ubu22:/gvis/script/proc$

プロセスチェック対象を確認。

1
2
3
4
5
6
7
8
9
nari@nafslinux-ubu22:/gvis/script/proc$ chk linux lst

### linux Check Process List

systemd
sshd
cron

nari@nafslinux-ubu22:/gvis/script/proc$

実際にプロセスチェックさせてたとこ。

1
2
3
nari@nafslinux-ubu22:/gvis/script/proc$ chk linux
... linux CHECK END      Description: Ubuntu 22.04.1 LTS
nari@nafslinux-ubu22:/gvis/script/proc$

もしもプロセスが動いてなかったら、PROCESS_NOT_FOUNDが戻る。

sambaならsmbdとnmbd、apacheならapache2をプロセス確認させるように書いとく。

dockerの場合

1つだけプロセスチェックしてる。 シンプルでええなぁ。

1
2
3
4
5
6
7
nari@nafslinux-ubu22:/gvis/script/proc$ chk docker lst

### docker Check Process List

dockerd

nari@nafslinux-ubu22:/gvis/script/proc$

dockerコンテナ停止してプロセス停止したとき

いったんコンテナ停止してみる。 コンテナ停止は普通に停止してから、普段使ってないoracleとかpostgresqlとか入った全定義でのdocker-compose-ALL.ymlを使って停止させる。

 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
nari@nafslinux-ubu22:/docker$ cat ./dockerStop.sh
#!/bin/sh

## -------------------------------------------------------------------------
## Script Name  :dockerStop.sh
##  Created by  : T.Naritomi
##          on  : 2019.08.07
##  Updated by  :
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------

## ---detail----------------------------------------------------------------

DOCKER_ROOT=/docker

cd ${DOCKER_ROOT}
/usr/local/bin/docker-compose stop

cp -p docker-compose-ALL.yml docker-compose.yml
/usr/local/bin/docker-compose stop

exit
nari@nafslinux-ubu22:/docker$
nari@nafslinux-ubu22:/docker$ sh ./dockerStop.sh
[+] Running 10/10
 ? Container docker-cl_red8-1          Stopped                                      10.5s
 ? Container docker-sv_https-portal-1  Stopp...                                      3.7s
 ? Container docker-sv_web118-1        Stopped                                       0.6s
 ? Container docker-cl_red9-1          Stopped                                      10.4s
 ? Container docker-cl_ubu22-1         Stopped                                       0.6s
 ? Container docker-sv_php74-1         Stopped                                       0.2s
 ? Container svldap-admin              Stopped                                       0.6s
 ? Container svldap-server             Stopped                                       0.2s
 ? Container docker-sv_django-1        Stopped                                      10.2s
 ? Container docker-sv_mariadb-1       Stopped                                       1.0s
[+] Running 10/0
 ? Container docker-sv_web118-1        Stopped                                       0.0s
 ? Container docker-cl_red8-1          Stopped                                       0.0s
 ? Container docker-cl_ubu22-1         Stopped                                       0.0s
 ? Container docker-sv_https-portal-1  Stopp...                                      0.0s
 ? Container docker-cl_red9-1          Stopped                                       0.0s
 ? Container svldap-admin              Stopped                                       0.0s
 ? Container docker-sv_php74-1         Stopped                                       0.0s
 ? Container svldap-server             Stopped                                       0.0s
 ? Container docker-sv_django-1        Stopped                                       0.0s
 ? Container docker-sv_mariadb-1       Stopped                                       0.0s
nari@nafslinux-ubu22:/docker$

このときにonlchkしてみるとコンテナは全停止してるので1つも見えない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
nari@nafslinux-ubu22:/docker$ onlchk
... linux CHECK END      Description: Ubuntu 22.04.1 LTS
... httpd CHECK END      Server version: Apache/2.4.52 (Ubuntu)
... smb CHECK END        Version 4.15.9-Ubuntu
... docker CHECK END     Docker version 20.10.17, build 100c701
=== Google STATUS===
...rtx1210-status >
...rtx1210-status   Current status is disabled.
...Google -status
...Google -status jelly-fslinux us-east1-b e2-standard-8 192.168.100.218 104.196.198.226 TERMINATED
=== SSH Tunnel STATUS===
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
=== Docker Container STATUS===
nari@nafslinux-ubu22:/docker$

次はdocker本体停止する。こっちはsystemctl使うからrootで動かす。

そういえばnkfなんてのもまだ入ってたな。もういらんかも。

 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
root@nafslinux-ubu22:/gvis/script# cat 301_dockerStop.sh
## -------------------------------------------------------------------------
## Script Name  :
##  Created by  : T.Naritomi
##          on  : 2018.11.23
##  Updated by  :
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------
###LANG=C
EXEC_HOME=/gvis/script                  # Execute Home directory

LOG_OUTPUTDIR=/gvis/log/300_docker.log

echo ${LOG_OUTPUTDIR}
echo -n `date +%F_%T_` >> ${LOG_OUTPUTDIR}
systemctl stop docker docker.socket
systemctl status docker | grep 'Active' | nkf -s >> ${LOG_OUTPUTDIR}
echo dockerStop  | nkf -s >> ${LOG_OUTPUTDIR}

exit $?

## ---example---------------------------------------------------------------
##
## -------------------------------------------------------------------------
root@nafslinux-ubu22:/gvis/script# sh ./301_dockerStop.sh
/gvis/log/300_docker.log
root@nafslinux-ubu22:/gvis/script#

停止させたときのエコーバック。

1
2
3
4
5
6
root@nafslinux-ubu22:/gvis/script# tail -4 /gvis/log/300_docker.log
2022-08-13_06:03:47_     Active: active (running) since Sat 2022-08-13 06:03:47 JST; 9ms ago
dockerStart
2022-08-13_06:14:00_     Active: inactive (dead) since Sat 2022-08-13 06:14:00 JST; 5ms ago
dockerStop
root@nafslinux-ubu22:/gvis/script#

ここでonlchkしたらdockerのプロセスあらへん、って答えが戻る。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
nari@nafslinux-ubu22:/gvis/script/proc$ onlchk
... linux CHECK END      Description: Ubuntu 22.04.1 LTS
... httpd CHECK END      Server version: Apache/2.4.52 (Ubuntu)
... smb CHECK END        Version 4.15.9-Ubuntu
### ENVIRON[nafslinux-ubu22] : docker   dockerd PROCESS_NOT_FOUND
... docker CHECK END     Docker version 20.10.17, build 100c701
=== Google STATUS===
...rtx1210-status >
...rtx1210-status   Current status is disabled.
...Google -status
...Google -status jelly-fslinux us-east1-b e2-standard-8 192.168.100.218 104.196.198.226 TERMINATED
=== SSH Tunnel STATUS===
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
=== Docker Container STATUS===
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
nari@nafslinux-ubu22:/gvis/script/proc$

プロセス確認は監視にも使える

運用チックな使い方の1つ。

onlchkを定期的に起動させて、プロセス停止の文言が戻ってたらメールさせる。

高価な監視ソフトウェアがなくても、たとえばcrontabで定義しといたらいい。

1
2
3
4
nari@nafslinux-ubu22:/gvis/script$ sudo crontab -l | grep 803_CHKonlchkStat.sh
[sudo] nari のパスワード:
06,16,26,36,46,56 6-21 * * * /bin/sh /gvis/script/803_CHKonlchkStat.sh  > /dev/null
nari@nafslinux-ubu22:/gvis/script$

さっき停止させたdockerの場合、こんなメールが来る。

1
2
---onlchk  result ---
### ENVIRON[nafslinux-ubu22] : docker	dockerd PROCESS_NOT_FOUND

803_CHKonlchkStat.shにはこう書いてる。 昔はsendmail使ってたのが、今は別でpostfixの設定してから使えるようにした。 LANG=Cをコメントにしてるのは、本文に日本語入っててもメールできるから。

 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
nari@nafslinux-ubu22:/gvis/script$ cat 803_CHKonlchkStat.sh
## -------------------------------------------------------------------------
## Script Name  :
##  Created by  : T.Naritomi
##          on  : 2014.04.05
##  Updated by  :
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------
###LANG=C
EXEC_HOME=/gvis/script                  # Execute Home directory
MAILMSG=${EXEC_HOME}/`basename $0`-report.txt   # report

MAIL_TO="xxxx@gavann-it.com"
MAIL_TITLE="auto)alertReport-onlchk-naFSlinux-Home"

rm -f $MAILMSG

# Report mail make--r--------------------------------------------#
echo "" >> $MAILMSG
echo "---onlchk  result ---" >> $MAILMSG
${EXEC_HOME}/proc/onlchk | grep 'PROCESS_NOT_FOUND' >> $MAILMSG


RES=`cat $MAILMSG | grep 'PROCESS_NOT_FOUND' | wc -l`

if [ $RES -ne 0 ]; then
        cat $MAILMSG | /usr/bin/mail -a "Content-Type: text/plain; charset=UTF-8" -s $MAIL_TITLE $MAIL_TO
        echo E-mail.
fi


exit $?

nari@nafslinux-ubu22:/gvis/script$

履歴みたいな使い方

onlchkを定期起動させて、メールで結果をレポートさせてる。

普段apt updateでバージョンを上げてくけど、「いつからこのバージョンやったかなぁ」とか考えることがたまにある。

メールでのレポートを検索すると、一番古いメールでは6月15日がdockerは20.10.17になってた。

1
2
3
4
5
---onlchk  result ---
... linux CHECK END	 Description: Ubuntu 22.04.1 LTS
... httpd CHECK END	 Server version: Apache/2.4.52 (Ubuntu)
... smb CHECK END	 Version 4.15.9-Ubuntu
... docker CHECK END	 Docker version 20.10.17, build 100c701

6月14日のレポート見たら、dockerは20.10.16になってるから、この日の日中か15日の朝にバージョン上げてるのがわかる。

1
2
3
4
5
---onlchk  result ---
... linux CHECK END	 Description: Ubuntu 22.04 LTS
... httpd CHECK END	 Server version: Apache/2.4.52 (Ubuntu)
... smb CHECK END	 Version 4.15.5-Ubuntu
... docker CHECK END	 Docker version 20.10.16, build aa7e414

あ、sambaもマイナーバージョンが5から9に上がってるし、ubuntu本体も22.04から22.04.1に上がってた。

一度は考えたjenkins

crontabでのスクリプト起動だけじゃなくて、jenkinsにも定期起動の機能がある。

jenkinsは直列の処理だけじゃなくて、並列処理が作れる。

GUI定義じゃなくてテキストを書く必要あるけど、ジョブネットみたいなことができるから、systemwalkerとかjp1なくても業務処理扱える。

jenkinsは本来はCIサーバとして、webとdbのコンテナを動的に作ってgitからソースとか取ってきてなんてことを並列稼働させて自動テストなんかに使う。

一回だけonlchk定期起動とかやってみたけど、javaが動くコンテナはもっさり、ゆっくり動いた。

コンテナで基盤的な処理を動かすのは、dockerで障害出た時ちゃんとレポートとかできないから、やっぱりやめた。

運用チックな処理は、ミドルウェアとか使わずOS機能だけで実現したほうがええ。

macでminikube使い始めた

minikubeはkubernetesのええ勉強になる。

kubectlのコマンドラインの練習ができるから、作ってくれた人はエラいなぁって思う。

自分はそんなんいちいち覚えたくないけど、こうしたら使えるっていうふうに思い出せるように運用スクリプト作った。

何となくやけど、minikube使ってる人の記事見たら、kubectlをkって名前のエイリアス定義して見える人がいた。

打鍵を素早く終わらせるためにやってるんやろけど、いちいち長いコマンドライン打つのは自分はイヤ。

バージョンやらpodの状態とかだけじゃなくて、ポートフォワードの状態とかも見たい。

kubectlが1.27のときのmac向けonlchkスクリプトはこんな感じ。

 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
## -------------------------------------------------------------------------
## Script Name  : onlchk (for mac minikube)
##  Created by  : T.Naritomi
##          on  : 2023.07.27
##  Updated by  :
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments :
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------

echo '-------minikube status -------'
minikube status | tail -5 

echo '-------minikube  check -------'
minikube update-check

echo '----- minikube verCheck ------'
minikube config defaults kubernetes-version | head -3

echo '-------kubectl version -------'
kubectl version --output=yaml | egrep 'clientVersion|serverVersion|gitVersion' 

echo '-------kubectl status  -------'
kubectl get po,svc

echo '-------kubectl PV      -------'
kubectl get pv | awk '{ print $1,$2,$3,$5} '

echo '-------kubectl forward -------'
ps -efww | grep kubectl | grep forward | awk '{ print $9,$10,$11,$12,$13 }' 

exit $?

kubernetesクラスタとが1.27のときに使うと、こんな出力が出る。

kubectl versionは2つ出てるけど、1つ目はサーバ側で2つ目はクライアント側。

クライアント側だけっていうオプション(–clinent)はあったけど、サーバ側っていうのが見つけられんかった。

minikube dashboardでもブラウザ見たら状態はわかるけどイマイチやねんなぁ。

特に自分が見たいものを素早く見たいからこういうのを作る。

 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
nari@gvis-mac ~ % onlchk 
-------minikube status -------
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

-------minikube  check -------
CurrentVersion: v1.31.1
LatestVersion: v1.31.1
----- minikube verCheck ------
* v1.27.3
* v1.27.2
* v1.27.1
-------kubectl version -------
clientVersion:
  gitVersion: v1.27.4
serverVersion:
  gitVersion: v1.27.3
-------kubectl status  -------
NAME                                   READY   STATUS    RESTARTS   AGE
pod/cl-ubun22-78cf4cff6-pz7dk          1/1     Running   0          30m
pod/sv-django-685d8b8c78-8vghz         1/1     Running   0          30m
pod/sv-https-portal-6dd4f47ccb-44cvg   1/1     Running   0          29m
pod/sv-mariadb1011-7685f55777-q6s2t    1/1     Running   0          30m

NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)               AGE
service/kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP               6d7h
service/sv-django         ClusterIP   10.108.42.23    <none>        38080/TCP             5d10h
service/sv-https-portal   ClusterIP   10.97.128.229   <none>        30080/TCP,30443/TCP   5d10h
service/sv-mariadb1011    ClusterIP   10.108.18.160   <none>        13306/TCP             5d10h
-------kubectl PV      -------
NAME CAPACITY ACCESS RECLAIM
gvis-pv-django-sslcerts 1Gi RWO Bound
gvis-pv-django-uwsgi-nginx 1Gi RWO Bound
gvis-pv-mariadb1011 20Gi RWO Bound
gvis-pv-mariadb1011conf 1Gi RWO Bound
gvis-pv-ubun22 10Gi RWO Bound
-------kubectl forward -------
port-forward --address 0.0.0.0 sv-mariadb1011-7685f55777-q6s2t 13306:3306
port-forward --address 0.0.0.0 cl-ubun22-78cf4cff6-pz7dk 33389:3389
port-forward --address 0.0.0.0 sv-django-685d8b8c78-8vghz 38080:8080
port-forward --address 0.0.0.0 sv-https-portal-6dd4f47ccb-44cvg 30443:443
nari@gvis-mac ~ % 

ポートフォワードの状態があると、「開けてるポートどれやったっけ」がすぐに見れる。

永続化領域のPVもBoundになってるよなってのがわかる。

minikubeとかパッケージはbrew使って入れてて、brewで更新をときどきやってると、minikubeそのものもkuberctlもバージョンがコソっと上がってくる。

ときどき見落とすけど、minikube config defaults kubernetes-versionとかの結果を見ると、「あ、v1.27.3出てるやん!」とかして発見できる。

リリース予定どっかで見たんやけど、1.27が6月に出てるのにminikubeに反映されるのは翌月やったなぁ。

1.28は2023年のお盆の頃、ということはminikubeに反映されるのは彼岸の少し前ってことで、阪神ジャンプステークスの頃かいな。

brewでバージョン上がってたり、実行結果のminikube verCheckの先頭のほうに新しいの発見したら、minikube deleteしてクラスタ作り直せしたろ。

macでmicrok8s使い始めた

minikubeはintelアーキテクチャでないと動かん。

M4のmacに切り替えてからmicrok8s使い始めた。

状態確認のスクリプトも書き換えた。2024年の年末に作ったけど、ここに書くの忘れてた。

 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
root@kubearm:/microk8s/script# cat onlchk 
## -------------------------------------------------------------------------
## Script Name  : onlchk (for ubuntu24 microk8s)
##  Created by  : T.Naritomi
##          on  : 2023.07.27
##  Updated by  : 2024.11.29
##          on  :
##  Parameters  :
##  Return Code : 0=Normal End
##     Comments : work on arm64 in utm
## -------------------------------------------------------------------------
## ---detail----------------------------------------------------------------

echo '----- cluster status ------'
microk8s status --wait-ready | head -5

echo '------ cluster node ------'
cat /etc/os-release | grep PRETTY_NAME
df -h | grep -v tmpfs | grep -v common

echo '----- recent cluster ver -----'
## multipass exec microk8s-vm -- sudo snap info microk8s | grep classic | head -3
## multipass exec microk8s-vm -- sudo snap info microk8s | egrep -v 'installed|beta|edge|candidate' | grep classic | sort -r | head -3
## snap info microk8s | egrep 'stable|installed|stable' | grep classic | grep -v 'tracking' | sort -r | head -4
snap info microk8s | egrep -v 'beta|edge|candidate' | grep classic | sort -r | head -4

echo '------- images in ctr -------'
## multipass exec microk8s-vm -- sudo microk8s.ctr images ls | egrep 'save|maria|https' | awk '{print $1,$4,$5}' | grep -v '@' | sort
microk8s.ctr images ls | grep save | egrep 'save|maria|https' | awk '{print $1,$4,$5}' | grep -v '@' | sort

echo '-------kubectl version -------'
microk8s kubectl version --output=yaml | egrep 'clientVersion|serverVersion|gitVersion'

echo '----kubectl po/svc/configmap status ----'
microk8s kubectl get po,svc,configmap

echo '-------kubectl PV      -------'
microk8s kubectl get pv | awk '{ print $1,$2,$3,$5} '

echo '-------kubectl forward -------'
ps -efww | grep kubectl | grep forward | grep -v wrapper | awk '{ print $9,$10,$11,$12,$13 }' | sort

exit $?
root@kubearm:/microk8s/script# 

使ったらこうなる。

 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
root@kubearm:~# onlchk 
----- cluster status ------
microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
addons:
------ cluster node ------
PRETTY_NAME="Ubuntu 24.04.3 LTS"
Filesystem                         Size  Used Avail Use% Mounted on
efivarfs                           256K   37K  220K  15% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv   60G   41G   17G  72% /
/dev/vda2                          2.0G   67M  1.8G   4% /boot
/dev/vda1                          1.1G  6.4M  1.1G   1% /boot/efi
share                              461G  406G   56G  89% /microk8s
----- recent cluster ver -----
  latest/stable:         v1.34.1  2025-10-14 (8496) 160MB classic
installed:               v1.34.1             (8472) 160MB classic
  1.34/stable:           v1.34.1  2025-10-13 (8497) 160MB classic
  1.33/stable:           v1.33.5  2025-10-13 (8509) 155MB classic
------- images in ctr -------
docker.io/library/save-django:gvis-saved 1.4 GiB
docker.io/library/save-xrdpubu:gvis-saved 6.7 GiB
-------kubectl version -------
clientVersion:
  gitVersion: v1.34.1
serverVersion:
  gitVersion: v1.34.1
----kubectl po/svc/configmap status ----
NAME                  READY   STATUS    RESTARTS        AGE
pod/cl-ubun           1/1     Running   3 (4m48s ago)   3d1h
pod/sv-django         1/1     Running   3 (4m48s ago)   3d1h
pod/sv-https-portal   1/1     Running   7 (3m21s ago)   3d1h
pod/sv-mariadb        1/1     Running   3 (4m48s ago)   3d1h

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)               AGE
service/kubernetes        ClusterIP   10.152.183.1     <none>        443/TCP               158d
service/sv-django         ClusterIP   10.152.183.244   <none>        38080/TCP             158d
service/sv-https-portal   ClusterIP   10.152.183.229   <none>        30080/TCP,30443/TCP   158d
service/sv-mariadb        ClusterIP   10.152.183.179   <none>        13306/TCP             158d

NAME                         DATA   AGE
configmap/kube-root-ca.crt   1      158d
configmap/sv-mariadb-txt     5      158d
-------kubectl PV      -------
NAME CAPACITY ACCESS RECLAIM
gvis-pv-django-sslcerts 1Gi RWO Bound
gvis-pv-django-uwsgi-nginx 1Gi RWO Bound
gvis-pv-mariadb 20Gi RWO Bound
gvis-pv-mariadbconf 5Gi RWO Bound
gvis-pv-ubun 10Gi RWO Bound
pvc-0682501b-65b6-4ee2-9a59-6c32f3ef51fa 30Gi RWX Bound
-------kubectl forward -------
root@kubearm:~#