(ceph) rbd mapで missing required protocol features
rbd mapで
feature set mismatch, my 106b84a842a42 < server's 40106b84a842a42, missing 400000000000000 missing required protocol features
となったら
ceph osd crush tunables hammer
結果の確認は
ceph osd crush show-tunables
で
{ "choose_local_tries": 0, "choose_local_fallback_tries": 0, "choose_total_tries": 50, "chooseleaf_descend_once": 1, "chooseleaf_vary_r": 1, "chooseleaf_stable": 0, "straw_calc_version": 1, "allowed_bucket_algs": 54, "profile": "hammer", ⇦ ここがjewelからhammerに変わってる "optimal_tunables": 0, "legacy_tunables": 0, "minimum_required_version": "hammer", "require_feature_tunables": 1, "require_feature_tunables2": 1, "has_v2_rules": 0, "require_feature_tunables3": 1, "has_v3_rules": 0, "has_v4_buckets": 1, "require_feature_tunables5": 0, "has_v5_rules": 0 }
(ceph) rbd mapでRBD image feature set mismatch.
mapした時に
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
が出たら
rbd create samplerbd --size 250 --image-feature layering
でcreateしてからやってみる。
kubeadm initで"systemd" is different from docker cgroup driver: "cgroupfs".
kubeadm init で
"systemd" is different from docker cgroup driver: "cgroupfs".
が表示された際の対応メモ
kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta3 apiServer: certSANs: - "kubernetes-api.local" controlPlaneEndpoint: "kubernetes-api.local:443" # for flannel networking: podSubnet: "10.244.0.0/16" --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 cgroupDriver: cgroupfs ⇦これを追記
PackstackでOpenStack Pikeお試し
概要
自宅サーバをクリーンインストールするついでにopenstackの再セットアップを実施したので、作業メモ。 2017年8月30日リリースされたOpenStack Pikeをインストールする。
各プロジェクトを個別インストールするのは面倒なので、packstackを使用してサクッと一括インストール。
構成
openstackの外部ネットワークと自宅のLAN(192.168.11.0)が同じサブネットとなるように設定する。
ip-address | OS | メモリ |
---|---|---|
192.168.11.100 | CentOS Linux release 7.4.1708 (Core) | 32G |
手順
基本的には他の方々が説明してくれている通り。
Packstack — RDO に記載してある手順にそって作業すればだいたい問題ない。
必要なものをインストールしたあとpackstackでopenstackをインストール。
事前インストール
とりあえず、最新化。
$ yum update -y
言語設定をen_US.utf-8に変更する。これやらないとうまくインストールできないらしい。
$ LANG=en_US.utf-8 $ LC_ALL=en_US.utf-8
既存のfirewall、NetworkManagerを停止し、古いnetworkを使用する。
$ systemctl disable firewalld $ systemctl stop firewalld $ systemctl disable NetworkManager $ systemctl stop NetworkManager $ systemctl enable network $ systemctl start network
openstack-pikeのリポジトリをインストール。
$ yum install -y centos-release-openstack-pike $ yum update -y
pack-stackをインストール。
$ yum install -y openstack-packstack
answerファイルの編集
インストール用のanswerファイル(設定ファイル)を作成し、自分用にカスタマイズする。
今回の修正箇所はネットワークをホストネットワークに接続する箇所。
まずはanswerファイルの作成。
$ packstack --gen-answer-file=answers.cfg
修正箇所は以下の通り、今回はDEMOプロジェクトの作成も無しにしたけど、どっちでも良い。
$ diff answers.cfg.bk answers.cfg 892c892 < CONFIG_NEUTRON_OVS_BRIDGE_IFACES= --- > CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:enp0s25 1158c1158 < CONFIG_PROVISION_DEMO=y --- > CONFIG_PROVISION_DEMO=n
packstackを実行
編集したanswerファイルを使用してpackstackの実行。
$ packstack --answer-file=./answers.cfg
ひたすら待って
Installation completed successfully
が出てきたら完了。
確認
dashboradにアクセスできることを確認。
http://192.168.11.100/dashboard
idはadminでパスワードは/root/keystonerc_adminに記載されているOS_PASSWORDを参照する。
インストールできていることを確認したら、一旦リブート
$ reboot now
ネットワークの作成
Neutron with existing external network — RDO
にも記載されているが、以下のようにし、LANと接続する外部ネットワークを作成する。
neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
horizonで実施するのであれば、プロバイダーネットワーク種別をフラットにし、物理ネットワークにextnetを指定する。
あとは外部ネットワークにチェックを入れてネットワーク作成。
データ永続化でどハマりした。
概要
前回までで作成したrancherクラスタでサービス展開することを考えると「やっぱり、データ永続化したいよなぁ。」となった。 試してみたがうまくいかない!!!SELinuxがわからない。勉強不足で超えられなかった。。。
経緯
クラスタ構成でデータの永続化のは色々な技術があるらしい、 - gluster fs - rancher-nfs - longhorn - etc…. ここは、rancherで組んだクラスタなんだからrancher-nfsしかないだろ!!! (本当はlonghornというのを使ってみたかったが、まだ実験段階とのことなので、また今度試すとして)
ということで、rancher-nfsを選択。
構成
今回の想定している構成は以下
ip | export | |
---|---|---|
192.168.1.8 | nfs | /mnt/nfs |
設定
インストール
カタログからrancher-nfsを選択して簡単にインストール。
設定する値は
項目 | 設定値 |
---|---|
ip | 192.168.1.8 |
mount | /mnt/nfs |
データボリュームの作成
インフラ>ストレージ >
作成ボタンをポチッと
使い方
以下のようなdocker-compose.ymlを用意
スタック> ユーザー> 作成!!
確認
ストレージの画面からattachされていることを確認。
シェルを起動してファイルを配置
nfsサーバからも配置されていることを確認。
そして泥沼へ…
gitlabのスタックを作成しようとしたけど、permissionエラーとなってしまい作成できない。
解決策(逃げ)
coreosのSELinuxの設定わからない・・・
OS替えてSELinuxをOFFにしちゃえ!(悲しくなる、勉強しよ)
選択したOSは centos atomic host
SELinuxの解除は簡単。 /etc/selinux/config のSELINUX=enforcing をSELINUX=disabled へ変更してreboot !
$ getenforce Disabled
よし。
確認
rancherからコンテナを起動し、正常に起動されれば問題なし
openstack上のrancherでサービスを提供してみる。
概要
前回作成した、rancherクラスタは内部のネットワークに各インスタンスを配置しているため、外部へサービスの提供ができていない。
今回は新規にfloating IPを割り当てたアクセス用のホストを新規に追加し、外部からアクセスができるような構成を作成する。
目標
wordpress(なんでも良かった)を内部のhostに作成し、外部からアクセスできるようにする。
構成
今回の予定している構成は以下のとおり。
host名 | private -ip | Floating IP | |
---|---|---|---|
rancher-server | 192.168.1.9 | 192.168.11.110 | |
rancher-node1 | 192.168.1.12 | ||
rancher-node2 | 192.168.1.5 | ||
rancher-proxy | 192.168.1.8 | 192.168.11.130 | 今回新規に追加 |
rancher-proxy ノードの作成
proxyインスタンスの作成
openstackでcoreosインスタンスを作成し,キーペア、セキュリティグループ、を設定する。 作成が完了したらfloating ip を割り振っておく。
rancherへhostの追加。
rancher-nodeと同様にhostの追加を実施する。 この時 インフラストラクチャ > ホストの追加 > 3.ラベルの追加 で、わかりやすい名前と値をつけておく。
今回は
- キー:external
- 値:true
とした。
あとは、rancher-proxyノードでdocker run コマンドを実行。
rancherのホスト画面に追加されれば完了。
サービスの作成
rancher-proxyノードが作成できたらカタログからwordpressを選択し追加する。
wordpressがスタックに追加され、稼働するのを待つ。
稼働が完了したあと、どのホストで動いているのかを確認する。(今回はrancher-node01 で動いていた。) rancher-node01で稼働していても、外部からのアクセスができないため、ロードバランサーを追加する。
スタック > wordpress > ロードバランサーを追加 より
名前 wp-lb (適当)
ポートルール
外部に公開するポートを指定し(今回は80)、対象をwordpress、 ポート 80 へ設定。
スケジューリングタブで、先ほど設定したスケジューリングのラベルを指定する。
- キー:external
- 値:true
稼働確認
スタック > wordpress にwp-lb が追加され、rancher-proxyで稼働していることを確認する。
http://192.168.11.130/ へアクセスし、wordpressのtop画面が開くことを確認できた。
あとは元からあるwordpress-lbを削除してしまえばきれいになる。※最初からこっちのスケジューリング変えるだけでも良かった。
openstack上に一からrancherクラスタを構築してみる。
概要
openstack環境を構築し、その上にrancherクラスタを作成した。
openstackのインストール手順は別途記録するとして、今回はrancherクラスタを作成するまでの手順を忘れないようにメモ。
目標
今回はrancher-serverとrancher-agent(2台)の併せて3台の構成。osはcoreosを使用。 構成とIPアドレスは以下のとおり。rancherサーバにはfloating ip を割り振る。
host名 | private -ip | Floating IP |
---|---|---|
rancher-server | 192.168.1.9 | 192.168.11.110 |
rancher-node1 | 192.168.1.12 | |
rancher-node2 | 192.168.1.5 |
準備
coreosのイメージ作成
coreosのopenstack用imageを取得。
$ wget https://stable.release.core-os.net/amd64-usr/current/coreos_production_openstack_image.img.bz2 $ bunzip2 coreos_production_openstack_image.img.bz2
取得したimageをopenstackのglanceへ追加しておく。
キーペアの作成
キーペアを作成する、作成したキーペア名は home-network-key にした。 作成したキーペアはダウンロード後配置しておく。今回は~/.ssh/pemfile以下に配置した。
セキュリティグループの作成
rancher用のセキュリティグループを作成する。
を追加。
rancher-serverの作成
rancher-server用インスタンスの作成
準備で作成したキーペア・セキュリティグループを指定。 coreosのimageからインスタンスを作成する。
この時に 設定 > コンフィグドライブ のチェックをつける。
これをやらないとsshのキーペアが読み込まれないらしい。
rancher-server立ち上げ
ログインユーザはcoreos
$ ssh -i ~/.ssh/pemfile/home-network-key.pem core@192.168.11.110
dockerのバージョンを確認しておく。
$ docker --version Docker version 1.12.6, build a82d35e
rancher-server の起動
$ docker run -d --restart=always -p 8080:8080 rancher/server
数分したらプロセスが起動しているはず。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ebbadd860326 rancher/server "/usr/bin/entry /usr/" 16 minutes ago Up 16 minutes 3306/tcp, 0.0.0.0:8080->8080/tcp loving_bhaskara
これでrancher-serverのインストールが完了。
へアクセスすればdashboardが開く。
dashboardは右下のプルダウンから日本語に変更できるので、英語ができない私は変更しておく。
rancher-agentの作成
インスタンスを作成しておく。
インスタンスを2つ作成。openstackだと本当に簡単
イメージはcoreosを使用。キーペア、セキュリティグループは別で作っても良かったが、今回はそのままrancher-serverと同じものを使用。
rancher の設定
rancher-serverのdashboardを開き インフラストラクチャ > ホスト > ホストの追加 と進む。
ホスト登録URLがhttp://192.168.11.110:8080になっているが、今回agentからはプライベートIPでアクセスするためhttp://192.168.1.9:8080へ変更する。
再度ホストの追加を選択し、⑤のコマンドをagent-nodeの各インスタンスで実行する。
あとは待っていればdashboardにノードが追加される。
最後に
openstackとcoreosを使用すると、とても簡単にrancherのクラスタを構築できた。
もっと良いやり方や、変えたほうが良い箇所があれば、ぜひ教えてください。