いかすEKS②

いかすESKエントリーの②です。
過去記事はこちら

クラスタの作成

クラスタは毎回、作業後に落とすので最初はクラスタの作成からです。節約です。前回、オプションを忘れてworker用にm5.largeを起動してしまったので、今回は慎重に。公式に書いてるとおりの内容です。

$ eksctl create cluster --name [cluster-name] --version 1.13 --nodegroup-name [worker-group-name] --node-type t3.medium --nodes 3 --nodes-min 1 --nodes-max 4 --node-ami auto

そこそこ時間がかかるので慌てずに。kubectlで接続できることを確認します。
オンプレ環境でkubeadmを使ってクラスタを作ったのに比べるととても楽ですね。

しかしエラーが出る

なぜかエラーが出ました。うーん、前回はちゃんとクラスタ作れたのに。違うのはオプションの内容だけなので、少しずつ削ってみるなどしてみます。AutoScalingなんとかとエラーが出ていたので、nodes-minとnodes-maxを削るもエラーが増える感じ。ハマってしまった感じがします。焦ります。
とりあえず、クラスタを削除して気持ちを落ち着かせます。

再度チャレンジ

前回と大きく違うのは、node-typeでt3.mediumを指定したところかなと思うので、そこを削ってみます。m5.largeでいいじゃないか(泣)

うまく起動できたので、今後のために、ちゃんと出力内容も読んでおきます。

$ eksctl create cluster --name ikasu --version 1.13 --nodegroup-name ikasu-workers
[ℹ]  using region ap-northeast-1
[ℹ]  setting availability zones to [ap-northeast-1a ap-northeast-1c ap-northeast-1d]
[ℹ]  subnets for ap-northeast-1a - public:192.168.0.0/19 private:192.168.96.0/19
[ℹ]  subnets for ap-northeast-1c - public:192.168.32.0/19 private:192.168.128.0/19
[ℹ]  subnets for ap-northeast-1d - public:192.168.64.0/19 private:192.168.160.0/19
[ℹ]  nodegroup "ikasu-workers" will use "ami-0a67c71d2ab43d36f" [AmazonLinux2/1.13]
[ℹ]  using Kubernetes version 1.13
[ℹ]  creating EKS cluster "ikasu" in "ap-northeast-1" region
[ℹ]  will create 2 separate CloudFormation stacks for cluster itself and the initial nodegroup
[ℹ]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=ap-northeast-1 --name=ikasu'
[ℹ]  CloudWatch logging will not be enabled for cluster "ikasu" in "ap-northeast-1"
[ℹ]  you can enable it with 'eksctl utils update-cluster-logging --region=ap-northeast-1 --name=ikasu'
[ℹ]  2 sequential tasks: { create cluster control plane "ikasu", create nodegroup "ikasu-workers" }
[ℹ]  building cluster stack "eksctl-ikasu-cluster"
[ℹ]  deploying stack "eksctl-ikasu-cluster"
[ℹ]  building nodegroup stack "eksctl-ikasu-nodegroup-ikasu-workers"
[ℹ]  --nodes-min=2 was set automatically for nodegroup ikasu-workers
[ℹ]  --nodes-max=2 was set automatically for nodegroup ikasu-workers
[ℹ]  deploying stack "eksctl-ikasu-nodegroup-ikasu-workers"
[✔]  all EKS cluster resource for "ikasu" had been created
[✔]  saved kubeconfig as "/home/hideo/.kube/config-first-eks-cluster"
[ℹ]  adding role "arn:aws:iam::313028364465:role/eksctl-ikasu-nodegroup-ikasu-work-NodeInstanceRole-B5H6FNMHI28Y" to auth ConfigMap
[ℹ]  nodegroup "ikasu-workers" has 0 node(s)
[ℹ]  waiting for at least 2 node(s) to become ready in "ikasu-workers"
[ℹ]  nodegroup "ikasu-workers" has 2 node(s)
[ℹ]  node "ip-192-168-54-59.ap-northeast-1.compute.internal" is ready
[ℹ]  node "ip-192-168-7-9.ap-northeast-1.compute.internal" is ready
[ℹ]  kubectl command should work with "/home/hideo/.kube/config-first-eks-cluster", try 'kubectl --kubeconfig=/home/hideo/.kube/config-first-eks-cluster get nodes'
[✔]  EKS cluster "ikasu" in "ap-northeast-1" region is ready

ゲストブックの起動

Kubernetesのゲストブックアプリケーションを起動します。EKSクラスタのテストですね。どうやら、このリポジトリのようです。
https://github.com/kubernetes/examples/tree/master/guestbook-go

公式に書いてあるとおりに実行していきます。yamlじゃないんですね。
最後にExternalIPを確認します。

$ kubectl get svc -o wide
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)          AGE     SELECTOR
guestbook      LoadBalancer   10.100.156.158   a879b183ee57c11e9970906dc18345ed-1049393403.ap-northeast-1.elb.amazonaws.com   3000:32031/TCP   18s     app=guestbook
kubernetes     ClusterIP      10.100.0.1       <none>                                                                         443/TCP          15m     <none>
redis-master   ClusterIP      10.100.144.119   <none>                                                                         6379/TCP         2m34s   app=redis,role=master
redis-slave    ClusterIP      10.100.180.106   <none>                                                                         6379/TCP         85s     app=redis,role=slave

ブラウザで当該URLにアクセスしてみるも「サーバが見つかりません」となりました。公式に書いてあるようにDNSの反映に少し時間がかかるようです。少し待つとアクセスできました!

ゲストブックアプリケーションの起動

最後に

お小遣いを無駄にしないために、クリーンアップを忘れないようにします。

読書通帳③

読んだ本を記録しておくエントリーです。

読んだ本

もじれる社会 -戦後日本型循環モデルを超えて 本田由紀

内容と感想

第1章から第5章までありました。各章が割と独立しているので、どこからでも読むことができると思います。全体通してもさっと読めるので、前から読むほうが良いとも思います。

著者は、戦後の日本型循環モデルが既に崩壊しているにもかかわらず、それを無理に維持しようとしていることが、さらに問題を深くしているというふうに考えているのかな、と感じました。

私も全く同感ですが、一方で、世の中をリードする層(政治家だったり大企業の重役だったり)は従来の日本型循環モデルの中で成功してきた人たちなので、それらの人にドラスティックな変革を期待するのは難しいのかな〜とも思います。

この本でも、以前に読んだアンダークラスと同様に、日本が階級社会とでも言えるような状態になっていて、階級間の分離が問題であると思っているようです。
そういう状態は確かにあって、同じ階級の中で閉じてしまっていて、異なる階級が不可視になってしまっていることで、問題が見えにくくなってしまっているというふうに思います。割と短期間に同じような内容の本を読んでいることから、自分の問題意識は、このあたりにあるんだな、と再認識しました。

東大の入学式での上野先生のスピーチが話題になりました。あのスピーチと通じる内容だと思います。私は、上野先生のスピーチはとても素晴らしいものだったと思っています。
平成31年度東京大学学部入学式 祝辞
https://www.u-tokyo.ac.jp/ja/about/president/b_message31_03.html

第3章が、労働をテーマにした章で、個人的に一番気になったところでした。
労働政策研究・研修機構の濱口桂一郎さんが述べていた「ジョブ型」と「メンバーシップ型」に触れて、ジョブ型への移行を目指すべきという内容でした。

私もメンバーシップ型の維持は限界にあると思っていて、ジョブ型への移行が必要だと思う一方で、終身雇用を前提としてきた中で急に移行できないというのも頷けます。やっぱり誰しも、自分の生活は大事なので。
ITエンジニアの世界では転職は割と一般的なようなので、技術がある程度はっきりと測定できるようになると、ジョブ型への移行が進むのかなぁと感じます。

社会への閉塞感を感じている人にとって、何が問題なのかを整理するためのきっかけになる本だと思いました。

いかすEKS①

はじめに

kubeadmでクラスタを作って試したことがありまして、そのときにload-balancerだったりIngressだったりを使うのに、オンプレだと面倒だなと感じたのでEKSを試してみようというエントリーです。EKS、いーかーすーです。

試すんならGKEの方が知見も多いのでは、という気持ちもあるのですが、いろいろ事情もありまして…

環境

Linux Mint19.1 Mate 64-bit
あまり手を加えてない割とクリーンな環境です。

手順

とりあえず公式に従ってやってみます。

EKSユーザガイド
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/what-is-eks.html

awscli のインストール

ここは書いてるとおりにささっと。venv で閉じてあるので、–userはつけませんでした。

awscli のインストール

ここは書いてるとおりにささっと。venv で閉じてあるので、–userはつけませんでした。

pip install awscli --upgrade
aws configure

eksctl のインストール

ここも書いてあるとおりに。curlのところがそこそこ時間かかって不安だったのでsilentにしないほうが良いかも、という気がしました。
帯域の問題だと思いますけど…

$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin/
$ eksctl version
[ℹ]  version.Info{BuiltAt:"", GitCommit:"", GitTag:"0.6.0"}

kubectlのインストール

これも公式の通りです。

$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

クラスタの作成

手順通りでできてしまう。が、–nameのあと、”\”をつけずにEnterしてしまい、クラスタ構築が始まってしまう。結果としては、ちゃんと動きましたが、ワーカーノードのEC2として、m5.largeが2台起動してしまうという憂き目に。とほほ。

$ eksctl create cluster \
--name xxxx

後で確認してみたら、m5.largeが約1hourで$0.13かかっていました。その他、NAT Gatewayが2hourで$0.12というのもありましたが、これもEKS関係なのかな??

また、このときに、慌ててしまってkubeconfigを上書きしてしまい、最初にアクセスした際にエラーを出してしまいました。update-kubeconfigを実行して、ちゃんとアクセスできました。

$ aws eks update-kubeconfig

後片付け

LoadBalancerに関連付けしたサービスはないので、クラスタを削除すれば良さそうです。

$ eksctl delete cluster --name xxxx

読書通帳②

読んだ本

くわしすぎる教育勅語
https://www.amazon.co.jp/%E3%81%8F%E3%82%8F%E3%81%97%E3%81%99%E3%81%8E%E3%82%8B%E6%95%99%E8%82%B2%E5%8B%85%E8%AA%9E-%E9%AB%98%E6%A9%8B-%E9%99%BD%E4%B8%80/dp/4811808320

感想

第一部

精読と書いてあるとおり、逐条解説みたいな内容。
正直、思ったよりも詳しすぎて、びっくり。ただ、教育勅語はニュースとかで耳にするくらいでちゃんと読んだことがなかったので、全文を読めた上に逐条解説も知ることができたのは良かったです。

著者自身も教育勅語に否定的な見解をもっていると書いていますが、少なくとも解説には偏りはないと感じました。

第二部

「[始末] 来しかたとゆく末」というタイトルのとおり、教育勅語が制定(っていうのかな?)された経緯とかその後の扱いとかが書いてあります。

法律とかもそうですが、単に条文を字義どおりに理解するだけではなくて、どういういきさつがあって制定されたのかとか、作成者の意図とかそういうのもとても大事だと思いますが、教育勅語もそうなんだな、という印象を持ちました。

第三部

文献紹介です。研究したいわけではないので、ここはさらっと読み流しました。

まとめ

なんとなく教育勅語に対して賛成するにしろ、反対するにしろ、そのものを知るべきだなと思ったので手にとってみました。思いのほか、深い解説を得ることができたので読んでよかったと思います。。

サーカスを観ました

はじめに

さいたまスタジアムの近くで公演があるということで、木下大サーカスを観に行きました。

木下大サーカス

http://kinoshita-circus.co.jp/
世界三大サーカスの一つらしいです。知らなかったのです。ボリショイサーカスはこれまでも観たことがありましたが、木下大サーカスは初めてです。

ハラハラします

空中ブランコだったり、バイクのアクロバットだったり、人間にこんなことができるのか!と思うくらいに、めちゃくちゃすごいんですけど、すごいんですけど、ハラハラします。

きっと、ものすごいたくさんの練習をして、安全対策もやって、その上でやっているのでだいじょうぶなんだろうと頭ではわかるんですが、やっぱりハラハラ。
なんというか、ここで怪我しちゃったら、生活どうなるんだろうとか、そういう心配をしてしまうのが親になったということなんだろうなぁと思いました。

でも、実際に観てみるとすごいですよ。人間も鍛錬を積めば、こんなことができるのかぁと驚きの連続です。

ボリショイとの違い

手品(というかイリュージョン?)があるのと、出てくる動物たちが違うという点でしょうか。
あと、ボリショイは市立体育館での公演に対して、こちらはテントでの公演だったので、会場の雰囲気が違うなぁと感じました。

おわりに

サーカスって、おもしろいですよ!

旅行に行きました

はじめに

夏休み中、家族で奈良と京都に行った記録です。

奈良

奈良は、8年近く住んでいたので、とても馴染みのある土地です。ただ、歴史に興味があるわけではないので、神社仏閣などは、知り合いが遊びに来たときの観光として行くくらいでした。

近鉄特急

京都駅から大和西大寺までは、特急です。乗った車両がたまたま、なんとゴージャスな!
近鉄のページの画像(下の画像です。)のやつでした。うちの子たちの感想は、「カラオケみたーい」。ん?カラオケに連れて行ったことがないのに。
首都圏の電車もこのくらい快適になればなぁ。

https://www.kintetsu.co.jp/gyoumu/Express/train/image/bisutacar-03.gif

その日の夜は、妻の念願の天下一品のラーメンをいただきました。おいしかったです。

奈良公園

で、鹿に会いに行きました。日本中どこでもいる気がしますが、鹿せんべいをあげるのは好きなので。
鹿せんべい買った直後から、ガブッ!鹿に噛まれました。とほほ。
子どもたちも、こわごわ鹿におせんべいをあげることができて、みんな満足。

平城京天平祭2019

その後、富雄という駅で降りて、以前住んでいた付近を散策しました。来来軒という街の中華屋さんのからあげセッツが大好きだったので、そこのからあげセッツをおいしくいただきました。

妻のお友達にお宅にお邪魔して、遊んで、夜は「平城京天平祭2019」というのに行きました。
昔、住んでいたときは、なんというかただの原っぱだったのがとても立派になっていて、感無量。

イベント | 平城京天平祭2019 夏

京都へ

京都へ移動します。京都と言っても、南丹市美山町というところが目的地です。かやぶきの里で有名なところですが、車でないと行くのがツラいので、レンタカーでの移動です。

昔、ここに住んでいたことがあって、そのときにお世話になった人たちに会いに行きました。みなさん、元気そうで本当に良かったです。子どもたちにもかやぶき屋根とか見せてあげられてパパは大満足。

その日は、美山ハイマートユースホステルに宿泊。おいしい食事でおもてなしをいただきました。
ホストさんとのお話もとても楽しかったです。
かやぶき屋根の建物に泊まるということで、子どもたちも喜んでくれましたし、夜に満天の星を見ることができて、パパ、再び大満足です。夏休みの宿題で星をみる、というのがあって、家の近所とか、車を小一時間走らせてみたり、キャンプ場で見てみたり、いろいろ試しましたが、美山の星空が一番でした!
「プラネタリウムみたいだね〜」という感想に、現代っ子だなぁと思いました。

美山ハイマートユースホステル [日本ユースホステル協会公式]

美山町遠景
美山町です

おわりに

旅行から帰った後の数日は、ぐったりでした〜。

スイミング始めました

こんなにかっこよくないですが。
いらすとや

はじめに

スイミングに通い始めました。オッサンですけど。
小学生時代からずっとカナヅチだったので、一念発起してがんばろうというわけです。

自己流で

小学生の子どもがスイミングに通っているので、そのレッスンの様子をじっとみておぼえて、それをやってみる、というのをがんばっています。

初心者向けコースでただひたすらバタ足とクロールを「ああでもない、こうでもない」ともがきながらやっている感じです。
うまくできた!と感じる瞬間もあれば、ダメだな〜という瞬間もあり、一進一退という感じでした。

一つわかったのは、姿勢がとても大事だということでした。
姿勢良く泳げたときは泳いだ感があり、姿勢が悪いときは溺れた感がありましたね。

レッスン受けてみる

平日に休みがとれたので、コーチのレッスンを受けてみました。ちょうどピッタリのコースがあったので、良かったです。受けてみて思ったのが、スイミングのコーチの教えはすごい!ということでした。

コーチの教えのとおりにやると、たしかに上達する気がします。足りないのは気合と根性ではなかったのですね。
ちゃんとしたやり方で、ちゃんと練習積めば、上達できるんだな〜と感じ始めました。あと、下手な人(つまり私)に対しても、褒めてくれるのがうれしいです。

大人になってやってみると、誰も笑わないし(笑われてもいいけど)、褒めてくれるし(お世辞でもうれしい)、自分のペースで取り組めるし、楽しいな〜と思います。

おわりに

子どもの頃は水泳の時間が嫌いで、やりたくない気持ちが強かったです。今、別に泳げるようになってはいませんが、スイミングは楽しいです。楽しいと前向きに取り組めるし、楽しいって大事ですね。

ペグソリティアを解く

はじめに

夏休みの旅行中に、うちの子がペグソリティアをやっているのを見て、 「これ解けたらドヤ顔できるな」と思ってチャレンジしたものの、意外に大変でした、というお話です。

解いてみる

チャレンジしたのは33ペグのやつです。
https://ja.wikipedia.org/wiki/%E3%83%9A%E3%82%B0%E3%83%BB%E3%82%BD%E3%83%AA%E3%83%86%E3%83%BC%E3%83%AB

いろんなパターンがあるようですが、一番スタンダードっぽいやつということで。

最初は、何回かチャレンジしてれば解けるやろ、と思っていたが全然できないです。 マジですか??ヤバイという気持ちになり、PCに解いてもらおうと考えたわけです。

プログラミングする

しかし、これも意外に難しい。というか全然意外ではなく、難しいことが知られていたらしいです。 私が知らないだけでした。

こういうのとか(英語なので半分も読めてないですけど)、こういうのとか見ると、現実的な時間で解の全部を解くことはかなり困難そうだ、という印象を受けました。

がんばりました

とはいえ、仕事のあとでちょびちょびやるだけだとそこまでのエネルギーは ないというわけで、とりあえず、簡単な感じで書いてみました。

https://github.com/HideoYukutake/puzzle

なんと!時間はものすごーくかかったものの、一応、解の一つが得られました。 夜寝る前に走らせて、翌朝には解けていたので、とりあえず良しとします。
(時間を計測するのを仕込むのを忘れてしまったのが残念。)

このあとは、性能を改善するのみ!現実的な時間でちゃんと解けるようになりたいなぁ。

2019/9/22追記

あのあとも少し工夫を続けた結果、解の一つであれば、数分で得られるようになりました。7時間くらい雨後し続けると50,000超の解を得ることができましたが、まだまだ探索空間が広すぎて全体を把握できていないようです。

対称性や回転で同一となるペグの配置ができたら解決済みとする、とかの工夫が必要だなぁと思いつつ、まだ解決できていません。

読書通帳

読んだ本

・アンダークラス ─新たな下層階級の出現
http://www.chikumashobo.co.jp/product/9784480071873

感想

新書だったので、割と気楽に読めると思っていたのですが、意外にしっかりした本でした。
内容がしっかりしているのは当然ですが、計量的なデータを用いながら階級社会の構造と動態を記述しようとしていて、気楽に読むという本ではないな、というのが感想です。

引用するデータは、主として2015年のSSM調査(「社会階層と社会移動全国調査」というそうです。)と、2016年首都圏調査(著者を中心とするグループによって実施された調査)でした。しっかりとデータを取って、そこをベースに議論する、というのは大事なことですね。

後半で、アンダークラスやその周辺のメンバの政治的な傾向などについての考察もありました。
議論のあるところだろうと思いますが、所得の再分配のあり方や、社会のあり方を考えていく上で、示唆に富む内容だと思いました。

Exponential Backoff And Jitterの勉強

はじめに

AWSの勉強をしていて、リトライについて書かれている記事を読みました。
https://codezine.jp/article/detail/10739

この中で説明されていたExponential Backoff And Jitterのコードを読んで、
試してみたので記録しておこうと思います。

シミュレータの実行

python backoff_simulator.py

でcsvを作成しました。
なお、PCのスペックが貧弱(Thinkpad x61s)なのもありますが、結構な時間がかかりました。それから、csvのデータ尾を、gnuplotでグラフにしてみました。Call数をグラフにしたのがこれです。 もとのサイトのグラフとほぼ一致していますね。

全リクエストの処理が完了するまでの総所要時間のグラフがこちらです。

傾向としてだいたい同じになりました。

バックオフのロジックを工夫することで、処理時間を節約することができるのですね。
TCPの輻輳制御も面白そうだなと思ったので、TCP技術入門も読んでみたくなりました。
https://gihyo.jp/book/2019/978-4-297-10623-2

参考URL

https://codezine.jp/article/detail/10739

あと、gnuplotを使うのは初めてだったので、参考になりました。
http://nalab.mind.meiji.ac.jp/~mk/labo/howto/intro-gnuplot/intro-gnuplot.html