銀河の歴史がまた1ページ(日記)

Last Update (2017/12/17 19:29:02)
1997.09.06から数えて counter 番目のアクセスです。

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

ページ内目次


■ 宇宙暦 2017.12.17

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171217

2017.12.17(日) Google Kubernetes Engine (GKE) 使ってみた (part 3)

Google Kubernetes Engine (GKE) 使ってみた (part 3)

tag:gke

公式ドキュメントに沿って遊んでみる...途中から外れるけど。

Persistent Diskの使用例はいきなり英語になっててワロタw

原文の英語版が凄い勢いで変化するから翻訳するの大変だけどさ。

GKEではvolumeとかsecretsを使う場合は、manifestファイル(APIで送るJSON内容)は手書きか。

実際にGKEを使う人はなんかツール使って自動生成するんだろうけど、あまり人力でやりたくないモノだなぁ。

以下はチュートリアルから離れて俺のwiki向けの操作に改変してある。

  1. Kubernetesクラスタ作る(数分かかる)(diskサイズはGCEの無料枠30GBにしてある。指定しない場合は100GBとなる。)
    gcloud container clusters create persistent-disk-tutorial --zone us-central1-a --machine-type n1-standard-1 --num-nodes 1 --disk-size 30
  2. persistent disk の表示。
    gcloud compute disks list
    以下実行例
    NAME ZONE SIZE_GB TYPE STATUS
    gke-persistent-disk-tuto-default-pool-xxxxxxxx-xxxx us-central1-a 30 pd-standard READY
  3. 現在選択中のコンテキスト名を表示。例:gke_{PROJECT_ID}_{zone}_persistent-disk-tutorial
    kubectl config current-context
  4. メモリの消費量をチェック。いきなり3.75GBノードの半分食われてるように見えるが・・。
    kubectl top node
    以下表示例
    NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
    gke-persistent-disk-tuto-xxxxxxx-xxxx-xxxxxxxx-xxxx 58m 6% 1432Mi 54%
  5. クラスタ情報を表示。GKEは色々動いている。minikubeの場合は1個しか動いていない。
    kubectl cluster-info
    以下表示例
    Kubernetes master is running at https://xx.xxx.xxx.xxx
    GLBCDefaultBackend is running at https://xx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/default-http-backend/proxy
    Heapster is running at https://xx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/heapster/proxy
    KubeDNS is running at https://xx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/kube-dns/proxy
    kubernetes-dashboard is running at https://xx.xxx.xxx.xxx/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
  6. storageclassの存在チェック。GKEはstorageClassName: standardが使えるのね。
    kubectl get storageclasses
    以下表示例。
    NAME PROVISIONER
    standard (default) kubernetes.io/gce-pd

以前のチュートリアルでkubectl run でdocker imageを直接走行させていた時は、自動生成されていたdeployment設定。 今回はvolume周辺の設定が増えているので、残念ながら手動生成となる。 (これくらいの内容ならkubectlで自動生成してくれても良さそうなものだが。)

ここでは、「claim-kjwikigdockerという名前のpersistent volume claimをvolumeとして使う。dockerコンテナからのmount位置は/var/lib/kjwikigdockerだ。」 という記述になっている。

元々のチュートリアル( https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk )では、「volumeとしてgcePersistentDiskを使う」と直接記述している。

これやるとminikubeとか別の環境で動かなくなるので後で面倒くさい感ある。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kjwikigdocker-deployment
  labels:
    app: kjwiwikigdocker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kjwikigdocker
  template:
    metadata:
      labels:
        app: kjwikigdocker
    spec:
      containers:
      - name: kjwikigdocker-container
        image: georgesan/kjwikigdocker:latest
        ports:
        - name: kjwikigdocker
          containerPort: 8080
        volumeMounts:
        - name: kjwikig-data-volume
          mountPath: /var/lib/kjwikigdocker
      volumes:
        - name: kjwikig-data-volume
          persistentVolumeClaim:
            claimName: claim-kjwikigdocker

上で「claim-kjwikigdocker」という名前のpersistent volume claimをvolumeとして使う、と言っていた中身を作成。

persistent volume claimという形式を使って、 「Read/Write可能な1GBのディスクが欲しい。ディスクの種類はstandardで良い。1ノードから使えればいい。」 という抽象的な記述になっている。

元々のチュートリアル( https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk )にあるように、 別途GCEに物理ディスクを用意してpersistent volumeとする手もあるのだが、 storageClassName: standardの場合は物理ディスクは自動的に要求(claim)に応じたディスクが用意される。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim-kjwikigdocker
spec:
  # if you ommit storageClassName, standard is default.
  # storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

以前のチュートリアルでは kubectl expose で行っていた操作。serviceの作成。 deployment.yamlを手動で生成してしまったので、自動生成できない。 というわけで手動でAPI用のJSONを作成する。

typeのところは、置く場所(GKE, minikube, ...etc)によって記述が異なる。 standard みたいなデフォルトは無いようだ。

kind: Service
apiVersion: v1
metadata:
  name: kjwikigdocker
  labels:
    app: kjwikigdocker
spec:
  # type ClusterIP(default) / NodePort(for minikube) / LoadBalancer(for GKE)
  type: LoadBalancer
  selector:
    app: kjwikigdocker
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

操作の続き。

  1. persistent volume claim の作成
    kubectl apply -f kjwikigdocker-standard-pvc.yaml
  2. persistent disk の表示。
    gcloud compute disks list
    以下表示例。1GBで別領域が作られてる。
    NAME ZONE SIZE_GB TYPE STATUS
    gke-persistent-disk-tu-pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx us-central1-a 1 pd-standard READY
    gke-persistent-disk-tuto-default-pool-xxxxxxxx-xxxx us-central1-a 30 pd-standard READY
  3. deployment の作成
    kubectl apply -f kjwikigdocker-deployment.yaml
  4. serviceの作成。GCEの有料オプションであるLoadBalancerを指定している。(俺のwikiはPod増やすと正常動作しなくなるから、ロードバランサー不要だけどなー)
    kubectl apply -f kjwikigdocker-service.yaml
  5. アプリの外部 IP アドレス(EXTERNAL-IP)をコピー。(ちょっと時間がかかる。Pendingならしばらく待ってもう一度。)
    kubectl get service kjwikigdocker
  6. アプリを表示(EXTERNAL-IP を前のステップで取得した外部 IP アドレスに置き換える)。
    http://EXTERNAL-IP:8080/
  7. メモリの消費量をチェック。(アプリが起動した状態。ここでは2112Miほど。79%。)
    kubectl top node
  8. 作成したサービスを削除して、サービスを提供するようにプロビジョニングされた負荷分散リソースを削除します。
    kubectl delete svc/kjwikigdocker deploy/kjwikigdocker
  9. サービスが停止するまで待ちます。
    kubectl get all,svc
  10. メモリの消費量をチェックします。
    kubectl top node
  11. サービスが終了するまで数分待ってから、次のコマンドを使用して作成したクラスタを削除します。
    gcloud container clusters delete persistent-disk-tutorial --zone us-central1-a

このまま1週間くらい動かしてGKEの課金額の推移みてみるか。 ログがどんな風にstack driverに出てくるのかも見物したいし。

しかし、上の手順、かなり多いよなww VPS(Virtual Private Server)でroot権もらってtomcatインストールした方が手数少なくない?と思わないでもないwww


■ 宇宙暦 2017.12.16

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171216

2017.12.16(土) Google Kubernetes Engine (GKE) 使ってみた (part 2)

tag:gke

今回も公式ドキュメントだけ見て遊んでみる。

以下、ちと困った点だけ補足説明を記述。

Your current project has been set to: [xxxx-xxxxxx-xxxxxxx].

Do you want to configure Google Compute Engine
(https://cloud.google.com/compute) settings (Y/n)?  n

ここらでクイックスタートに従って適当なdocker imageを走らせてみる。

  1. Kubernetesクラスタを作成します(このステップには数分かかることがあります)(まだクラスタを作っていない場合)(メモリ量はn1-standard-1の3.75GB。gcloudコマンドからはメモリ量は指定できない模様)。
    gcloud container clusters create example-cluster --zone us-central1-a --machine-type n1-standard-1 --num-nodes 1
  2. 既存のクラスタを使用する場合は、クラスタ名を指定して接続情報を取得。
    gcloud container clusters get-credentials example-cluster
  3. これから操作を行うデフォルトのクラスタ名を指定します。
    gcloud config set container/cluster example-cluster
  4. 現在選択中のコンテキスト名を表示します。クラスタ名が表示されます。
    kubectl config current-context
  5. メモリの消費量をチェックします。
    kubectl top node
  6. コンテナを実行します。(docker imageを指定するだけでdeployment自動生成)
    kubectl run hello-web --image=gcr.io/google-samples/hello-app:1.0 --port=8080
  7. コンテナを公開します。(serviceの生成)
    kubectl の type="LoadBalancer" オプションは、通常のロードバランサの料金に従って課金されるロードバランサをコンテナ用に提供するよう Google Cloud Platform に対して要求しています。
    kubectl expose deployment hello-web --type="LoadBalancer"
  8. hello-web アプリの外部 IP アドレス(EXTERNAL-IP)をコピーします。(ちょっと時間がかかる。Pendingならしばらく待ってもう一度。)
    kubectl get service hello-web
  9. アプリを表示します(EXTERNAL-IP を前のステップで取得した外部 IP アドレスに置き換えます)。
    http://EXTERNAL-IP:8080/
  10. 作成したサービスを削除して、サービスを提供するようにプロビジョニングされた負荷分散リソースを削除します。
    kubectl delete svc/hello-web deploy/hello-web
  11. サービスが停止するまで待ちます。
    kubectl get all,svc
  12. メモリの消費量をチェックします。
    kubectl top node
  13. サービスが終了するまで数分待ってから、次のコマンドを使用して作成したクラスタを削除します。
    gcloud container clusters delete example-cluster --zone us-central1-a

うんうん。普通に使える。俺のwikiのdockerイメージも同じ手で動く。

この段階でノード数は1個だけどメモリは3.75GBの石油王構成になってるので、常用は厳しいかなー。月額5,000円コースになる。

俺のwikiだけじゃなくて、たくさん(20個以上)マイクロサービスを立ち上げるならdocker手動管理もメンドクセ限界にくるから話は別になるかもだが。

やっぱこう、root権もらって自作で建てるVPS(Virtual Private Server)より割高な気がww (そのぶん、VPSだと設定の手間とかOS周辺のapt-get update ; apt-get upgradeの手間とか増えるけど)


■ 宇宙暦 2017.12.15

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171215

2017.12.15(金) chrome用 Webページ作者に便利なプラグイン紹介

HTMLエラーチェッカーだけ試したけど、割と便利だった。

リンク先チェッカーとかも便利そう。後で試そう。

2017.12.15(金) twitter社 mstdn.jpの管理者のtwitterアカウントを凍結

ぬるかるさん、あんま変なツイートはしない印象だけどな。

競合潰し?

p.s.

どうも、twitter APIを使って何か開発している人は粛清されている模様。toggeterも垢凍結されたらしい。


■ 宇宙暦 2017.12.11

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171211

2017.12.11(月) カリフォルニアの火災

なんか凄いことになっているようだ。

現地取材した山村さんの記事。上は今年の10月のヤツで、12月のヤツじゃないけど。

NHKとかCNNみたいな記事を短くまとめちゃうサイトでは乗らないような細かい話も載ってる。

避難所の様子が簡易担架ベッドベースなのは結構いいかもね。日本だと体育館床面直接だけど。


■ 宇宙暦 2017.12.10

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171210

2017.12.10(日) Google Kubernetes Engine (GKE) 使ってみた

tag:gke

とりあえず公式ページだけ読んで進めてみる。

GKE1.8.4でノードプールのノード数1、ノードのメモリ1GB設定で起動したら、heapster-v1.4.3のPodがメモリ不足で起動しなかった;;

意外に基本構成の監視系Pod+ログ転送系Podでメモリ食うのね。

heapsterとは何ぞや?という話は以下。

要するにCPUやメモリなどのリソース使用量を定期的に取得してDBとかStackdriverに転送する監視Pod。 heapsterが動いていると、kubectl top pod --all-namespaces (topコマンドみたいなモン) で情報が取れるようになるのだ。

一度1GBメモリに設定したKubernetesノードプールのインスタンスのメモリを後から増やすのは無理だったので、 一回Kubernetesクラスタを全消去。

ノード数1、メモリ2GBのノードプールを持つKubernetesクラスタを作成して実験。 これならheapster-v1.4.3 Podが起動する。

うーん。メモリ2GB必須かぁ。

今Amazon AWSから借りている Lightsail (Virtual Private Server)(VPS) はvCPU:1、メモリ:1GB構成で月額$10(約1000円)。 ここに俺のwikiを載せて遊んでいる。現状dockerは使っていなくてapache + tomcatを直接動かしているけど。

GKEも似たような値段で使えれば良いのだけど、自分のアプリ載せる前にメモリ2GB必須となると微妙なラインかもしれんね。 今現在、2GBノードに対してkubectl top nodeした時のメモリ使用率は48%。 俺のwikiはJavaのheapだけで600MB使うから、2GBノードじゃ足りないかもなー。むむむ。

まぁ、Kubernetes自体がそもそも大規模向け(ノード数3以上)管理ツールってのはあるんだけどもwww

2017.12.10(日) docomo SHARP AQUOS R SH03-J Android 8.0 Oreo へのアップデートきた

2017年7月16日に機種変更したSHARPのAndroid機 AQUOS R SH03-J にOREOアップデートがきた。

Oreo自体は2017年08月22日リリースなので、4カ月くらいで追いついた計算になる。結構早いかも?

Oreoについてのまとめは以下。

それでは早速アップデート。

フリック入力の時にバイブレーションするようになってしまったけど、どこで止めるんだっけ。 設定項目がたくさんありすぎて、設定の中で「バイブ」を検索して発見w

Android 8.0感が欲しかったので、ホーム表示をdocomo LIVE UXからAQUOS Homeに変更。

うはwww アプリの並びがぐちゃぐちゃにww TwitterとかInstagramアプリがどっかいったwwwアプリ一覧にも居ないwwwなんぞww

などと大混乱中。

ホームアプリ変更って結構大変なことなんやねぇ。


■ 宇宙暦 2017.12.09

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171209

2017.12.09(土) Word Pressにおけるカテゴリーとタグのメモ

Word Pressでは、カテゴリーとタグがあって、以下のような分類になる模様。

Word Pressなかなか便利だな。

というわけで、俺のwikiにタグ宣言とタグ検索を実装してみた。 行頭に「tag:キーワード」と書くと、記事にタグ設定をしたことになり、タグ検索リンクを生成する。

tag:wiki

HTML変換後だと検索サイトが無い(というかURL公開してもlocalhost...)のでタグ検索リンクは元々のtag文字列のまま表示する。

タグ指定のアーカイブ表示モードもつけたい所だが、後日の課題としよう。


■ 宇宙暦 2017.12.08

http://www.ceres.dti.ne.jp/~george/jdiaryB71201.html#20171208

2017.12.08(金) Google検索 医療情報の検索ランクロジック変更

ググるとウソ広告サイトばかりヒットする健康医療関係の情報だが、検索ロジックを変更したらしい。

素人のまとめ記事の検索ランクが下がったとのこと。

真贋判定までGoogle様の言う通りかよ...とも思うが、 実際問題WELQみたいなウソ広告サイトが検索ランキングを圧倒している現状、 どうしようもないのか。

2017.12.08(金) Windows 10のDocker Toolbox ( 17.10.0-ce ) のDocker Quickstart Terminalでエラーになる場合

つまり、以下のような修正で動作するようになる。

george@KabyLakeS /c/Program Files/Docker Toolbox $ diff -uw start.sh.orig start.sh
--- start.sh.orig       2017-10-19 00:09:36.000000000 +0900
+++ start.sh    2017-12-08 21:58:04.894821700 +0900
@@ -7,7 +7,7 @@
 # Docker for Windows when launching using the Quickstart.
 export PATH="/c/Program Files/Docker Toolbox:$PATH"
 VM=${DOCKER_MACHINE_NAME-default}
-DOCKER_MACHINE=./docker-machine.exe
+DOCKER_MACHINE=docker-machine.exe

 STEP="Looking for vboxmanage.exe"
 if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then
george@KabyLakeS /c/Program Files/Docker Toolbox $

Docker Quickstart Terminalのショートカットのプロパティを見ると、作業フォルダはC:\Program Files\Docker Toolbox\になっているから問題無さそうに見えるけど、 Docker Quickstart Terminalから起動されるbashは、(おそらく環境変数 HOME に従って ) C:\Users\georgeディレクトリにいるのでdocker-machine.exeが起動できないのだな。


■ 宇宙暦 2017.11.30

http://www.ceres.dti.ne.jp/~george/jdiaryB71101.html#20171130

2017.11.30(木) ニコニコ動画の「niconico(く)」発表会で炎上

11月28日夜の発表会場は、しんとしていた。逆に配信画面は怒号のようなコメントで覆われた。(中略)。いつもの会見であれば壁一面に流れているコメントは途中で表示されなくなった。

ニコ動の企業風土は↑で代表されてる感ある。

とあるゲーム関連の動画なんかでは(まっとうな内容でも)批判的なコメントするとアカウント単位にNGポイント-3000くらい食らって、 他の動画へのコメントも他の人には全く表示されなくなる隠蔽系の機能が非常に充実しており、 現実問題としてめっちゃ濫用されている。

あそこにコメント書くくらいなら、5ちゃんねるで動画実況してた方がマシなレベル。

動画再生中に転送が追い付かずに再生がとまったり、画質が悪いのも問題だけど、コメント機能がアレじゃ本当に良いところが無い。

p.s.

一応、対策する予定らしいけど大人の事情で無理ゲーなのは予想できる。 できるモンならもうやってるハズ。

Google / You Tube相手の資金量・ネットワーク資源・コンピューティング資源の戦いを避けたいから、 無駄な新機能(く)を発表してお茶を濁していたのに総スカン食らったのだ。

p.p.s.

ニュー速+で拾った書き込み。百花繚乱さんの発表会見ながら生放送が面白かったwww

559 名無しさん@1周年 2017/11/30(木) 12:47:34.93 ID:h9Lz2YSF0
運営の発表映像への突っ込みがとても良いw
44分もあるが最初の3分で笑える 見て笑って欲しい
誰でも視聴可能(ちょい下) ニコゾン版
http://www.nicozon.net/watch/sm32339177

後日談 12/5


■ 宇宙暦 2017.11.25

http://www.ceres.dti.ne.jp/~george/jdiaryB71101.html#20171125

2017.11.25(土) 俺wikiの表示文字コードをUTF-8に変更

ここの日記は(というかサイト全体が)iso-2022-jpで、もう変更できないから変換かけてるけど。

表示をUTF-8にすると、スマフォ絵文字が普通に読み書きできるww

たとえば、TomcatのChangeLog ( https://tomcat.apache.org/tomcat-8.0-doc/changelog.html ) は、現在は小さな画像を使って変更の種類を表現してるけど、 そのうち絵文字表記になるかもしれんね。


■ 宇宙暦 2017.11.17

http://www.ceres.dti.ne.jp/~george/jdiaryB71101.html#20171117

2017.11.17(金) FreeBSD 11.1 RELEASE Security Advisories 出てた

余談だが、ウチでは以下のようなシェルを使って、アドバイザリーが出たら手動でアップデートしてる。

#!/bin/sh
#
# freebsd update
#
if [ x"$1"x = x"all"x ]; then
    set -x
    sudo freebsd-update fetch
    sudo freebsd-update install
    set +x
fi

set -x
sudo pkg audit -F
sudo pkg update
sudo pkg upgrade
set +x

# end of file

アップデート後再起動。バージョンはp4になった。

ssh george@n3050 ~ $ freebsd-version -ku
11.1-RELEASE-p4
11.1-RELEASE-p4
ssh george@n3050 ~ $

old day diaries...


日記ファイルリスト最新100件


Copyright(c) 1996-2017 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。
メール本文に 6020-5440-3372 と書いて頂くと、ウチのSPAMフィルタを通過できます(2009-06-14から2018-12-31まで)。

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using white list SPAM filter. To avoid it, please write 6020-5440-3372 in mail body. This key word is valid since 2009-06-14 until 2015-12-31.)