분류 전체보기
-
K8S Nginx-controller를 이용한 Ingress 구성 정리K8S 2021. 7. 9. 10:38
인그레스 컨트롤러에는 다양한 종류가 있다. GCE(구글 http load balancer) nginx, contour, haproxy, traefik, istio등이 있다. 여기서 GCE와 nginx는 쿠버네티스 프로젝트에 의해 유지보수된다. 이번 포스팅은 nginx controller를 이용한 ingress 구성을 알아본다. Ingress를 구현하기 위해서는 다음과 같은 것들이 필요하다. 1. Nginx-ingress-controller 2. Configmap nginx의 원하는 기능(error-log-path, keep-alive, ssl-protocols등)을 추가할 때는 configmap을 이용하여 image와 별도로 추가한다. 하지만 다음처럼 아무것도 없어도 상관없으며 이는 나중에 configu..
-
K8S: Service Networking 정리K8S 2021. 7. 7. 17:08
각 노드의 kube-proxy는 kube-api 서버를 통해 클러스터의 변화를 감지한다. service object 생성 요청이 들어오면 api server를 통해 kube-proxy는 이를 감지하고 행동에 들어간다. 그렇다면 서비스는 어떻게 원리로 생성되는 걸까? 우선 서비스는 클러스터 내에 존재하는 어떤 것이 아니다. (어떠한 프로세스, 네임스페이스, 인터페이스가 있는 것이 아니다 ) 즉 가상의 어떤 것이다. 예를 들어보자. 다음과 같은 포드와 서비스가 생성되어 있을 때, 이 서비스는 어떻게 서비스로 들어온 트래픽을 포드로 전달할까? 서비스가 정의 될 때 이미 정의된 range 안에서 서비스의 IP를 할당된다. IP range는 kube-api server에 등록된 --s..
-
K8S Pod Networking과 Weave CNI 정리K8S 2021. 7. 7. 00:24
클러스터 내에서 Pod간의 네트워킹은 다음을 만족해야 한다. - 모든 포드는 ip 주소를 가져야 한다. - 같은 노드의 포드끼리 통신가능해야한다. - 모든 포드는 NAT없이 다른 노드의 포드들과 통신 가능해야 한다. 위 조건을 만족하기 위해서는 다음과 같은 네트워크 구성을 따라야 한다. 1. 같은 노드의 포드간 통신 1) 포드를 연결할 브릿지 만들어 준다. 2) 각 포드에 ip 할당한다. 3) 브릿지와 각 포드의 인터페이스를 연결한다. 같은 노드의 포드간 통신은 브릿지를 통해 이루어진다. 2. 다른 노드 간의 포드 통신 각 노드의 라우팅 규칙에 게이트웨이 경로를 추가한다. 또는 노드를 연결하는 라우터를 두어서 라우팅 규칙을 추가한다. 게이트 웨이 경로를 추가함으로써 다른..
-
네트워크 네임스페이스 개념정리네트워크 2021. 7. 6. 00:02
두 호스트가 통신을 하기 위해서는 스위치에 각 호스트의 인터페이스가 연결되어 있어야 한다. 다음 커맨드를 통해 인터페이스를 확인할 수 있다. ip link A와 B는 스위치로 연결되어 있기 때문에 통신이 가능하다. 만약 다음과 같이 스위치로 연결된 두 시스템을 연결하고 싶다면 router를 이용한다. 다음 상황을 통해 라우팅과 게이트웨이에 대해서 알아보자. B에서 C로 패킷을 보내고 싶다. 하지만 B는 A의 인터페이스 IP와 라우터의 인터페이스 IP만 알고 있으므로 C로 패킷을 보낼 수 없다. 이 때 B의 라우팅 테이블에 C로 가기위해서는 라우터의 인터페이스를 거치면 된다는 것을 알려준다. B는 C의 경로를 알게 되었으므로 C로 패킷을 보낼 수 있게 된다. ..
-
AWS EFS를 이용한 EC2 데이터 공유AWS 2021. 7. 3. 21:50
이번 포스팅에서는 각 가용영역에 생성된 EC2 끼리 EFS를 이용하여 데이터를 공유한다. 다음과 같은 구성으로 진행한다. (참고로 EC2 생성에 대한 내용은 다루지 않는다.) 먼저 위의 구성과 같이 디폴트 VPC에 서로 다른 가용영역(a, c)에 인스턴스를 하나씩 생성한다. EFS → 파일 시스템 생성 클릭 → 생성된 EFS 클릭 → 아래 네트워크 메뉴 클릭후 생성해 놓은 보안 그룹으로 설정 보안 그룹은 다음과 같이 설정해놓았다. (TCP 2049는 NFS 통신 허용) # efs 디렉터리 생성 [root@ST1 ~]# mkdir /efs # 자신의 EFS ID 확인 후 마운트 [root@ST1 ~]# mount -t efs -o tls 자신의..
-
AWS EBS 볼륨 확장 및 파티션, 파일 시스템 변경AWS 2021. 7. 3. 20:54
이번 포스팅은 기본 EBS 볼륨을 확장하고 파티션과 파일시스템을 그에 맞게 변경한다. 다음 과정을 거쳐 진행한다. 1. 기본 EBS 볼륨 확장 2. 파티션 늘리기 3. 파일시스템 늘리기 4. EBS 정보 확인 [EC2 - EBS - 볼륨] - 루트볼륨 작업 - 볼륨 수정 - 볼륨 유형(gp3) - 크기(20 GiB) # 현재 루트 볼륨이 20G로 반영되어 있는데 아직 xvda1 파티션 크기가 8G 이므로 파티션 확장이 필요하다 [root@ST1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 8G 0 part / # 아직은 xvda1 ..
-
AWS EC2에 EBS 볼륨 생성하고 연결하기AWS 2021. 7. 3. 20:25
다음 과정을 통해 EC2에 EBS를 연결한다. 1. EBS 볼륨 생성 2. EBS 볼륨 연결 3. EBS 볼륨 포맷 후, 파일 시스템 생성 4. EBS와 로컬 디렉토리에 마운트 [root@ST1 ~]# df -hT /dev/xvda1 Filesystem Type Size Used Avail Use% Mounted on /dev/xvda1 xfs 8.0G 1.3G 6.8G 16% / # lsblk 사용 가능한 디스크 디바이스와 마운트 포인트(해당하는 경우)를 출력 [root@ST1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G..