Cloud/k8s

[k8s] k8s 관련 지식

jinkwon.kim 2022. 11. 26. 09:53
728x90
반응형

1. k8s가 뭔지 아는가?

1) k8s란?

    container를 관리하는 ochestration tool 입니다.

2) k8s의 핵심 개념?

쿠버네티스에서 가장 중요한 것은 desired state 라는 개념입니다. 

desired state란 운영자가 원하는 시스템의 상태를 설정해 놓으면 k8s가 끊임없이 current state를 체크해서 desired state를 맞추는 것입니다.

3) k8s는 desired state를 어떻게 구현하였는가?

(1) api-server

- kubelet과 kubeproxy의 요청을 처리 합니다.

- kube-apiserver는 etcd에 접근할 수 있는 유일한 Component로, K8s 클러스터의 상태를 Key-Value 형식으로 etcd 저장소에 관리 합니다.

(2) etcd

- k8s의 상태 저장소라고 보면 됩니다.

- etcd에 key : value 형태로 k8s의 상태를 모두 저장 합니다.

(3) kube-controller-manager 

- K8s 클러스터에 존재하는 Object의 Desired State와 Actual State를 kube-apiserver로부터 가져와, Sync 작업을 수행한다.

(4) scheduler

- kube-apiserver로부터 Node가 배정되지 않은 Pod(unscheduled) 정보를 가져와서 적절한 Node를 배정한 뒤, kube-apiserver에 결과를 알려준다.

(5) kubelet 

- node에 pod가 실행 되는 것을  보증해 줍니다.

- Worker에 배치된 kubelet은 자신이 생성해야할 Pod 정보를 kube-apiserver로부터 가져온다.

- kubelet은 다양한 메커니즘을 통해 제공되는 PodSpec 세트를 가져오고 해당 PodSpecs에 설명된 컨테이너가 실행되고 정상 상태인지 확인합니다.

(6) kubeproxy

- kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로 Kubernetes Service 개념의 일부를 구현합니다.

- K8s Service와 Endpoint 정보를 가져와서 자신이 위치한 Node의 Netfilter Rule(iptables, ipvs)를 업데이트한다.
- kube-proxy는 OS packet filtering(netfilter)이 있고 사용 가능한 경우 이를 사용합니다.
  그렇지 않으면 kube-proxy가 트래픽 자체를 전달합니다.

 

https://cwal.tistory.com/18

4) k8s는 pod는 어떻게 배포 흐름 되는가?

 

5) k8s의 service란?

pod를 외부로 노출 하기 위한 object 입니다.

크게 5개의 object가 존재 

1. cliuster ip

- cluster 내부에서만 사용 가능합니다.

2. node port

- cluster 외부에서 접속 하기 위해서 사용합니다.

- 실제 node의 port를 할당하여 port를 여는 방식 입니다. 30000- 32767 사이의 port를 사용합니다.

3. load balnacer

- nodeport를 external IP와 연결해 놓은 것입니다.

- L4 load balancer 

4. ingress

- Ingress는 Layer 7 Load balancer

5. externalname

- 외부의 서비스를 연결해주는 것

https://kimjingo.tistory.com/123   

6) iptables의 동작 방식 , IPVS의 동작 방식

(1) Netfilter-packet-flow

https://jimmysong.io/en/blog/understanding-iptables/

https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

(2) CHAIN의 종류와 역활

종류 설명
prerouting 패킷을 INPUT rule 로 보내기 전 ip 와 port (DNAT 역활)를 변경하는 역할을 한다.
input filter 테이블과 같은 역할이나, 먼저 적용
forward FORWARD는 주소를 바꾸는 테이블이 아니고 PREROUTING에 의해서 바뀐 주소를 FORWARD 할 때, 이 패킷을 FILTERING하는 기능만을 가지고 있다.
output filter 테이블과 같은 역할이나, 나중에 적용
postrouting POSTROUTING은, 내부 네트워크에서 외부 네트워크로 포워딩 하는 역할인데 출발 주소를 바꾸야 포워딩이 된다.
SNAT

(3) table의 종류와 역활

우선 순위 종류 설명
1 raw netfilter의 연결추적 하위시스템과 독립적으로 동작해야 하는 규칙을 설정하는 테이블
2 mangle 패킷 데이터를 변경하는 특수 규칙을 적용하는 테이블, 성능향상을 위한 TOS(Type of Service) 설정
3 nat Network Address Translation, IP 주소 변환
4 filter iptables의 기본 테이블로 패킷 필터링 담당
5 security 리눅스 보안 모듈인 SELinux에 의해 사용되는 MAC(Mandatory Access Control) 네트워크 관련 규칙 적용

(3) chain 별 테이블

(2) iptables의 주요 동작 

NAT - DNAT (Destination NAT)

목적지 주소 변환

외부에서 전달되는 요청의 목적지 주소를 서버의 사설 IP로 변환한다.

+논리적인 인터페이스 추가를 통한 추가주소 부여 (외부에서 ARP같은 걸 찾아야함 !!)

 

NAT - MASQUERADING

조건에 일치하는 패킷의 출발지 주소를 변환

내부에서 전달되는 요청의 출발지 주소를 조건에 지정된 인터페이스의 IP로 변환한다.

 

NAT - SNAT (Source NAT)

출발지 주소 변환

내부에서 전달되는 요청의 출발지 주소를 직접 지정한 공인 IP로 변환 

 

참조 

https://pmin-a.tistory.com/m/150

2. openstack?

    1) openstack가 뭔지 아는가?

        - 

    2) openstack사용해 봤는가?

        -

    3) openstack으로 어떻게 할 수 있을까?

        -

    4). openstack에 k8s를 어떻게 올리 것인가?

 

3. k8s network의 구현 방법 (SDN)이란?

    1) SDN 개념?

    2) vxlan

    3) IPinIP

 

4. 분산 스토리지란?

    1). saltstack이란?

        (1) 구동 방식 

        (1) 구현 방식

 

 

728x90
반응형

'Cloud > k8s' 카테고리의 다른 글

[k8s] container runtime별 관리 tools  (0) 2023.03.06
[급한 k8s] 4. 외부 서비스  (0) 2023.01.01
[k8s] 2. 네트워크의 종류 및 CNI  (0) 2022.11.22
[k8s] 1. 네트워크 구현 방식  (0) 2022.11.19
[급한 k8s] 2. k8s 설치  (0) 2022.11.12