投稿

3月, 2015の投稿を表示しています

Google Container Engineでハマったところ

Google Container Engine (GKE)はKubernetesのクラスタを作り,Dockerコンテナを大量に上げるまで自動でやってくれたりするサービス.
VMコンテナ自体はGCEと同様に管理できます.

で,クラスタなんかもGoogle Cloud SDKのgcloudコマンドで色々と手元からCLIでできるのですが,ハマりました.

ハマりポイント gcloud preview container kubectl create -f sample.json --cluster="<CLUSTER NAME>" これでsample.jsonにswagger形式で記述したクラスタが上がる……はずなのですが
なぜか手元ではタイムアウト.次のようなメッセージが飛びます
ERROR: F0326 10:43:53.728513    5117 get.go:166] Get https://130.211.179.83/api/v1beta1/pods?namespace=default: dial tcp 130.211.179.83:443: i/o timeout kubectl get podsなど,他のkubectlのコマンドも同様にタイムアウトしてハマってました.

これは,一度作ったクラスタを削除して,また同じ名前でクラスタを作成した後の操作でした.
実はこれがハマったところのポイントで,
$HOME/.config/gcloud/kubernetes/<PROJECT>.<ZONE>.<CLUSTER NAME>/ に配置されている,cluster.jsonに,
{
    "endpoint": "130.211.179.83"
} のような形式でgcloudコマンドを通してそのプロジェクトへkubectlをする時のエンドポイントのIPアドレスがキャッシュされてました.
なので,以前同じ名前でクラスタを作って,gcloudコマンドを使った事がある場合,その前の時のIPアドレスをつかってkubectlを発行するため,タイムアウトしてしまうというオチでした.

このcluster.jsonを削除してしまえば解決します.

EdgeRouterLite-3をGentooで運用しはじめました+IPv6導入(本篇)

イメージ
前提これまでのネットワークは,BaffaoのBBR-4MGをブロードバンドルータにしてた100Mなネットワークで,IPv6未対応だったので,IPv6+GbEにしたい既存ネットワークのトポロジは下図の通り.ただし,これからの記事でアドレスについてはxxxxで伏せさせていただきます ファイアウォールはBBルーターとパーソナルファイアウォール任せな感じの,よくある一般的なネットワークっぽい.APは諸事情によりRaspberryPiにやらせてて,RaspberryPiにはUSB HDDが接続してありLAN内のファイルサーバとなっている.
これを,次のようにした.
いままで市販のBBルーター任せであんまり考えてなかったファイアウォールルールをイチから見直した事と, 外から自宅にアクセスするために外部にもBBルータの機能で静的ポートフォワードしていたRaspberryPiを, サブネットで分離してちゃんとDMZとして機能するようにさせたところがポイント.とはいえDMZは全部フォワードしてるわけじゃなくて,結局静的ポートフォワードでやってます.

図に書き忘れましたが,IPv4 PPPoEの出口がppp0,IPv6 PPPoEの出口がppp1になってます.

IPv6だと,NATが必要ないのでちょっと設定に戸惑いました.むしろNATとか頭から追い出してちゃんと考えればIPv6のほうがラクっぽいかも.

ネットワーク図がアレゲなのは勘弁してください……
あと,セキュリティの事を言うとまだまだ足りないとこが沢山ある気がしますね.
本当はルーターに色々やらせすぎなんだとおもいますが,ウチは負荷がかかるネットワークではないのでそこは良いかな.

なお,フレッツ系のプロバイダで,IPoEなIPv6が使えない環境だったので,
PPPoEを2セッション張る事にしています.

実際どのようにしたか,以下に記します.
参考: Home Router - Gentoo Wiki

設定(IPv4) このように設定して,
# cd /etc/init.d && ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0
# rc-update start net.ppp0 これでIPv4のPPPoEは自動起動します.
ユーザーネーム,パ…

EdgeRouterLite-3をGentooで運用しはじめました+IPv6導入(OS環境構築篇)

イメージ
先日,@syuu1228先生からEdgeRouterLite-3を頂く機会があったので,
自宅のネットワークを全面的に直しました.
EdgeRouterLiteとは
Ubiquiti社の製品,EdgeRouterシリーズの下位モデル.EdgeRouterLite-3はギガビットポートを3つ持つルーターで,この3つの使い道は特に限定されてません.
2ポートをブリッジしてWAN+LANなよくあるBBルーターでも良し,1WAN2LANなルーターでも良いし,2WANにしてロードバランスとか冗長化するのも良いかもしれません.

性能としては,OCTEONのMIPS64 500MHzのデュアルコアに,DDR2メモリが512MBと,
結構高性能です.ハードウェアスペックだけを見れば,定価10万円くらいのYAMAHA RTX1200以上の性能が出ると噂です.ポートが少ないですが…….価格はUS$100とかなりお手軽,ただし日本だと代理店が無いので
楽天から買うと2万円ぐらいになるかもしれません.

詳しくはInternetWatchのこのレビューがわかりやすいでしょう.
どっちでAzureにつなぐか? Ubiquiti Networks「EdgeRouter LITE(ERLite-3)」を試す

個人的には公式のプロダクトのページのCiscoに喧嘩売りにいってるプロモーションビデオが素敵で好きです.
環境構築 EdgeRouterLiteにGentoo入れました.
IPv6をどうしたか,が気になるかたはつづきの記事を読んで,この記事の残りはすっ飛ばして良いです.

参考リンク: MIPS/ERLite-3 Gentoo Wiki

EdgeRouterLiteはu-bootが収められてるNORメモリと,OSが収められてるUSBフラッシュメモリなストレージデバイスの2つの記憶領域を持っています.
後者はデフォルトだと2GBのものがボード上のUSBポートに挿してあり,EdgeOSというVytta,VyOSベースのOSがインストールされています.

これを別の,Gentooをインストールした大容量のUSBフラッシュメモリに挿し替えました.


私はこれを買いましたが,べつにこれでなくとも良いと思います.
Gentoo Wikiにて,いくつか動作確認済みのUSBメモリが記載されています.
が,スペースが限…

Intel Memory Protection Extensions (MPX)

イメージ
つい先日,Linusが,次のような苦言を呈しました.
Why would I want to enable this in my kernel when there are no actual CPU's out yet that support it? - https://patchwork.kernel.org/patch/5463081/ 「この機能を実際にサポートした CPU がまだ出てないのにどうしてボクが自分のカーネルでこいつを有効にしたいと思うかい? 」 このような苦言にも関わらず,これは3.19へとマージされました.
これは Memory Protection Extensions (MPX) という機能のサポートについてで,どうやらパッチ自体は悪くないけど,デフォルトで有効にされるパッチが含まれているのが気に要らないようでした.
ところで,MPXとはいったいなんでしょうか?


MPXとは MPXとは,Intelのtick-tackのtick,次の新アーキテクチャであるSkylakeにて実装予定の新機能です.
これは,具体的には配列の境界チェックをハードウェアでサポートする事でexploitを防ぐ機能となります.

Intel CPUの命令リファレンス[PDF]の第9章がまるまるその機能に割かれています.

MPXのため,BNDレジスタが4本追加され,このBNDレジスタは1本128bitです.
このレジスタは上位と下位でそれぞれアクセス可能で,64bitが2つという事になります.
BNDレジスタの上位はUB(UpperBound),下位はLB(LowerBound)と名付けられており,
勘が良い方は気がつかれたかもしれませんが,配列の上界のアドレスと下界のアドレスをそれぞれ格納します(そのため64bitが2つなんですね)

また,設定レジスタがユーザーモードのためにBNDCFGU,スーパーバイザーモードのためにIA32_BNDCFGS,状態レジスタとしてBNDSTATUSが追加されています.

レジスタ構成 拡張レジスタ



BNDCFGU,BNDCFGS

BNDSTATUS

命令 BNDMK b, m: BNDレジスタbにLowerBound(LB)とUpperBound(UB)を作成
BNDCL b, r/m: メモリ参照かレジスタにあるアドレスについ…