<2> EFS 설정 1 # default 네임스페이스 적용 kubectl ns default 2 # (옵션) context 이름 변경 NICK=<각자 자신의 닉네임> NICK=masterseo kubectl ctx kubectl config rename-context admin@myeks.ap-northeast-2.eksctl.io $NICK@myeks // iam 계정이름이 EC2 프롬프트의 기본 이름이 된다. // access-05-03 (계정을 admin으로 만들었다면 admin) // (access-05-03@myeks:default) [root@myeks-bastion-EC2 ~]# // 변경 kubectl config rename-context access-05-03@myeks.ap-northeast-2.eksctl.io $NICK@myeks 3 EFS 파일 시스템은 Cloudformation 으로 미리 만들어 두었다. # EFS 파일 시스템 확인 AWS 관리콘솔 EFS 확인해보자 mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <자신의 EFS FS ID>.efs.ap-northeast-2.amazonaws.com:/ /mnt/myefs // AWS 콘솔에서 EFS ID를 확인하여 입력하자. mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-02ba1c75a3d1dc1aa.efs.ap-northeast-2.amazonaws.com:/ /mnt/myefs df -hT --type nfs4 ---------------------------- Filesystem Type Size Used Avail Use% Mounted on fs-00fc18f0ad801703e.efs.ap-northeast-2.amazonaws.com:/ nfs4 8.0E 0 8.0E 0% /mnt/myefs // 타입이 nfs4 , 경로는 /mnt/myefs를 cloudformation으로 디렉토리 미리 만들어 놓았다. 확인 mount | grep nfs4 4 데이터가 efs에 저장 되는지 테스트 ? echo "efs file test" > /mnt/myefs/memo.txt cat /mnt/myefs/memo.txt efs file test 삭제 rm -f /mnt/myefs/memo.txt 5 # 스토리지 클래스 및 CSI 노드 확인 ? 스토리지 클래스 디폴트는 gp2이다. gp2는 사용하지 않을것이고, EBS 컨트롤러 설치후 gp3로 변경해 사용할것이다. kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 70m kubectl get sc gp2 -o yaml | yh (masterseo@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get sc gp2 -o yaml | yh apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"},"name":"gp2"},"parameters":{"fsType":"ext4","type":"gp2"},"provisioner":"kubernetes.io/aws-ebs","volumeBindingMode":"WaitForFirstConsumer"} storageclass.kubernetes.io/is-default-class: "true" creationTimestamp: "2023-05-10T08:34:41Z" name: gp2 resourceVersion: "278" uid: 86c7fe94-e285-4720-af30-491352479dde parameters: fsType: ext4 type: gp2 provisioner: kubernetes.io/aws-ebs reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer kubectl get csinodes (masterseo@myeks:default) [root@myeks-bastion-EC2 ~]# kubectl get csinodes NAME DRIVERS AGE ip-192-168-1-140.ap-northeast-2.compute.internal 0 62m ip-192-168-2-38.ap-northeast-2.compute.internal 0 62m ip-192-168-2-85.ap-northeast-2.compute.internal 0 62m 6 # 노드 정보 확인 kubectl get node --label-columns=node.kubernetes.io/instance-type,eks.amazonaws.com/capacityType,topology.kubernetes.io/zone eksctl get iamidentitymapping --cluster myeks 7 # 노드 IP 확인 및 PrivateIP 변수 지정 N1=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2a -o jsonpath={.items[0].status.addresses[0].address}) N2=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2b -o jsonpath={.items[0].status.addresses[0].address}) N3=$(kubectl get node --label-columns=topology.kubernetes.io/zone --selector=topology.kubernetes.io/zone=ap-northeast-2c -o jsonpath={.items[0].status.addresses[0].address}) echo "export N1=$N1" >> /etc/profile echo "export N2=$N2" >> /etc/profile echo "export N3=$N3" >> /etc/profile echo $N1, $N2, $N3 # 노드 보안그룹 ID 확인 NGSGID=$(aws ec2 describe-security-groups --filters Name=group-name,Values=*ng1* --query "SecurityGroups[*].[GroupId]" --output text) aws ec2 authorize-security-group-ingress --group-id $NGSGID --protocol '-1' --cidr 192.168.1.100/32 # 노드에 툴 설치 ssh ec2-user@$N1 sudo yum install links tree jq tcpdump sysstat -y ssh ec2-user@$N2 sudo yum install links tree jq tcpdump sysstat -y ssh ec2-user@$N3 sudo yum install links tree jq tcpdump sysstat -y