퍼블링 DNS 에 대하여 Route53 쿼리 로깅 가능

쿼리 로깅을 구성하면 Route 53은 Logs에 CloudWatch 로그를 전송합니다. CloudWatch로그 도구를 사용하여 쿼리 로그에 액세스할 수 있습니다.

로그 그룹은 미국 동부(버지니아 북부) 리전에 있어야 합니다.

https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/query-logs.html

'AWS > ANS' 카테고리의 다른 글

AWS ANS (Network) - DX Type  (0) 2023.06.27
AWS ANS (Network) - DX, VGW, VIF  (0) 2023.06.26
AWS ANS (Network) - ALB, NLB Source IP Logging  (0) 2023.06.25
AWS ANS (Network) - DHCP  (0) 2023.06.25
AWS ANS (Network) - BFD  (0) 2023.06.17

k8s를 사용하는 가장 간단한 방법은 EKS 를 사용하는 것이다. 하지만 CKA 연습을 위해, 혹은 비용문제로 인해 EKS 를

사용 하지 못하는 경우가 있다. 이때 VM ware 를 사용하는 것도 방법이지만 EC2에서 직접 k8s 를 설치 하여 사용하는 방법도 고려할 수 있다.


참고사항 

 

  • k8s를 기동하기 위해서는 2core, 2mem 가 최소 사양이 되므로, 인스턴스 타입을 고려해서 EC2 생성
  • k8s 가 버전이 올라가면서 docker runtime 을 지원하지 않게 됨에 따라, CRI(container runtime interface) 를 직접 설치 해야 한다 // 1.24 버전부터 지원이 안되는 것으로 알고 있다
  • k8s 는 CNI(container network interface)도 기본 지원을 하지 않는다. 따라서 사용할 CNI 또한 직접설치해야 한다.

스펙 상세

 

EC2 : t3a.medium 

Disk : gp3 15 GiB

OS : Ubuntu22.04

k8s : 1.2.0

CRI : crio-o

CNI : calico

 


설치 상세 내용

 


1. sudo -i 로 root 로 k8s 를 설치 진행 한다

 

2. ubuntu 기본 apt 업데이트 진행

sudo apt-get update
sudo apt-get upgrade -y

3. k8s 설치를 위해 필요한 인증관련 도구 설치

sudo apt-get install -y apt-transport-https ca-certificates curl

4. swap off 설정

sudo swapoff -a

5. cri-o 설치를 위한 변수 지정

export OS_VERSION_ID=xUbuntu_$(cat /etc/os-release | grep VERSION_ID | awk -F"=" '{print $2}' | tr -d '"')
export CRIO_VERSION=1.28

 

 

6. cro-o 설치

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -


sudo apt-get update
sudo apt-get install cri-o cri-o-runc cri-tools -y

sudo systemctl daemon-reload
sudo systemctl enable crio --now

※cri-o 를 설치하게 되면 cri-o 기본 설정으로 cni 가 설치가 되는데, 여기서 우리는 calico 를 사용할 예정이므로 아래 경로에 있는 파일 삭제

/etc/cni/net.d 

 

7. k8s 설치및 사용을 위한 kube 관련 도구 설치

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

8. kubeadm init 을위 환경 설정

modprobe br_netfilter

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/ipv4/ip_forward

9. k8s cluster 생성

아래 내용을 샘플로 본인에 맞는 cidr 및 version install
sudo kubeadm init --pod-network-cidr=10.85.0.0/16 --kubernetes-version 1.28.0


sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version 1.28.0 --node-name master-node

생성이 완료되면 아래와 같은 내용이 출력 된다

아래 내용중 kubeadm join 부분을 꼭 저장해 두자

-> 추후 노드 추가할때 해당 부분이 필요

10. kube 명령어 설정 및 kube 설정 확인

  • 아래와 같이 coredns 가 pending 인 상태가 된것을 확인 할 수 있다.
  • 해당 부분은 cni 를 설치하고 나면 정상적으로 running 상태로 변경된다
  • coredns 가 running이 되면 node 가 ready 상태로 변경 된다
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
alias k=kubectl

k get no
k get po -A

11. calico cni 설치

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml


wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml

위 파일을 다운로드 받은 후 vi 로 아래 사진과 같이 13번째줄의 cidr 을 수정 해야함
kubeadm init 시 pod cidr 를 192.168.0.0/16 로 지정 했으면 수정없이 배포하면 됨

k apply -f custom-resources.yaml

12. node 및 pod 확인

  • 시간이 지나면 아래와 같이 pod 와 node 가 running 이 되는 것을 확인 할 수 있다
watch kubectl get po -A -o wide
kubectl get no

 

13. calico 후속작업

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

 

여기까지하면 k8s master cluster 는 설치가 완료 된다.

이제 설치한 k8s cluster 에 node 를 추가하는 방법을 진행해 보겠습니다.



 

클러스터 생성시 진행한 1~8 번 까지의 과정을 반복한다

하나하나 입력하면 귀찮으니 아래 스크립트로 진행

#! /bin/sh

sudo apt-get update
sudo apt-get upgrade -y

sudo apt-get install -y apt-transport-https ca-certificates curl
sleep 1
sudo swapoff -a

sleep 1
export OS_VERSION_ID=xUbuntu_$(cat /etc/os-release | grep VERSION_ID | awk -F"=" '{print $2}' | tr -d '"')
export CRIO_VERSION=1.28

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
sleep 1
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list

sleep 1
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -

sleep 1
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -

sudo apt-get update

sleep 1
sudo apt-get install cri-o cri-o-runc cri-tools -y
sleep 1
rm /etc/cni/net.d/*


sleep 1

sudo systemctl daemon-reload
sudo systemctl enable crio --now

sleep 1
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sleep 1
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sleep 1
sudo apt-mark hold kubelet kubeadm kubectl

modprobe br_netfilter

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/ipv4/ip_forward

 

이제 클러스터 생성시 저장해둔 kubeadm join 명령어를 입력

 

마스터노드에서 아래와 같이 조회해 보면 정상적으로 클러스터 구성이 된 것을 볼 수 있다

주의사항

root 가 아닌 다른 계정에서 k8s 를 사용하기 위해서는 아래 명령어 입력 필요

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

'k8s' 카테고리의 다른 글

k8s CoreDNS Configmap DNS 변경  (0) 2023.06.11

BFD는 빠른 전달 경로 장애 탐지 시간을 제공하는 탐지 프로토콜입니다. 이러한 빠른 장애 감지 시간을 통해 라우팅 재컨버전스 시간을 단축할 수 있습니다.

Direct Connect 연결을 통해 AWS 서비스에 연결할 때는 빠른 장애 감지 및 장애 복구를 위해 BFD를 활성화하는 것이 가장 좋습니다. Direct Connect 연결에 BFD를 활성화하면 Border Gateway Protocol(BGP) 인접 관계를 빠르게 해체할 수 있습니다. 그렇지 않으면 기본적으로 BGP는 90초의 대기 시간 동안 3개의 킵얼라이브가 실패할 때까지 대기합니다.

AWS 측의 Direct Connect 가상 인터페이스에 대해 비동기 BFD가 자동으로 활성화됩니다. 하지만 연결에 비동기 BFD를 활성화하도록 라우터를 구성해야 합니다.

 

https://repost.aws/ko/knowledge-center/enable-bfd-direct-connect

'AWS > ANS' 카테고리의 다른 글

AWS ANS (Network) - DX Type  (0) 2023.06.27
AWS ANS (Network) - DX, VGW, VIF  (0) 2023.06.26
AWS ANS (Network) - ALB, NLB Source IP Logging  (0) 2023.06.25
AWS ANS (Network) - DHCP  (0) 2023.06.25
AWS ANS (Network) - Route53 Loging  (0) 2023.06.25

개요 : AWS 계정에서 다른 리전간의 Endpoint 공유 방법


일반적으로 AWS 서비스 엔드포인트(공인IP) 를 사용하면 문제없이 사용 가능하다. 하지만 내부 엔드포인트 인터페이스를 통해서만 엔드포인트를 사용 하고 싶은 경우에는 설정이 필요하다.

 

방법 : VPC 피어링을 통해 VPC 간 데이터를 공유할 수 있도록 설정 한 다음 Route53 에서 피어링된 VPC 두개를 대상으로 잡고 DNS 를 엔드포인트 DNS 를 사용하면 내부망에 있는 엔드포인트를 사용하여 서비스를 운영할 수 있다.


개념 설명 : Route53 은 글로벌 서비스로 지정한 VPC 에 대해서 DNS 서비스를 제공해준다.

따라서 VPC 피어링을 통해 VPC 간 연결을 생성한 다음 Route53 서비스 영역(VPC) 로 피어링을 맺은 두개의 VPC 를 지정하면, 지정된 두개의 VPC 에서는 Route53 을통해 DNS 조회가 가능하다


예를들어 서울리전과, 도쿄리전에서 엔드포인트를 공유 하고자 하는 경우로 설명 하겠다.

ex) 서울리전(ap-northeast-2) 에서 도쿄리전(ap-northeast-1) 의 엔드포인트를 사용 하고자 할 경우

-> 서울리전에 있는 EC2 에서 도쿄리전에 있는 리소스 조회를 위해 됴쿄리전에 있는 ec2 엔드포인트가 필요하다고 가정


방법

1. VPC 피어링을 통해 서울리전과 됴쿄리전을 연결

2. Route53 에서 대상 VPC 에 1번에서 피어링을 맺은 서울리전과 도쿄리전을 모두 지정

3. 됴쿄리전에 ec2 엔드포인트를 생성 (주의사항 : 퍼블릭 DNS 기능 제거)

4. Route53 에서 ec2 엔드포인트 주소인 ec2.ap-northeast-1.amazonaws.com 을 호스팅으로 지정

5. ec2.ap-northeast-1.amazonaws.com 에 레코드에서 별칭사용 -> 됴쿄리전 VPC 종단점 -> ec2 엔드포인트 지정

6. 서울리전 ec2 에서 https://ec2.ap-northeast-1.amazonaws.com 을  지정하면 사용 가능

 

참고자료 : https://docs.aws.amazon.com/ko_kr/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/centralized-access-to-vpc-private-endpoints.html#cross-region-endpoint-access

'AWS' 카테고리의 다른 글

AWS EKS SVC 로 NLB 사용 시 Time out 발생 현상  (1) 2023.07.09
EKS Config Update  (0) 2023.07.08
AWS EKS efs-csi-driver install  (0) 2023.06.07
AWS Multi Region Network 구성  (0) 2023.06.07
ECR Multi Region Replication  (0) 2023.06.04

그라파나 Cloudwatch 대시보드 role assume 시 찾는 dns

 

sts endpoint 찾음

- sts 다음으로는 logs endpoint / monitoring endpoint 를 찾음

 

다른 리전을 찾을경우는 공인 ip를 찾게되어 있음

+ Recent posts