프로젝트

일반

사용자 정보

조사/학습 #12739

오 지호님이 2달 전에 변경

### 테스트 설정 방법 
 ``` 
 # Rocky linux 9 minimal standard installation 
 # dnf upgrade -y만 진행 
 setenforce 0 
 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config 

 systemctl disable --now firewalld 

 swapoff -a 
 sed -i '/swap/d' /etc/fstab 

 modprobe overlay 
 modprobe br_netfilter 

 # 재부팅시에도 커널 모듈 올라오게 
 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf 
 overlay 
 br_netfilter 
 EOF 

 # 필요한 sysctl 파라미터를 설정하면, 재부팅 후에도 값이 유지된다. 
 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 
 net.bridge.bridge-nf-call-iptables    = 1 
 net.bridge.bridge-nf-call-ip6tables = 1 
 net.ipv4.ip_forward                   = 1 
 EOF 

 # 재부팅하지 않고 sysctl 파라미터 적용하기 
 sysctl --system 

 # 도커 전체 말고 containerd만 설치 
 dnf -y install dnf-plugins-core 
 dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
 dnf install containerd.io 
 systemctl enable --now containerd 

 # /etc/containerd/config.toml에서 cri diabled_plugins에서 지우기 
 # 안지우면 k8s init 할 때, 에러남 

 cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo 
 [kubernetes] 
 name=Kubernetes 
 baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/ 
 enabled=1 
 gpgcheck=1 
 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key 
 exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni 
 EOF 

 dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes 
 systemctl enable --now kubelet 

 # 쿠버네티스 클러스터 초기화 
 kubeadm init --pod-network-cidr=10.244.0.0/16 

 # 이건 쉘 나가면 풀리니까 .bashrc에 넣기 
 export KUBECONFIG=/etc/kubernetes/admin.conf 

 # 네트워크 플러그인 설치 (Flannel) 
 kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml 

 # 마스터 노드에서도 워커 역할 수행 
 kubectl taint nodes --all node-role.kubernetes.io/control-plane:NoSchedule- 

 # helm 설치 
 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4 | bash 

 helm version 

 # metal-stack lvm csi driver 설치 
 dnf install -y git 
 git clone https://github.com/metal-stack/csi-driver-lvm.git 
 cd csi-driver-lvm/charts/csi-driver-lvm 

 vim values.yaml 
 ... 
   devicePattern: /dev/sd[b-d] 
 ... 

 cd .. 

 helm install csi-driver-lvm ./csi-driver-lvm 

 # 확인 
 kubectl get pods -n default 
 kubectl get ds -n default 

 cd csi-driver-lvm 
 kubectl apply -f examples/csi-pvc-raw.yaml 
 kubectl apply -f examples/csi-pod-raw.yaml 
 kubectl apply -f examples/csi-pvc.yaml 
 kubectl apply -f examples/csi-app.yaml 

 kubectl delete -f examples/csi-pod-raw.yaml 
 kubectl delete -f examples/csi-pvc-raw.yaml 
 kubectl delete -f    examples/csi-app.yaml 
 kubectl delete -f examples/csi-pvc.yaml 

 # pv 확인 
 kubectl get pv 

 # 실제 확인 
 lvs 

 # nfs csi driver 설치 
 helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts 
 helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --set controller.runOnControlPlane=true --version 4.12.0 
 ``` 

 - nfs의 경우, 다른 장비에서 nfs server를 띄우고 k8s에서 nfs 드라이버로 storage class 만들어서 테스트 진행 
 - 참고한 flexa csi driver repo: https://gitlab.gluesys.com/exastor/flexa-csi/-/tree/develop?ref_type=heads 
  - 재환씨가 참고하라고 준 일감: https://redmine.gluesys.com/issues/9467 

 ### ASE에 적용 

 개별 pod이 pvc를 통해서 pv를 얻는데 ase와 pod이 다른 장비에서 동작하기 때문에 pvc하나에서 lv까지 생성 및 nfs 공유 만들기 필요할 것 같음

뒤로

클립보드 이미지 추가 (최대 크기: 50 MB)