Kubernetes 資格試験本番では edit コマンドを使わない

前置き

そういえば今年度何も資格を取っていなかったので、去年取得した CKA に続き、CKAD を受験しようと思います。

Udemy のこの講座に久しぶりにログインしたものの、あんまり覚えてないので最初からやり直しです。

去年はこれを受講し、CKAに合格。 www.udemy.com

CKA合格後、ちょっとだけこの講座を受講したが飽きてやめた。 www.udemy.com

試験難易度的には CKA > CKAD と言われているので、ちょっと復習すればいけるやろ的な甘い考えです。

復習する中で試験本番Tipsを一つ思い出したのでメモします。

試験本番では edit 禁止

試験本番では Kubernetes 環境に対して管理者権限でコマンドをベシベシ叩きます。そのため環境を壊して試験が続行できなくなる可能性があります。

環境を壊しても自分で直すか再構築すればOKですが、時間にシビアな試験なので環境破壊=試験終了を意味します。

直接マニフェストを書き換える kubectl edit コマンドは非常に便利ですが、ミスすると取り返しがつかなくなることがあるので試験本番では edit 禁止と律するのがよさそうです。

超簡単な例を挙げると以下のようなケースです。

Q: レプリカセットのイメージが間違っていて DockerHub からイメージプルできない。動くように修正せよ。

edit の場合(本番ではやらないようにしたい)

このとき、一番速いのは以下です。※エイリアス k を設定している前提

k edit rs hoge-replicaset

Vimが開くので spec を修正し保存。既存のエラー Pod をすべて delete。

これだけでOKですが、万一修正内容が間違ったまま保存してしまった場合、元に戻すことはできません。※一見 --record オプションが使えそうかなと思いますが、これはコマンドが記録されるだけなので無理です。

もしかしたらシステム側を掘れば旧戻しや差分確認ができるかもしれませんが非常にハードだと思います。

patch の場合(打ち込むのに時間がかかる)

edit は怖いとなれば、patch でやるのが定石です。

kubectl patch rs hoge-replicaset -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx-container","image":"nginx"}]}}}}'

しかし、打ち込むのに非常に時間がかかり、カッコの数とかクオーテーションの数とかミスったときにはさらに時間がとられます。

再作成の場合(一番早くて安全)

要件が許すのであれば手数は多いもののコマンドが簡単な再作成が一番速いです。

マニフェストをバックアップ。このとき、Tab 補完で間違えないようにプレフィックスとして bk. をつけておくとよい。

k get rs hoge-replicaset -o yaml > bk.hoge-replicaset.yaml

編集用マニフェストを作成。

cp bk.hoge-replicaset.yaml hoge-replicaset.yaml

マニフェスト編集。

vi hoge-replicaset.yaml

既存の ReplicaSets は試験側で用意したものであるため、受験者側はオリジナルのマニフェストファイルは持っていません。このまま apply しても反映されない可能性がある(少なくとも Warning は出る)ため、リソースを削除してから新しいマニフェストを apply します。

k delete rs hoge-replicaset
k apply -f hoge-replicaset.yaml

‘edit` は使わないように気を付けましょう。

Nuro光のONUに自前ルータを接続する

NURO光から配布された ONU が F660A なのですが、無線接続可能台数が10台までとなっています。

2.4GHz, 5GHzのSSIDをそれぞれ4つずつ設定可能ですが、10×8=80台 というわけではなく全体で10台です。

そのため、多くのネットワーク機器を無線接続するためには外付けのアクセスポイントが必要になります。

であればアクセスポイントを購入すればよいのですが、家庭用のものは大体ルータ機能もついており、同時接続台数を多くしようとするとルータ機能も充実してるモデルを購入することになります。

そこで問題になるのが二重ルータ問題です。

NURO光公式的には二重ルータはNG(してはいけない)となっています。

www.nuro.jp

また、やむなく二重ルータを設定する方法として以下が記載されています。

意図的に二重ルーターの状態をつくり出す際には、上記のトラブルを避けるために2台目のルーターの設定を変更しなければいけません。 具体的には、中継器として用意した自前ルーターの設定を変更することが大切です。

NURO 光からレンタルしているONUには中継器として利用するための設定がないため、1つの家庭で2つのルーターを使う場合には、必ず自前ルーターの設定を変える必要が出てくるのです。

その際には、2台のルーターをそれぞれ、以下の設定にします。

・NURO 光のONUはそのままの設定

・自前ルーターの設定を「ブリッジモード」に変更

自前ルータ側を「ブリッジモード」に設定するということは、自前ルータのルータ機能をOFFにし「アクセスポイント」として利用していることになります。

これではせっかく購入した高機能なルータ機能が利用できないということです。これを「二重ルータ」と言ってしまうのはミスリードな気が。。。

じゃあONU側でルータ機能をOFFにすればよいというわけではありません。NURO光で配布されるONUではルータOFFの機能がないためです。

ここまでの話をまとめると以下のようになります。

# 推奨/非推奨 ONU 自前
1 不可能 ルータOFF ルータ
2 NURO推奨 ルータ アクセスポイント
3 NURO非推奨 ルータ ルータ

No.1 の構成ができれば一番ハッピーなのですが、仕様上できないので No.3 の構成をしようと思います。あえて自前ルータ側にルータ機能を残したまま二重ルータの設定をするということです。

調べてみると非常に多くの方がこの構成を試みていて成功しているようなのでマネしてやってみます。

構成

最終的に以下の構成となりました。

ひかりTVチューナーも自前ルータ配下に置きたかったのですが、3時間ほど格闘しうまくいかず。

作業

ONU(F660A)側

無線LANをOFF

ネットワーク>無線LAN RF2.4G>基本設定 で無線LANをOFFにします。

同様に ネットワーク>無線LAN RF5G>基本設定 で無線LANをOFFにします。

自前ルータ固定アドレス設定

ネットワーク>LAN>DHCP固定アドレス割当 で自前ルータのMACアドレスを指定し、静的IPを割り当てます。

MACアドレスはルータの後ろのシールに書いてあります。

ONUのIPが 192.168.1.1 なので、192.168.1.2 にしました(特に理由はない)。これが自前ルータから見たときの WAN IP になります。

ONU側DHCP設定

ネットワーク>LAN>ダイナミックアドレス管理(IPv4) を以下のように設定します。

DHCPを有効にしますが、無線はOFFに設定しているため、ONU機器に有線接続するデバイスに対してのみ有効になります。無効にしてもよいですが、自前ルータ側でトラブルがあったときに、ONUの管理画面が見れなくなってしまうので一応有効にしておきます。WAN IPが 192.168.1.2 なので 192.168.1.3から割り当てるようにしています。レンジは適当です(そんなに多く繋げないと思うので一旦10まで)。

talkeyboidsrfc がONUに有線接続しているPCです。DHCPを無効にすると自前ルータ経由でしかアクセスできなくなるので注意してください。ちなみにDHCPを無効にしていてもテレビが映りました。「WAN接続ができなくなったときに管理画面が見えなくなってもよい(ONUを初期化する)」のであれば無効にしてもよいと思います。

ネットワーク>LAN>ダイナミックアドレス管理(IPv6) は以下のように設定します。DHCPは有効にしなくてもひかりTVが映っているので無効にしています。

ファイアウォール設定

セキュリティ>ファイアウォール を以下のように設定します。

DMZ設定

アプリケーション>DMZ を以下のように設定します。

自前ルータ(ASUS AX5400)側

自前ルータは以下を利用しました。

www.asus.com

接続後、適当に初期設定します(後に変更できます)。

ワイヤレス設定

スマートコネクトはOFFにしています。マルチバンドで問題ないよという人はONでもいいです。

LAN設定

デフォルトのままです。192.168.50.1/255.255.255.0 のLANを構築します。

WAN設定

WAN接続タイプは 静的IPアドレス とし、デフォルトゲートウェイはONUのアドレス、WAN IP は ONU側で設定した固定IPを指定します。

セキュリティ的に UPnP は 無効にします。

WAN アグリゲーション、 F660A は対応してるのかな?わからないので無効にしておきます。

IPv6設定

パススルーを設定。

ファイアウォール設定

ファイアウォールを有効にし、DoS保護を有効にします。WAN側の Ping には応答しません。

ファイアウォール規則はおそらくホワイトリストだと思われます。特に外部からのアクセスは今のところないので何も設定していません。

AiProtection設定

今回の内容とは関係ないですが、AiProtectionをONにし、セキュリティ評価の項目をすべてOKにしておきます。

ひかりTVを自前ルータにぶら下げたい

ここら辺を見ながらトライしてみたのですがうまくいかず・・・。ネットワークなんもわからんマンなので、ちゃんと勉強しないと。

www.asus.com

www.asus.com

余裕ができたら再挑戦したいです。

Windows11にWSL2をインストールしNode開発環境を作る

WSL入れて、VSCodeから繋げるようにして、Ubuntu内の開発環境を作る(とりあえず最低限)。

WSL2 手順

以下に従い作業する。

learn.microsoft.com

Ubuntu-20.04をインストール

コマンドプロンプトを管理者権限で実行する。

インストールバージョンを確認

>wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
 'wsl --install -d <Distro>'を使用してインストールします。

  NAME            FRIENDLY NAME
* Ubuntu          Ubuntu
  Debian          Debian GNU/Linux
  kali-linux      Kali Linux Rolling
  openSUSE-42     openSUSE Leap 42
  SLES-12         SUSE Linux Enterprise Server v12
  Ubuntu-16.04    Ubuntu 16.04 LTS
  Ubuntu-18.04    Ubuntu 18.04 LTS
  Ubuntu-20.04    Ubuntu 20.04 LTS

インストール

>wsl --install -d Ubuntu-20.04
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: WSL カーネル
インストール中: WSL カーネル
WSL カーネル はインストールされました。
ダウンロード中: GUI アプリ サポート
インストール中: GUI アプリ サポート
GUI アプリ サポート はインストールされました。
ダウンロード中: Ubuntu 20.04 LTS
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。

Windowsを再起動する。

WSL初期設定

再起動後、Ubuntu 20.04 LTS ウィンドウが表示される。

参考) https://aka.ms/wslusers の日本語ドキュメントはこちら learn.microsoft.com

新規ユーザ名とパスワードを入力するとWSLプロンプトが表示される。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: talkeyboid
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Jan  1 14:21:07 JST 2023

  System load:  0.0                Processes:             8
  Usage of /:   0.4% of 250.98GB   Users logged in:       0
  Memory usage: 1%                 IPv4 address for eth0: 172.31.201.125
  Swap usage:   0%

0 updates can be installed immediately.
0 of these updates are security updates.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once once a day. To disable it please create the
/home/talkeyboid/.hushlogin file.
talkeyboid@talkeyboidsrfc:~$

Windows から WSL ディレクトリを見る

適当にファイルを作成

~$ pwd
/home/talkeyboid
~$ echo fuga > hoge.txt

Windows側のエクスプローラーから接続し、hoge.txt があることを確認する。

パスは \\wsl.localhost\Ubuntu-20.04\home\<username>

WSL から Windows のフォルダを見る

/mnt/c にCドライブがマウントされている。

が基本的に WSL から Windows のファイルはいじるべきではないと思うので使うことはなさそう。読み取り権限だけつける必要が出てきたときにはそのとき調べることにする。

VSCode手順

以下に従って作業する。

learn.microsoft.com

インストール

以下から Windows 用の VSCode インストーラをダウンロード

code.visualstudio.com

インストーラに従いインストール

VSCode設定

Setting Sync を利用し、元PCから設定を移行する("共有"と言ったほうが正しいかも)。

zenn.dev

WSL2 拡張機能をインストール

Remote Development Extension を導入する。全部入りのバンドルっぽい。

この拡張機能パックには、リモート - SSH 拡張機能と Dev Containers 拡張機能に加えて、WSL 拡張機能が含まれており、コンテナー、リモート コンピューター、または WSL 内の任意のフォルダーを開くことができます。

WSLに接続

コマンドパレットから WSL: New WSL Window を選択するとWSLに接続した VSCode ウィンドウが表示される。

ターミナルを表示すると、Ubuntuに接続できていることがわかる。

Ubuntu

基本設定

以下を参考に Ubuntu を設定する。どのような設定をするかはお好みで。

zenn.dev

homebrew導入

以下を参考に導入する。

zenn.dev

導入後、バージョン確認

$ brew update
Already up-to-date.
$ brew --version
Homebrew 3.6.16
Homebrew/homebrew-core (git revision 939b942b128; last commit 2023-01-01)

nvm導入

以下を参考に導入する。

note.com

ただし、M1 Mac ではないのでパスを通す部分は ~/.profile に設定する。

~/.profile 末尾に以下を追記。

export NVM_DIR="$HOME/.nvm"
  [ -s "/home/linuxbrew/.linuxbrew/opt/nvm/nvm.sh" ] && \. "/home/linuxbrew/.linuxbrew/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/home/linuxbrew/.linuxbrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/home/linuxbrew/.linuxbrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

~/.profile 再読み込み

$ source ~/.profile

バージョン確認

$ nvm --version
0.39.3

インストール可能バージョンを確認

$ nvm ls-remote
~略~
v18.12.0   (LTS: Hydrogen)
v18.12.1   (Latest LTS: Hydrogen)
~略~

最新のLTSをインストール

$ nvm i v18.12.1

nodeバージョン確認

$ node -v
v18.12.1
$ nvm current
v18.12.1

Git バージョン確認

Ubuntu デフォルトの 2.25.1 でとりあえずOK。

$ git version
git version 2.25.1

Surface Laptop Studio を購入したので初期設定していく

早く Mac から Win に戻りたいと思いはじめて2年くらい経った。

やっと Windows 機を購入。Surface Laptop Studio の メモリ32GB, SSD 1TB のモデル。Surfaceのノートでは一番上のシリーズっぽい。

www.microsoft.com

さっそく設定していく。

全般設定

マウスとタッチパッドのカーソルスピードを最速に

azby.fmworld.net

変換無変換キーでIME ON/OFF

英語/日本語切り替えをMacデフォルト風にする。

pcmanabu.com

タスクバーを自動的に隠す

pc.watch.impress.co.jp

今まで仕事用ノート・私用デスクトップはWin10、私用ノートはMacを使っていたため、タスクバーを左下にすることには特にこだわりがない。

また、仕事の場合は複数のエクセルやブラウザウィンドウを立ち上げまくるのでタスクバーは必要だが、私用ではそんなに多くのアプリケーションを多重で立ち上げないのでタスクバーは消しておしゃれに使いたい。

ダークモード

中二病なのでダークモードにする。

imagingsolution.net

拡大/縮小 を125%にする

規定の150%では少し大きいので125%に調整。

chromeをデフォルトに

chromeをインストールし、アプリ>規定のアプリ>Microsoft Edgeから各拡張子・プロトコルをchromeに変更する。

プロファイルを全部インポート

用途別にたくさんGoogleアカウントを所有しているのですべてのアカウントをchromeのプロフィールに紐づける。

オフィス

Surface には MS Office がプリインストールされていたので、とりあえずExcelを開き個人用Office365(Microsoft365)アカウントでログインする。※WordとかPowerpointでもOK

アカウント>Office更新プログラム から最新プログラムに更新。

開発環境

こちらに書きました。

talkeyboid.com

音楽制作環境

また時間ができたときに。。。

ひかりTV for NURO 初期設定時エラー(IP1004)について

チューナーが来たので初期設定をしていたが、「ひかりTVチューナーはネットワークに接続できませんでした」と表示された。

サポートページにトラブルシュートの手順があるが、問題は解消せず。ちなみに、トラブルシュートはONUルータのファイアウォール機能をOFFにし、IPv6を有効にした状態にしてから行った。

help.hikaritv.net

結果としてはONUを初期化したことで問題は解消した。問題解消の手順をメモとして残す。

エラー情報

エラーコード:IP1004

機器情報

  • ONU
    • F660A
    • ファームウェアバージョン:V1.0.10P14N2(2022/12/30時点最新)
  • ひかりTVチューナー
    • Smart TV 3400

接続経路

最終的な接続経路。ONUとTVチューナーはダイレクトに接続する。

ONUを初期化

初期化でやること

  • ONUを初期化
  • ONUへ接続し、ファイアウォール設定をOFF、IPv6をON
  • インターネット接続確認
  • チューナー付属LANケーブルが生きていることを確認

管理>システム管理>リセット 画面上で「工場出荷時の設定に戻す」を押下。その後、5分待機。

ONUとPCを有線LANで接続する。

このとき、以下を行った。

  • 宅内アクセスポイントへのLANケーブルをすべて外す。
  • 光TVチューナーに付属のLANケーブルを利用(※LANケーブルが利用可能であることも合わせて確認したいため)。

ONU管理画面へ接続する。

初期パスワードでログインし、パスワードを変更する。

パスワード変更後、新しいパスワードでログインする。

SSID名が初期のものに戻っていることを確認。初期状態に戻っていることがわかる。

セキュリティ>ファイアウォール 画面で以下を確認。

  • 「ファイアウォール機能を有効」がOFF
  • 「SPI(IPv6)を有効」がON

IPv6が取れていることを確認。

インターネットに接続できることを確認。Wifiを切った上で、有線LAN経由でインターネットに接続できている。

チューナー接続・起動

PCに接続しているLANケーブルをチューナーに差し替える。

チューナー本体の電源ボタンをON。

再度本体の電源ボタンを押下。

エラー解消し、設定画面へ遷移した。

地デジ設定

公式ページ通りに地デジ設定をする。

https://help.hikaritv.net/as/scope3/tvfaq/web/Detail.aspx?id=194

設定した後、地デジを見るも「追加の契約が必要です」と表示された。

チューナーを再起動することで正常に番組が表示された。

Wifi設定を復元

ONUを工場出荷状態に戻したのでWiFi設定がすべて消えた。自宅1FはONUにくっついてるアクセスポイントをそのまま利用しているため復元する必要がある。

新しくルータを買ったので、ルータが届いたら2重ルータ設定して新たに設定しようと思う。

ちなみに、2重ルータは公式ではNGのようだが、配布されるONUルータがイケてないのであえて2重ルータにする人が結構いた。

worry-journal.com

digitalnetlife.com