Kubernetes запуск perconadb

Thank you for reading this post, don't forget to subscribe!

будем запус­кать пер­ко­ну в кубере.

БАЗА В КОНТЕЙНЕРАХ ЭТО ЗЛО!!!!!!!!

https://www.percona.com/doc/kubernetes-operator-for-pxc/kubernetes.html

 

[root@kub-master-1 ~]# git clone -b v1.7.0 https://github.com/percona/percona-xtradb-cluster-operator

[root@kub-master-1 ~]# cd percona-xtradb-cluster-operator

Если в каче­стве посто­ян­ных томов иcполь­зу­ют­ся localstorage, то пред­ва­ри­тель­но необ­хо­ди­мо создать pv по чис­лу реплик в statefulset (cr.yaml)

[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl create ns pxc
[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl apply -f deploy/crd.yaml -n pxc
[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl config set-context $(kubectl config current-context) --namespace=pxc
[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl apply -f deploy/rbac.yaml -n pxc
[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl apply -f deploy/operator.yaml -n pxc
[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl create -f deploy/secrets.yaml -n pxc

Для дан­ных исполь­зу­ем наш nfs-provisioner -  managed-nfs-storage
[root@kub-master-1 percona-xtradb-cluster-operator]# vim deploy/cr.yaml

[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl apply -f deploy/cr.yaml -n pxc

всё сидим на жопе ров­но ждём когда ска­ча­ют­ся обра­зы и запустятся:

у меня не хва­ти­ло желез­ки на запуск 3ей реплики.

про­ве­ря­ем как завелось:

[root@kub-master-1 percona-xtradb-cluster-operator]# kubectl run -i --rm --tty percona-client --image=percona:8.0 --restart=Never -- bash -il

под­клю­ча­ем­ся к базе:

[mysql@percona-client /]$ mysql -h cluster1-haproxy -uroot -proot_password

созда­дим базу и гля­нем что есть:

 

При уда­ле­нии perconadb необ­хо­ди­мо уда­лять в обрат­ном поряд­ке отно­си­тель­но установки:
kubectl delete -f cr.yaml -n pxc
kubectl delete -f secrets.yaml -n pxc
kubectl delete -f operator.yaml -n pxc
kubectl delete -f rbac.yaml -n pxc
kubectl delete -f crd.yaml -n pxc
kubectl delete ns pxc

Если при уда­ле­нии namespace воз­ни­ка­ет ошиб­ка, то необ­хо­ди­мо про­ве­рить не оста­лось ли каких-то ресур­сов в ns:
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n pxc

если пусто, то:
kubectl get namespace pxc -o json > pxc.json kubectl replace --raw "/api/v1/namespaces/pxc/finalize" -f ./pxc.json kubectl delete ns pxc

если остал­ся ресурс perconaxtradbcluster.pxc.percona.com/cluster-mysql
то:
kubectl get crd | grep perconaxtradbclusters.pxc.percona.com perconaxtradbclusters.pxc.percona.com 2021-03-24T07:24:00Z

kubectl patch crd/perconaxtradbclusters.pxc.percona.com -p '{"metadata":{"finalizers":[]}}' --type=merge

После это­го все долж­но уда­лить­ся автоматически.

При повтор­ном запус­ке percona db (а имен­но statefulset cr.yaml) если создан­ные стейт­фул­се­том по новой pxc не видят суще­ству­ю­щие pv, то необ­хо­ди­мо изме­нить зна­че­ние поля claimed в pv:
kubectl patch pv percona-pv1 -p '{"spec":{"claimRef": null}}'
kubectl patch pv percona-pv2 -p '{"spec":{"claimRef": null}}'
kubectl patch pv percona-pv3 -p '{"spec":{"claimRef": null}}'

Очист­ка Memcache:
echo "flush_all" | nc localhost 11211
kubectl exec -it prod-mcrouter-memcached-2 sh