Caffè Latte

日々を徒然に

スポンサーリンク

Cypressを使ってVueアプリケーションにアクセスした時の500エラー

Cypressを使ってVueアプリケーションにアクセスした時の500エラー

/sockjs-node/info?t=にアクセスしようととして500エラーで落ちていた。

どうやらnpm run serveのバグらしい

https://github.com/vuejs/vue-cli/issues/1472

なので

config/index.jshost: "localhost"require("os").hostname();にすれば解決

今年度やりたいこと

あけましておめでとうございます。

昨年は色々やりました

雑い

色々できるようになった一年でした。 今年も色々やりたいです。

この三が日はほぼほぼ生産性がなくて、やったことといえばギターのペグを交換したくらいでした。

授業の関係で、もう少し冬休みがあるので、これからは生産性を高めていきたいと思います。

今年やりたいことを書きます

今年やりたいこと一覧

抽象的な方

  • 自分に自信をつけたい
  • やる気のない日を少なくする
  • 痩せる
  • 人間関係を円滑に

具体的な方

  • kubenetes完全理解
  • 某プロジェクト終了
  • 新しいバイト先を探す
  • 卒論をかく
  • 機械学習、統計解析に詳しくなる(研究のため)
  • 本を読む

ざっとこんなところ 頑張っていきたいです。

Wordpress on Docker

Docker compose

version: '3'

services:
   mysql:
     image: mysql:5.7
     volumes:
       - "$PWD/mysql_data:/var/lib/mysql"
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: password
     networks:
       - wordpress_network

   wordpress:
     depends_on:
       - mysql
     image: wordpress:latest
     ports:
       - "8080:80"
     environment:
       WORDPRESS_DB_HOST: mysql:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: password
     volumes:
       - "$PWD/wordpress_data:/var/www/html"
       - "$PWD/wordpress_data/.docker/backup:/tmp/backup"
       - "$PWD/wordpress_data/.docker/log:/tmp/log"
     networks:
       - wordpress_network

volumes:
  mysql_data:
networks:
  wordpress_network:

コマンド

起動

docker-compose up -d

終了

docker-compose down -v

感想

本番環境で動かす際には、DBのパスワードとか別にしたいし、CD環境も用意したいけど、どうするのが最適化よくわからない テーマ的な部分は多分phpファイルだけ写せば動くのかな?

本番環境はホスティングするものによって違うし、ツールが提供されてるとも限らないから、難しい

多分デプロイは

【完全マスター】Wordpress(ワードプレス)をローカルから本番への移行手順〜Xserver編〜 - 28歳からはじめるフリーランスLIFE!

この辺を見ながらやればうまくいくと思う ただやってないのでなんとも言えない

wordpressの公式イメージにphpMyAdmin入ってないで、入れたコンテナイメージ焼かないとですね〜

www.conoha.jp

zshの補完が崩れる問題

崩れるとは

zshのPROMPTをいじると以下のようにzshの補完が崩れるときがあります。 f:id:Nozomi_M:20181231222602p:plain

原因

colorの指定の際

${fg[green][hoge]

としていたのがよくなかった

%{${fg[green]%}[hoge]

とcolorの指定に%{ %}を入れてあげれば解決する

参考

stackoverflow.com

manifest for not foundの解決方法

Dockerfileを書いて, dockerbuildをしたら

manifest for not found

と出て来た 原因は

FROM hoge

hogeにタグをつけていなかったので hoge:latest なりよしなにタグをつければ動く

Raspberry Piで作るk8sクラスタ

Raspberry Piで作るk8sクラスタ

この記事は Aizu Advent Calendar 2018 の9日目の投稿です。 昨日の記事はNoahOrbergくんの記事でしたね、彼のdotfileはとても参考になるのでおすすめです。 noahorberg.hatenablog.com

明日はout1ogicさんの投稿です。楽しみですね

昨日会津では雪が降ったらしいです。例年に比べてだいぶ遅かったんじゃ無いかなと思います。 今年は暖冬と言われますが、今年の雪はどうなるのでしょうか 学部一年の頃はとてもワクワクして、昨日の投稿をした NoahOrbergくんと 雪ダイブ(下に参考資料)をして楽しみました f:id:Nozomi_M:20181208225723j:plain 本格的な冬を迎える会津がとても楽しみです。昨年は雪降る中檜原湖を一周したり、滝沢不動滝で車をスタックしたりと思い出がたくさんありました。僕は会津出身では無いので、地元では楽しめないこの雪景色がとても大好きです。今度会津のおすすめスポットとかも紹介したいですね。冬場はオリオン座の季節なので、しっかり会津とオリオン座を撮りたいなあと思ってたりします。 今年も楽しみです。


はじめに

Raspberry Piでkubenetes(以降k8s)のクラスタを作って行きたいと思います。

わざわざ作らないとk8sの検証ができないということはなく、minikubeやgcpを使ったりして学ぶことはできます。予算的には2万5千円くらいかかるので、kubenetesに関して学びたいだけならgcp借りてやったほうが安いですし、余計なトラブルはないと思います。

個人的にはその技術をちゃんと1から触ってみないとよく理解できないということが往往にしてあるので、ちゃんと作りたいという意志で作りました。

また、本記事の内容はほとんど サイバーエージェントさんの出している記事ウェディングパークさんの出している記事 と同じですが、一部足りない点やハマったところがあったので書いています。

今年の9月に発売された本Docker/Kubernetes 実践コンテナ開発入門 がとてもわかりやすいです。 kubenetesの運用や、Dockerの軽量化の話まで乗っているのでとてもお勧めします。

材料

以下の材料が必要です。

f:id:Nozomi_M:20181208225345j:plain

大まかな流れ導入流れ

以下のような流れでRaspberry Piクラスタを作って行きます。

  1. Raspberry Piクラスタに組む
  2. Dockerとkubenetesをインストール
  3. クラスタを設定

構成図

今回作るクラスタは以下のような構成で作っています。 環境によっては、ルーター

f:id:Nozomi_M:20181208225238p:plain

導入

ハマりどころ

先にハマりどころを書いておきます。

  • Dockerは18.06出ないとk8sを起動できない

  • kubeletのバージョンを固定しないとノードをjoinできない

    • 後からノードを追加するときにkubeletのバージョンが違かったのでエラー吐かれることがありました。一気にやる場合は大丈夫です。
  • IPを固定してあげたほうがいい、PrivateIPが振られる環境で作らないと厳しそう


OSのインストール、SSHの有効化まではよしなに

Raspberry Piの設定

  • raspberry piのIPを固定します。 /etc/dhcpcd.confに編集します。コメントアウトと追記で動きます。終わったら再起動してあげてください。
  interface eth0
  static ip_address=192.168.0.{指定したいIP}/24
  static routers=192.168.0.1 # ルーターのIPアドレス
  • /boot/cmdline.txtに以下の内容を追加します。改行せずに、一行で追加してください
cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
  • スワップの削除をします。kubeletを起動するのに必要です。
sudo dphys-swapfile swapoff
sudo dphys-swapfile uninstall
sudo update-rc.d dphys-swapfile remove

Docker, k8sの設定

  • Dockerを追加します。Dockerのバージョンを18.06にしています。
curl -sSL https://get.docker.com/ | sh
sudo apt remove docker-ce docker-ce-cli 
sudo rm -rf /var/lib/docker
VERSION=18.06.1-ce sh get-docker.sh
  • apt-transport-httpsをインストール
sudo apt install apt-transport-https
  • k8sをインストール
# 鍵登録
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# aptのリソースのリストにk8sを追加
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
# k8sの各種ツールをインストールします
sudo apt-get install kubelet kubeadm kubectl kubernetes-cni
  • master nodeのセットアップ
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

を行い、master nodeを立ち上げます。コンテナ間の通信をflannelでやるので--pod-network-cidr=10.244.0.0/16が必要です。公式ページ参照

以下を実行してconfigをコピーしてきます。

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

うまくいったら

kubeadm join --token ~~のようなものが出力されます。

表示されなかったらkubeadm resetでセットアップからやり直してください。

僕の場合、上記の設定のどれかを忘れていたか、Private IPが振られていなかったのが原因でした。

  • nodeの追加

    先ほど表示されたkubeadm join〜〜をノードにするRaspberry Piで実行します。

    失敗したらkubeadm resetをしてやり直します。kubeletのバージョンが違かったりしました。

  • flannelのapply

    以下を実行して、flannelを追加します。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
  • nodeの確認

    kubectl get node

    これでnodeの状態を確認します。 追加したいnodeが追加されていたら、k8sの設定は終了です。

終わりに

僕が作ったものは以下のようになりました。 LANケーブルが酷いことになってるので、自作LANケーブルします。

f:id:Nozomi_M:20181208225208j:plain

今後は、前に作ってたアプリケーションをraspberry Piクラスタに乗せて見て実際に稼働させて見たいと思います。 何か間違っていることだったり、追加ありましたらTwitterの方にいただけると気づくので嬉しいです。

Twitterアカウント

参考記事等

お世話になりました。 https://developers.cyberagent.co.jp/blog/archives/14721/

https://engineers.weddingpark.co.jp/?p=1993

https://qiita.com/tk3fftk/items/d7ef8bc12a1f0a76ad4a

https://qiita.com/MarieKawasuji/items/b088ffb252a92eee8f5d

kubenetesを導入する際のapt updateのエラー

環境

Raspbeey Pi 3 model B+

エラー内容

pi@raspberrypi:~ $ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main

pi@raspberrypi:~ $ sudo apt update
Err:3 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
Reading package lists... Done
W: GPG error: https://packages.cloud.google.com/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
E: The repository 'http://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

原因

鍵登録をしていなかった

pi@raspberrypi:~ $ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

で解決

スポンサーリンク