kubesprayステ

kubesprayで1.15.1→1.15.4に更新しようとしたら、コンテナランタイムcri-oだとまともにアップグレードできず、Clusterをぶっ壊されてしまい、リカバリーするより作り直した方が早いと判断。普通に公式RPMリポジトリ+kubeadmで導入し直し。

で、1.16.0を試してみたところ、cri-oだと最新版でも「kubeadm init」でkubelet起動後にcri-oとどうやっても通信できない。仕方が無いので超嫌いなdockerにしたところあっさり動作。

前提パッケージを一通り導入&設定してdockerを動かしたら、masterノードで「kubeadm init」を実行


# kubeadm init –apiserver-advertise-address=xxx.xxx.xxx.xxx –pod-network-cidr=10.xx.0.0/16





kubeletがちゃんと起動したらworkernode追加。

# kubeadm join xxx.xxx.xxx.xxx:6443 –token xxxxx.yyyyyyyy –discovery-token-ca-cert-hash sha256:yyyyyyyyyyyyyyyyyyyyyyyyyyyy

ノードをラベル付け。

# kubectl label node xxxx node-role.kubernetes.io/node=node
# kubectl label node xxxxx type=worker



しかし、今度はhelm-2.xが1.16.0に未対応だったので、3.0Betaで試す。

3.0系列には「helm init」コマンドがないので途方に暮れたけど「helm repo add リポジトリ名 URL」でリポジトリを追加していけば良いのね。ということで、良く使いそうなリポジトリを追加。


# helm repo add stable https://kubernetes-charts.storage.googleapis.com
# helm repo add elastic https://helm.elastic.co
# helm repo add rook-master https://charts.rook.io/master
# helm repo add bitnami https://charts.bitnami.com/bitnami

で、rookのリポジトリを追加したけどたった3nodeでcephはねーだろということで、DRBD9+linstor-csiを導入。

3Ware社のマニュアル(PDF)通りにやると、apiVersionがv1/betaってなんやねんと怒られたので、StateFulSetとDaemonSetのapiVersionをapps/v1に変更し、StateFulSetにselector:構文を以下のように追加。

selector:
matchLabels:
app: linstor-csi-controller

DRBDのStoragePoolはせっかくなので、LVMThinのPV部分をvdoでインライン圧縮するようにしてみた。メモリ少なめなのでdedupeはなし。こうすると/dev/vdcは500GBの仮想ディスクだけど、2TBに見える。圧縮率によってはエライ目にあうことがあるので、容量監視はちゃんとせねば。

# vdo create –name=vdo0 –device=/dev/vdc1 –vdoLogicalSize=2T
# pvcreate /dev/mapper/vdo0
# vgcreate vgDRBD /dev/mapper/vdo0
# lvcreate -T -L500G vgDRBD/thinVdoPool



calicoとmetallbはあっさり動作。前回Clusterぶっ壊れたときはweaveでvxlanが張れなくなってしまったので、流行ものにはちゃんと乗っておかねばとcalicoを選択。


あとは、LocalStorageをESのCluster用に用意して、ELKスタックをhelmで作れば元の環境は作り直せそう?