ただふれたものについて書くブログ

あんまり正しくない話を適当に書くブログ

Kubernetes こと始め (2) - Service

taizo.hatenablog.jp

続きです。

事前準備

ここからDockerイメージを2つ用意する。

gcr.io/<project-id>/test-app1GET /test-1 OK

gcr.io/<project-id>/test-app2GET /test-2 OK

が返ってくるとする。

それを使ってPodをふたつ立てておく。

dev-pod1.yml

apiVersion: v1
kind: Pod
metadata:
  name: test-app1
  labels:
    run: test
spec:
  containers:
  - name: test-app1
    image: gcr.io/<project-id>/test-app1:latest
    ports:
    - containerPort: 80

dev-pod2.yml

apiVersion: v1
kind: Pod
metadata:
  name: test-app2
  labels:
    run: test
spec:
  containers:
  - name: test-app1
    image: gcr.io/<project-id>/test-app2:latest
    ports:
    - containerPort: 80

それぞれPodを作成しておく。

$ kubectl create -f dev-pod1.yml
$ kubectl create -f dev-pod2.yml

(ここから先 kubectl create の記述は省きます )

Serviceとネットワーク

Docker で必要となるのは

  • Docker内のコンテナ間のやりとり
  • 外部とのやりとり

これらを設定していくのにServiceというのを用意していく。

Service

http://kubernetes.io/docs/user-guide/services/

minion 上で動作するNetwork Proxy の設定単位。

いくつかのTypeがあり、それらを組み合わせて構成していく。

NodePort

内部ネットワークの設定時に使う。

selector でどのPodに紐づけるかを決める。

dev-np.yml

apiVersion: v1
kind: Service
metadata:
  name: dev-np
spec:
  selector:
    run: test
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31707
      name: http

selectorで対象となるPodが含まれるようにしておく。 Podsには run=test が設定されているので、それを指定。

ちなみに、Serviceを作成するとfirewall についてのWarningが出る。

$ kubectl create -f  dev-np.yml
You have exposed your service on an external port on all nodes in your
cluster.  If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:31707) to serve traffic.

See http://releases.k8s.io/release-1.3/docs/user-guide/services-firewalls.md for more details.
service "dev-np" created

直接自分のPCから動作を確認するには、GCPのfirewall を設定すれば、nodePort経由でアクセスできるようになる。

$ gcloud compute firewall-rules create my-rule --allow=tcp:31707

と、firewallに新しいルールを追加。 あとは各nodeの外部IPを確認して、そこにアクセスをして確認ができる。

$ kubectl get nodes -o json | jq ".items[]|{name: .metadata.name, externalIP: .status.addresses[1].address}"
{
  "name": "gke-kube-test-cluster-default-pool-771fd355-34h9",
  "externalIP": "104.199.214.47"
}
{
  "name": "gke-kube-test-cluster-default-pool-771fd355-6ejb",
  "externalIP": "104.199.206.123"
}
{
  "name": "gke-kube-test-cluster-default-pool-771fd355-dleq",
  "externalIP": "104.199.156.133"
}
$ curl http://104.199.156.133:31707
test-1 OK

LoadBalancer

わざわざfirewallの設定を入れたように、通常は外からServiceへのアクセスはできない。

    internet
        |
  ------------
  [ Services ]

NodePortを使った場合、firewallの設定をいじったが、LoadBalancerやIngressを使えば良きようにやってくれる。

    internet
        |
   [ Ingress, LoadBalancer  ]
   --|-----|--
   [ Services ]

外部からのアクセスを負荷分散させたい場合は、そのままの名前のLoadBalancerというタイプがある。

dev-lb.yml

apiVersion: v1
kind: Service
metadata:
  name: dev-lb
spec:
  selector:
    run: test
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

これで80ポートにアクセスがあった場合に、label が run=test と指定されているPodの80にアクセスできるようになる。 podsを取得したときに --show-labels で確認できる。

$ kubectl get pods --show-labels
NAME        READY     STATUS    RESTARTS   AGE       LABELS
test-app1   1/1       Running   0          54s       run=test
test-app2   1/1       Running   0          50s       run=test
$ kubectl get svc dev-svc
NAME         CLUSTER-IP     EXTERNAL-IP      PORT(S)   AGE
dev-lb       10.3.251.63   104.199.223.53   80/TCP    3m

$ kubectl describe svc dev-lb
Name:           dev-lb
Namespace:      default
Labels:         <none>
Selector:       run=test
Type:           LoadBalancer
IP:         10.3.251.63
LoadBalancer Ingress:   104.199.223.53
Port:           <unset>   80/TCP
NodePort:       <unset>   32134/TCP
Endpoints:      10.0.0.5:80,10.0.2.5:80
Session Affinity:   None
Events:
  FirstSeen LastSeen    Count   From            SubobjectPath   Type        Reason          Message
  --------- --------    -----   ----            -------------   --------    ------          -------
  4m        4m      1   {service-controller }           Normal      CreatingLoadBalancer    Creating load balancer
  3m        3m      1   {service-controller }           Normal      CreatedLoadBalancer Created load balancer

LoadBalancer Ingress: 104.199.223.53 というものができて、そこにアクセスできるようになる。

Ingress

SSLでLoadBalancerを使いたかったりパスで制御したい場合は、細かい設定が必要な場合は Ingress を利用する。 Serviceがレイヤ3(TCP/UDP over IP)。Ingressがレイヤ7(HTTPS)の取り扱い担当。 Ingressは、外部からのURLアクセスはもちろん、パスでの振り分け、LoadBalancer、SSLの設定などいろいろできる。 ただこのIngress,ベータ。apiVersion: v1beta1 になっている。

試すために、まずは NodePort を作る

dev-np.yml

apiVersion: v1
kind: Service
metadata:
  name: dev-np
spec:
  selector:
    run: test
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      name: http

次にそのNodePortをbackendにしたIngressを作成する

dev-ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-ingress
spec:
  backend:
    serviceName: dev-np
    servicePort: 80

/ にきたら、dev-np serviceに送る設定。

作成して最初はGlobalIPが振られない。

$ kubectl get ing
NAME          HOSTS     ADDRESS   PORTS     AGE
dev-ingress   *                   80        12s

作成してしばらくするとADDRESSが振られる。

$ kubectl get ingress dev-ingress
NAME          HOSTS     ADDRESS        PORTS     AGE
dev-ingress   *         130.211.20.6   80        1m

まだ設定完了ではなく、Annotations.backendsにあるBackendnの値が変わるのを待つ必要がある。

$ kubectl describe ing
Name:           dev-ingress
Namespace:      default
Address:        130.211.20.6
Default backend:    dev-np:80 (10.0.0.5:80,10.0.2.5:80)
Rules:
  Host  Path    Backends
  ----  ----    --------
  * *   dev-np:80 (10.0.0.5:80,10.0.2.5:80)
Annotations:
  backends:     {"k8s-be-31291--b0f63256b44dff5c":"Unknown"}
  forwarding-rule:  k8s-fw-default-dev-ingress--b0f63256b44dff5c
  target-proxy:     k8s-tp-default-dev-ingress--b0f63256b44dff5c
  url-map:      k8s-um-default-dev-ingress--b0f63256b44dff5c
Events:
  FirstSeen LastSeen    Count   From                SubobjectPath   Type        Reason  Message
  --------- --------    -----   ----                -------------   --------    ------  -------
  2m        2m      1   {loadbalancer-controller }          Normal      ADD default/dev-ingress
  1m        1m      1   {loadbalancer-controller }          Normal      CREATE  ip: 130.211.20.6

5分くらいすると Unknown が HEALTY に切り替わる。

Annotations:
  backends:     {"k8s-be-31291--b0f63256b44dff5c":"HEALTY"}

するとLoadBalancerのときと同じようにアクセスができるようになる。

$ curl http://130.211.20.6
test-1 OK

まとめ

Serviceの設定はかなり簡単でいろいろな組み合わせができる。 次はちょっと時間置いてから、kubectl apply を使った設定更新周りの話を書く。

参考

Kubernetes こと始め (1)

フロントエンドエンジニア向けにKubernetesの勉強会を軽くすることになったので、それ用のメモ。 Google Container Engineで動かすこと前提。

gcloudのinstall

https://cloud.google.com/sdk/docs/quickstart-mac-os-x で。

設定

# ログイン
$ gcloud auth login
# デフォルトproject設定
$ gcloud config set project PROJECT_ID`
# デフォルトリージョン設定
$ gcloud config set compute/zone asia-east1-a

リージョンについては下にあるものを選ぶ。 https://cloud.google.com/compute/docs/regions-zones/regions-zones

kubectlのインストール

$ gcloud components install kubectl

クラスタを作成する

$ gcloud container clusters create --machine-type=f1-micro kube-test-cluster
Creating cluster kube-test-cluster...done.
Created [https://container.googleapis.com/v1/projects/ <PROJECT_ID>/zones/asia-east1-a/clusters/kube-test-cluster].
kubeconfig entry generated for kube-test-cluster.
NAME               ZONE          MASTER_VERSION  MASTER_IP        MACHINE_TYPE  NODE_VERSION  NUM_NODES  STATUS
kube-test-cluster  asia-east1-a  1.3.6           104.199.203.122  f1-micro      1.3.6         3          RUNNING

machine-type で性能を選ぶ。 クラスタが立ち上がるとnodeができる。 デフォルトだとnodeが3つできる。

$ kubectl get nodes
NAME                                               STATUS    AGE
gke-kube-test-cluster-default-pool-0bed821e-795n   Ready     4m
gke-kube-test-cluster-default-pool-0bed821e-iac7   Ready     4m
gke-kube-test-cluster-default-pool-0bed821e-mxu9   Ready     4m

Container Registry にimageを登録する

Docker Imageのプライベートな置き場所としてGoogle Container Registry というのがあるので、そこのイメージを置いてみる。

$ docker pull nginx
$ docker tag nginx gcr.io/ <PROJECT_ID>/nginx
$ gcloud docker push grc.io/ <PROJECT_ID>/nginx

とりあえずオフィシャルの nginx を取得して、自分の環境のタグをつけてPushをしている。

Container Registryのイメージをpullしてくる

ちなみにレジストリにあるイメージをGCP外の自分の環境で取得したい場合は gcloud docker が使える。

$ gcloud docker pull gcr.io/ <PROJECT_ID>/nginx

docker run

クラスタ内部でdocker containerを作成する

$ kubectl run test-1 --image=gcr.io/ <PROJECT_ID>/nginx:latest --port=80
deployment "test-1" created

これで DeploymentReplication Controller Podsが作成される。

$ kubectl get deployments
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
test-1    1         1         1            1           59s
$ kubectl get pods
NAME                      READY     STATUS    RESTARTS   AGE
test-1-4012555373-4cptm   1/1       Running   0          1m

リソースタイプ

PodやReplication Controllerなど構成する上で知る必要があるものがいくつかある。

すべて kubectl から生成できる。 これらは引数で直接値を渡していたが、-f を使って設定を丸ごと渡せる。

kubectl create -f example.yml

Pods

いくつかのコンテナをグループ化したもの。 Kubernetesの操作は必ずこの単位で操作を行う(コンテナ単位じゃない)。

Pod内コンテナは同一ホスト上に配備される。 Pod内は仮想NICやプロセステーブルを共有。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-1
spec:
  containers:
  - name: nginx-1-1
    image: gcr.io/ <PROJECT_ID>/nginx:latest
    ports:
    - containerPort: 80

こんな設定をしておけば、kubectl create -f dev.yml kubectl delete -f dev.yml などの操作が可能になる。

Replication Controlles(RCs)

Podのレプリカ数を維持するための機能。

apiVersion: v1
kind: ReplicationController # kindをReplicationControllerに
metadata:
  name: nginx-rc-1
spec:
  replicas: 2  # レプリカ数の定義
  selector:    # どのPodを監視対象にするかの設定
    app: petshop  # labelにpetshop があるやつ
  template:
    metadata:
      labels:  # labelにペットショップを設定
        app: petshop
    spec:
      containers:
      - name: nginx-1-1
        image: gcr.io/ <PROJECT_ID>/nginx:latest
        ports:
        - containerPort: 80

これでReplication Controllerが出来て、podsができる

$ kubectl create -f dev-rc.yml
$ kubectl get rc
NAME         DESIRED   CURRENT   AGE
nginx-rc-1   2         2         3m
$ kubectl get pods
NAME               READY     STATUS    RESTARTS   AGE
nginx-rc-1-igrbw   1/1       Running   0          1m
nginx-rc-1-mi9jg   1/1       Running   0          1m

これでpodsだけ消してもすぐに立ち上がるようになる。

$ kubectl delete pods nginx-rc-1-mi9jg
pod "nginx-rc-1-mi9jg" deleted
$ kubectl get pods
NAME               READY     STATUS    RESTARTS   AGE
nginx-rc-1-hi59s   1/1       Running   0          4s # 新しくなった
nginx-rc-1-igrbw   1/1       Running   0          3m

Deployments

http://kubernetes.io/docs/user-guide/deployments/ kubectrl run で実行すると、Pods ReplicationController の他に Deploymentまで作成される。 Deploymentは、RollbackやDeployの停止や状態などを管理している。

serviceを作ってアクセス可能にする

今のままでは、外部からのアクセスができない。なのでServiceを作って外からアクセスできるようにする。

$ kubectl expose deployment test-1 --type="LoadBalancer"
service "test-1" exposed
$ kubectl get services
NAME         CLUSTER-IP     EXTERNAL-IP       PORT(S)   AGE
kubernetes   10.3.240.1     <none>            443/TCP   5h
test-1       10.3.241.155   104.199.150.106   80/TCP    21s

これで curl http://104.199.150.106 でnginxにアクセスできるようになる。

$ curl http://104.199.162.243
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

詳細は(2) で。

deployment の削除

Deploymentが削除できればReplication ControllerもPodも削除できる。

$ kubectl delete service test-1
service "test-1" deleted
$ kubectl delete deployment test-1
deployment "test-1" deleted
$ gcloud container clusters delete kube-test-cluster
The following clusters will be deleted.
 - [kube-test-cluster] in [asia-east1-a]

Do you want to continue (Y/n)?  Y

Deleting cluster kube-test-cluster...done.
Deleted [https://container.googleapis.com/v1/projects/ <PROJECT_ID>/zones/asia-east1-a/clusters/kube-test-cluster].

まとめ

ざっくり動く環境を持ちたいならこんな感じ。 次は Service と Networking についてまでまとめられれば、事始め的には良さそう。

(追記) 書きました。

taizo.hatenablog.jp

参考

Kubernetes - User Guide qiita.com

8月に読んだ本

1週間で書いていこうと思ったけれど、8月はなかなか書く余裕がなかったので月でまとめてです。

ダンジョン飯。1年ぶりの最新刊。今回は人魚、クラーケン、大ガエルなど水属性っぽいモンスターが登場。 ダンジョンのモンスターを使った異色のグルメ漫画って謳い文句だけど、キャラクターのやりとりが相当うまい。 多くを語るわけではないキャラたちが、ゆるく協力したり、対立したりする流れに毎回感心する。 今回も過去に同じ仲間だったメンバーとの駆け引きは、舞台設定を使いこなしていると思う。 読めば読むほど、味がでる。はやく次巻読みたい。

会社終わって、お酒飲んで帰ったりすると電車の中で勢いでKindleまとめ買いしてしまうことがある。 それで朝起きたら、記憶の薄い本がKindle アプリの中に並んでいて、あーなんで買ったんだろってなるのだけど そんなのがこの漫画。カイジの初期のライバル。利根川を主人公にしたスピンオフ。でも完全なギャグ漫画。

上司である会長と11人の黒服の部下に囲まれた利根川の中間管理職の生き様。

限定ジャンケンの企画出しなど、完全に原作が前フリになっていて、この本を読んだ後に本編を読むと本編の緊張感がまともに受け取れなくなる。それくらい面白い。どうしてこうなった感がある。

スタンフォードのストレスを力に変える教科書

スタンフォードのストレスを力に変える教科書

TEDの動画が有名なケリー・マクゴニガル。

www.ted.com

刺激を与えた後の反応をストレスだと誤解されているが、そうではなくストレスは力になることもあるという主張。 注射をして、注射痕が腫れるた時、腫れ物をストレスと誤解を受けるが、注射という行為がストレスである、と。

プレッシャー下では不安を感じるが、それはチャレンジ反応でもあり、その不安から新しい行動を起こす力を与えてくれる。 これは大学の試験などで効果を発揮してくれるそうだ。

ところで、刺激とそれに対する反応といえば、7つの習慣の主体性のモデルを思い出す。

www.franklinplanner.co.jp

もう色々な人が色々な観点で言っている以上、 刺激から反応までの間にどれだけのことができるかは、うまく世の中やっていくために重要なことなんでしょね。

Kindle Unlimited 登録してみた。

www.amazon.co.jp

Kindle Unlimited 。極端に人気の作品はないものの、自分の中でふと気になったことがあるものが結構あり月1000円ならばアリ。

気になった本を少しだけ。

直近のビジネス本だと、これが一番のキラー。これを買うだけで1ヶ月分の元は取れるんじゃなかろうか。いったい本はどうやって儲けていくんでしょうかと不安がよぎる。

国民クイズ  上

国民クイズ 上

国民クイズ 下

国民クイズ 下

マンガは、最初の数巻だけUnlimitedになっているというのが多いみたいなので、下手に読むより完結しているものを選んだほうがよさそう。

そういう意味では短編や数巻で終わる手塚治虫のマンガを読み漁るのに適していたりする。

雑誌はdマガジンとかぶっていようでいないらしく、dマガジンから移行しきれない感じがもどかしかったりする。しばらくは並行で登録予定。

スピッツの新しいアルバム「醒めない」に打ちのめされる

醒めない(初回限定盤)(DVD付)

醒めない(初回限定盤)(DVD付)

スピッツの新しいアルバム。

もうね、久しぶりにスピッツがロックバンドであることを思い知らされる。


スピッツ / 醒めない 【Short Ver.】

1曲目の醒めないが、このアルバムの方向性を指し示しきっている。

まだまだ醒めないアタマん中で ロック大陸の物語が

最初ガーンとなったあのメモリーに 今も温められている

さらに育てるつもり

え、スピッツってこんなに具体的な歌詞の曲あったっけ?ってくらいに強烈でインパクトある1曲目。 その期待に応えるかのような曲だらけ。昔のアルバムでいうならば、ハヤブサ三日月ロック 的な位置づけなんだろうけれど なにか軽くなった感がある。

最近音楽のネット販売が浸透したので、1曲単位での購入が多いけれど久しぶりにアルバム通しで良いなあって。自分の若いころに辿ってきたバンドだから余計にね。

2016/07/18 から 2016/07/24 に読んだ本

最初に全然タイトルと関係ない話を書くけれど 週末 ポケモンGO をやっている人がすごかった。

もう歩きスマホしている人がみんなポケモントレーナーに見えてくる。

実はいままでポケモンをやっている人はそれだけいたのかもしれないけれど、 それが実際に可視化されたことの凄さを思い知った週末。

今週読んだ本

確率思考の戦略論  USJでも実証された数学マーケティングの力

確率思考の戦略論 USJでも実証された数学マーケティングの力

ビジネス上でのマーケティングの役割について、実例と照らし合わしながらどのような振る舞いをしていったかという本。

著者の経歴がP&G、USJなので、そこらへんの具体例が多め。

とはいえ、P&Gの後の USJマーケティングを合わせていくときの試行錯誤がキモな気がした。

マーケティングを研究している立場の人だったらば、業界ひとくくりみたいに話がされるのだろうけれど この本の場合は、実例からの逆算。そのまま明日から使えるって本ではない。

具体的な公式もあるけれど、むしろマーケティング担当の心意気みたいなのがわかるのが印象的。

ジョジョリオンも13巻。初回の伏線の回収もあり、過去と現在をいったり来たりしながら、それぞれのキャラの思惑が張り巡らされてる。

表紙に出ている敵の田最環がすごく良いキャラをしている。ここに来てジョジョリオンの中で一番面白い展開だと思う。

基礎心理学の見解から、「時間の使い方」についてのあれこれ。

人によって時間の感じるスピードは違う、作業効率を高めたり、退屈な時間を早く感じたり、楽しい時間を長引かせたりするのにはどうすればいいか、など。

海外のこういう本って臨床実験の結果と一緒に書かれていて読むの大変なことあるけれど、この本はわかりやすさ重視。

「時間の使い方」を科学するの中で、ちょっと紹介のある処刑は3時におわったが入っている短編集。

表題の 時計じかけのりんごの導入がうますぎて昭和45年とは思えない。全体的に大人向け。

来週

先週うっかりまとめて買ってしまった投資関連の本がまだあるのでそれの消化。

あと サーバントリーダーシップコンテナ物語―世界を変えたのは「箱」の発明だった あたりが積ん読状態なのでそこらへんを読む予定。

2016/07/11 から 2016/07/17 に読んだ本

今まで一冊を全部読んでからどこかに文章でまとめていたものの、最近、乱読が激しくなってしまい、一冊を読み切るのに時間がかかるようになってしまった。なので、最近読んだ本を定期的にまとめることにしてみた。色々あるので感想とかはかなり雑。

投資・資産運用関連

いちばんカンタン!株の超入門書 改訂版

いちばんカンタン!株の超入門書 改訂版

決算書がスラスラわかる 財務3表一体理解法 (朝日新書 44)

決算書がスラスラわかる 財務3表一体理解法 (朝日新書 44)

株を買うなら最低限知っておきたい ファンダメンタル投資の教科書

株を買うなら最低限知っておきたい ファンダメンタル投資の教科書

マーケットの魔術師 ? 米トップトレーダーが語る成功の秘訣

マーケットの魔術師 ? 米トップトレーダーが語る成功の秘訣

  • 作者: ジャック・D.シュワッガー,横山直樹,Jack D. Schwager
  • 出版社/メーカー: パンローリング
  • 発売日: 2001/08/01
  • メディア: 単行本
  • 購入: 9人 クリック: 87回
  • この商品を含むブログ (35件) を見る

インベスターZ(1)

インベスターZ(1)

Brexist の後あたりに株式投資をはじめてみたものの、思っていた以上にちゃんとしないと機会を逃すことに気づいてしまったので、連休中に株投資の初心者本や今まで買ってたけれど読んでいなかった本を読み漁ってた。ファンダメンタル分析テクニカル分析でさえもよくわかってないまま買ってました、ごめんなさい、ちゃんと色々あるんですね、と反省した。

それで色々読んだ結果、まずは「買う前にどこまで上がったら、下がったら売るか」をきちんと決める重要性を知った。

もうひとつ、インベスターZにあったセリフで

なぜなら…真の投資家は投資について議論はしない 議論というものは個人の拘りを生み出してしまうからだ

っていうのがあるのだけど、「議論を避ける」 というのが 人を動かす 文庫版 にもあったりして、どうも優秀な人は議論をしないことが多いようで。なんとなく職場とかで、みんなが納得するまで詰めるべきという空気があることもあるけれど、実際は議論をゆるく回避して実務に励むほうが効率がよかったりするので、この議論を避けるという行為は不思議なものだなぁと思ったりする。

その他

確率思考の戦略論  USJでも実証された数学マーケティングの力

確率思考の戦略論 USJでも実証された数学マーケティングの力

2/3 くらい読んだ。統計学知識を実際のマーケティングに落とし込んだらどうなるかをできるだけわかりやすく説明している印象。計測の仕方とか面白い。あとで詳しく書く。

サーバントリーダーシップ

サーバントリーダーシップ

読みはじめ

知らないと損する 池上彰のお金の学校 (朝日新書)

知らないと損する 池上彰のお金の学校 (朝日新書)

はじめて池上さんの本を一冊読んでみた。池上さんってテレビ番組でしゃべっているスキームをそのまま本に持ってきていて凄いと思う。

漫画

連載のほう追ってる。すごい鬱展開になったけれど、そこから這い上がる兆しを見せる感じがすごい。どうなるんだろ。

こっちも別冊月刊マガジンのほう。先月号と今月号をいっぺんに読んだけれど、これほど売れている漫画でこの展開あるのだろうかってくらいすごい。

まとめ

なんとなく今の本屋に置いてある株式投資にまつわる本は目を通してみたけれど、上で挙げた本でお腹いっぱい感がある。あとはマーケットの魔術師シリーズを流し読みしながら、実際の数字をみて上がった下がったの反省をしつつ、自分の興味の範囲を広めていくのが正しい気がした。今週は確率思考の戦略論を読み切らねば。