Kubernetes multiple storageclass (portworx with longhorn)

Merhaba, daha önceki yazılarımızda portworx kurulumu ve genel portworx yazılarına göz atmış olabilirsiniz. Essential kullanımda bazı limitlere tabii oluyorsunuz.

Örneğin portworx essential sadece 5 worker node üzerinde çalışıyor. Her node başına 1 TB disk alanı verebiliyorsunuz. Her node üzerinde de 30 volume çalışmasına izin veriyor. Peki ya bu limitlere dayanırsanız?

Yukarıdaki ekran görüntüsünde limitler ile ilgili bilgilere ulaşabilirsiniz. Aynı zamanda https://docs.portworx.com/portworx-enterprise/operations/licensing/portworx-essential inceleyebilirsiniz.

Düşünelim ki, 5 worker çalışan portworx’e sahibiz. 3 worker daha kurup bu worker’ları sadece longhorn’da çalışacak şekilde nasıl düzenleyebiliriz?

Burada aslında önemli olan şey worker nodeların birbirinden ayrıldığından emin olmak. Yani portworx’ün longhorn workerlarına herhangi bir kurulum yapmaması.

Kurulum

Mevcut clustera yeni bir worker eklediğinizde portworx operator o node üzerinde çalışacak px-cluster, portworx-api, kvdb gibi podlar yaratmak isteyecek, aynı zamanda sunucuda da pxctl komutu çalışabilecek. Fakat biz node sayısı anlamında limitte olduğumuzdan cluster seviyesinde sorunlarla karşılacağız. Bunun için yeni worker node eklendiğinde hızlıca yapılacak ilk iş;

kubectl label nodes nodename px/enabled=false --overwrite

Bu label bu node’a portworx ile “ilişkilendirme” demek için kullanılıyor. Ben testlerimde worker node’u dahil eder etmez kalıntı kalmaması için komutu çalıştırdım.

https://docs.portworx.com/portworx-enterprise/operations/operate-kubernetes/troubleshooting/scale-or-restrict#:~:text=Scaling%E2%80%8B,nodes%20in%20your%20Kubernetes%20cluster.

Longhorn içinde bir label eklemesi yapacağız. Bu tanımı birazdan kullacağız.

kubectl label nodes nodename storage=longhorn

Biz helm + argo kullanarak süreci gerçekleştirdik, values dosyamız;

longhorn:
preUpgradeChecker:
jobEnabled: false

defaultSettings:
systemManagedComponentsNodeSelector:
storage:longhorn

longhornManager:
nodeSelector:
storage: longhorn

longhornDriver:
nodeSelector:
storage: longhorn

longhornUI:
nodeSelector:
storage: longhorn

persistence:
defaultClass: false
nfsOptions: "vers=4.2,noresvport,softerr,timeo=600,retrans=5"

metrics:
serviceMonitor:
enabled: true

### eger longhornda nfs'te kullanacağım derseniz;

extraDeploy:

- apiVersion: apps/v1
kind: DaemonSet
metadata:
name: longhorn-nfs-installation
labels:
app: longhorn-nfs-installation
annotations:
command: &cmd OS=$(grep -E "^ID_LIKE=" /etc/os-release | cut -d '=' -f 2); if [[ -z "${OS}" ]]; then OS=$(grep -E "^ID=" /etc/os-release | cut -d '=' -f 2); fi; if [[ "${OS}" == *"debian"* ]]; then sudo apt-get update -q -y && sudo apt-get install -q -y nfs-common && sudo modprobe nfs; elif [[ "${OS}" == *"suse"* ]]; then sudo zypper --gpg-auto-import-keys -q refresh && sudo zypper --gpg-auto-import-keys -q install -y nfs-client && sudo modprobe nfs; else sudo yum makecache -q -y && sudo yum --setopt=tsflags=noscripts install -q -y nfs-utils && sudo modprobe nfs; fi && if [ $? -eq 0 ]; then echo "nfs install successfully"; else echo "nfs install failed error code $?"; fi
spec:
selector:
matchLabels:
app: longhorn-nfs-installation
template:
metadata:
labels:
app: longhorn-nfs-installation
spec:
hostNetwork: true
hostPID: true
initContainers:
- name: nfs-installation
command:
- nsenter
- --mount=/proc/1/ns/mnt
- --
- bash
- -c
- *cmd
image: alpine:3.12
securityContext:
privileged: true
containers:
- name: sleep
image: registry.k8s.io/pause:3.1
nodeSelector:
storage: longhorn
updateStrategy:
type: RollingUpdate

Kurulumu başlattıktan sonra longhorn podlarının sadece label eklenen worker node’larında olduğunu gözlemleyeceksiniz.

Kurulum sonrasında longhornda çalışmasını istediğimiz bölümler için sadece storageclass tanımı yaparak node select edebiliyoruz.

  rabbitmq:
global:
storageClass: longhorn

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.