aokabin / rancher-practice

0 stars 0 forks source link

Rancherのクラスタにストレージを追加する #5

Closed aokabin closed 5 years ago

aokabin commented 5 years ago

Rancherのクラスタで利用可能なストレージをassignする

aokabin commented 5 years ago

これで追加できそう?

aokabin commented 5 years ago

追加できてた 利用できるかはまだ検証していない、どうやってアクセスするんだろう?

aokabin commented 5 years ago

ここを参考に進めてみよう

StorageClassも指定する必要があるみたい 2019-01-28 20 44 15

aokabin commented 5 years ago

そしてこんな感じで作成してみる 2019-01-28 20 46 51

そしてLocal Volumeを使ったPodを定義するためのyaml https://gist.github.com/aokabin/47dd5ae511f6a8676c441f3e6a0c54ce

aokabin commented 5 years ago

Claimとやらも必要らしい、Volumeも? 2019-01-28 20 57 14

ちょっとわかりづらいけど、上記はネームスペース選んだ後のページにある

aokabin commented 5 years ago

2019-01-28 21 05 33 うまくいきそうだったけど失敗している

調べてみたところ

同じNodeじゃないと動いてくれないみたい、node指定したら動くかな

もしかしたら、volume: trueってのがダメだったかもなので、hostnameを指定してみる kubernetes.io/hostname: anago → createしたけど、同じエラー

aokabin commented 5 years ago

読むとこ間違えてたかも、nodeSelectorじゃないかなもしかして → エラーは変わったけど、うーん。。。 hostnameを指定するようにしても変わらないな...

aokabin commented 5 years ago

persistent volumeにて、hostname以外が指定できなかったけど、新しく作ったらいけた そっちのvolumeを使うように設定してみる → 雰囲気は行けてそう、立ち上がってないけど

capacityが0なのが気になるけどな...

$ kubectl get pvc
NAME                  STATUS    VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS   AGE
anago-sample-volume   Pending   sample          0                                        2m
anago-volume          Pending   anago-storage   0                                        57m

$ kubectl get pv
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM     STORAGECLASS    REASON    AGE
anago-storage   10Gi       RWO            Retain           Available             local-storage             1h
sample          10Gi       RWO            Retain           Available             local-storage             5m
aokabin commented 5 years ago

もしかして、/mnt 以下じゃないといけないのかな? と思って/mnt/disks/vol1とか作ってみたけどダメだった...

aokabin commented 5 years ago

node affinityなのかなぁー、うまくいってないのかなー

diskを指定しているからか!パスの指定にしてみよう!

aokabin commented 5 years ago

パスで、must be exist directoryで失敗した nodeじゃなくてhostnameの指定でどうだろうか → hostnameだと 0/8 nodes are available: 8 node(s) had volume node affinity conflict. つまり、 参照できてないってことだと思う kubernetes.io/hostnameだとどうだろうか → MountVolume.SetUp failed for volume "anago-pv" : hostPath type check failed: /home/rancher-storage is not a directory うーん、ディレクトリなんだけどなぁ

aokabin commented 5 years ago

関わらず作成する方向でやってみる

再作成手順

お、なければ作るオプションで、作成できたぞい、でもどのnodeにpodがあるのか確認したいところ

aokabin commented 5 years ago

無ければ作るオプションで作成できたし、podはanagoにアサインされている事を確認した nginxの中に入ってtouchしたファイルもちゃんとみれる

けど、なんであるのにない扱いだったんだろう...?

aokabin commented 5 years ago

やったことのまとめとしては

最後に、nodeのlabelを変更してもできるかを検証して、nfsとかに移行する

aokabin commented 5 years ago

labelでもちゃんとanagoを指定できた!

aokabin commented 5 years ago

GlusterFSも良さそうだけど、今回はそこまでやる必要ない気がするので、nfsでやることにしよう

NFS

おそらく、nfsを構築して、あげれば、pvとvcの設定は前と同じだと思うので、nginxをデプロイとかしてみよう

aokabin commented 5 years ago

nfsを作る

最初にHDDをマウント 以下のコマンドを実行して、USB接続時と切断時に変わるやつを見つける

ls /dev/sd*

起動するたびに変わるかも

そしてUUIDを取得

blkid

HDDのUUIDを取得して

# vi /etc/fstab
UUID=<ここにUUID> /mnt/anago-nfs ext4 defaults 1 2

これで、自動マウントされる

aokabin commented 5 years ago

mountしたら、nfsサーバーを立てる

サーバー側で設定したところ、macから接続できない ポートスキャンとか試すも、ポートは空いている

ポートを固定しろとあったので試す

そして、firewall-cmdで解放する

# firewall-cmd --list-all
ports: 2379/tcp 2380/tcp 6443/tcp 2376/tcp 8472/tcp 9099/tcp 10250/tcp 80/tcp 443/tcp 10254/tcp 30000-32767/tcp 111/tcp 32803/tcp 32769/udp 892/udp 892/tcp 662/tcp 662/udp 2049/udp 2049/tcp

こんな感じかな

そしたらsystemctl start rpcbind nfs-server nfsして 接続

sudo mount_nfs -v -P 10.0.0.0:/mnt/nfs /Volumes/nfs

行けた!けど権限がない!

aokabin commented 5 years ago

ユーザー権限、rootにしてると思ったんだけど、なぜか見れなかったディレクトリ 権限を755にしたら見れるようになった

じゃあHDD内にrancher-storage作って、そいつをnfsにしてしまうかな

aokabin commented 5 years ago

何れにせよ、rootじゃないと書き込めないのはちょっと怖い、怪しい やっぱり、ちゃんと権限まわり整理しないと怖いな...

と思ったので、rancher-storageはnobod:nogroupで設定しようと思ったのだけど

nogroupがCentOSにはなさそうだった、どうしよう、いけんのかな

aokabin commented 5 years ago

なお

aokabin commented 5 years ago

CentOSにおいては、nobodyがそのままgroupになる感じ?

やってみた、exportsも一応ちょっと広めにとってマウントできたけど、まだ書き込みできない

rancher-storageを777にしてみるも、ダメ... macの管理者権限では書き込めることを確認、一般ユーザーでも書き込みしたいなぁ

aokabin commented 5 years ago

vi /etc/idmapd.conf のDomainのところをちゃんと書いてみた

exports -vで、nfsで公開している情報が確認できるらしい

ちょっとミスってた

aokabin commented 5 years ago

とはいえ接続できなし

UIDとGIDを変更してみる

もともと1000:1000だった

ダメそう...?

aokabin commented 5 years ago

どうしても難しいけど、それぞれのアカウントでnfs用意してあげればもしかしたら大丈夫かも

macからはrootになれば読み書きできるから一旦いいや

Rancher2.0をつかって、研究室にGitlabを導入してみる - OthloBlog - オスロブログ -

このページを参考にNFS使ってみる

ポートもちゃんと指定する(80,443,22)

/etc/gitlab: gitlab/config
/var/log/gitlab: gitlab/log
/var/opt/gitlab: gitlab/data

deploymentが動いているのはわかるんだけど、どうやってアクセスすればいいかがわからない...

aokabin commented 5 years ago

http://localhost:8001/k8s/clusters/c-l5hc5/api/v1/namespaces/default/services/my-gitlab/proxy/

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "no endpoints available for service \"my-gitlab\"",
  "reason": "ServiceUnavailable",
  "code": 503
}

http://localhost:8001/k8s/clusters/c-l5hc5/api/v1/namespaces/default/services/my-gitlab:80/proxy →つながりそうだったんだけど、SSLエラーの表示。。。 kubernetes側の問題なのでは...?

aokabin commented 5 years ago

proxyを使わずに直接アクセスしたらいけた! ログとかもちゃんと更新されている様子だった! というわけで、ストレージの追加に成功したので、ここでclose

aokabin commented 5 years ago

まとめ

# /etc/exports
/mnt/anago-nfs/rancher-storage 10.0.0.0/8(rw,insecure,async,no_root_squash,fsid=0)

http://\<hostname>/k8s/clusters/\<cluster id>/api/v1/namespaces/\<namespace>/services/\<service name>:\<port>/proxy