일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 밑바닥부터 구현하는 컴퓨팅 시스템
- sessionManager
- 필수 스크립트
- MySQL
- 안전하게 테이블 변경
- 운용 시 유용한 쿼리
- S3 private통신
- InnoDB
- x lock s lock
- nandtotetris
- 온라인 ddl
- ec2
- mysql 구조
- mysql 아키텍쳐
- ix is lock
- mysql 엔진
- innodb 버퍼풀
- performance스키마
- 어뎁티브 해시 인덱스
- BastianHost
- 리눅스
- dff
- s3 sync
- innodb구조
- 밑바닥부터 만드는 운영체제
- 도커
- Terraform
- s3
- 마운트
- SessionManager 터널링
- Today
- Total
이것이 점프 투 공작소
EKS node-subnet, pod-subnet 분리하는법 본문
Node와 Pod의 네트워크를 분리해야하는 이유
두 네트워크를 분리함으로서 보안 및 정책을 엄격하게 관리 할 수 있고 네트워크별 고유한 정책을 적용할 수 있습니다.
예를들어, 특정 노드에서 실행중인 pod가 다른 node의 pod에 직접 통신 할 수 없도록 설정가능합니다.
IP관리 또한 용의하며, 새로운 노드가 추가되면 해당 노드에 대한 네트워크 구성을 자동으로 처리 할 수 있습니다.
Amazon VPC CNI의 사용자 지정 네트워킹 기능을 사용하면 포드에서 사용할 Amazon VPC 클러스터의 특정 서브넷을 정의할 수 있습니다.
VPC 구성
vpc에 cidr을 추가하여 10.0.x.x/16은 노드 네트워크, 100.64.x.x/16은 파드 네트워크로 구성하려합니다.
기존의 EC2 노드가 있는 서브넷 (k8s-subnet-public1-ap-northeast-2a, k8s-subnet-public2-ap-northeast-2b)
POD가 실행되고자 하는 서브넷 (public-subnet-eks-prod-a, public-subnet-eks-prod-b)으로 서브넷을 만들었습니다.
현재 EKS의 노드그룹의 EC2는 실행되고있는 상태입니다.
AWS, K8S 네트워크 설정 추가
1. CNI Custom Network 설정
EKS aws-node에 대한 환경변수값을 설정합니다.
kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true
kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=failure-domain.beta.kubernetes.io/zone
ENIConfig생성
ENIConfig 객체는 하나의 서브넷과 보안 그룹 목록을 정의합니다. 노드에 단 하나의 ENIConfig 객체만 사용하여 주석을 달거나 레이블을 지정하면 해당 노드에 예약된 모든 포드는 해당 ENIConfig 객체에 정의된 서브넷과 보안 그룹을 사용합니다.
1. CRD 생성
ENIConfig CRD를 생성합니다.
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: eniconfigs.crd.k8s.amazonaws.com
spec:
scope: Cluster
group: crd.k8s.amazonaws.com
version: v1alpha1
names:
plural: eniconfigs
singular: eniconfig
kind: ENIConfig
pod가 생성될 서브넷과 SG를 정의한 ENIConfig.yml입니다.
---
apiVersion: crd.k8s.amazonaws.com/v1alpha1
kind: ENIConfig
metadata:
name: ap-northeast-2a
spec:
securityGroups:
- <SG>
subnet: <파드 네트워크 서브넷>
---
apiVersion: crd.k8s.amazonaws.com/v1alpha1
kind: ENIConfig
metadata:
name: ap-northeast-2b
spec:
securityGroups:
- <SG>
subnet: <파드 네트워크 서브넷>
노드 설정에 추가한 상태정보 확인
kubectl get ds aws-node -o yaml -n kube-system
설정한 환경 변수들 확인 가능
Pod IP를 분리하기 위해 노드 추가
설정 후 pod를 조회해보면 기존 대역에 그대로 있습니다.
아직 기존의 노드들이 기존대역에 있기에 그렇습니다, 새로운 노드를 추가 및 실행하여야 네트워크가 분리됩니다.
노드 생성 전 pod-ip
eks노드 그룹 조정
조정되는 node들 확인
기존 네트워크 내에 노드 삭제
eks 콘솔에서 노드 그룺 수를 조정합니다.
자동으로 가장 오래된 노드가 삭제됩니다.
노드와 분리된 Pod IP 확인
참고 : https://repost.aws/ko/knowledge-center/eks-custom-subnet-for-pod
'k8s' 카테고리의 다른 글
쿠버네티스의 DNS 서버와 Pod의 LivenessProbe 을 통한 상태확인 (0) | 2023.05.19 |
---|---|
쿠버네티스 리소스 특정 Revision으로 롤백하기 (0) | 2023.05.17 |