0) TLS 암호화로 전달
apiserver에 도달하면..
1) Authentication check
2) Authorization check
3) Admission controller
ETCD에 기록한다.
key value DB
주기적인 back up 필수 (etcdctl 명령어)
Master Node가 여러대일 경우, Master Node 수만큼 ETCD가 있을 것이다.
이럴 때 어떻게 관리해야하는가?
이렇게 해야한다.
RAFT 알고리즘
모든 k8s-object 정보 저장
API Server로부터 요청된 Pod를 Node에 배치하도록 한다.
- Scheduler가 Pod를 노드에 배치하는 알고리즘이 존재한다.
Kubelet이 파스 생성 요청 정보를 받으면
Container RunTime를 이용해서 Pod를 생성한다.
생성된 Pod 정보를 API Server가 ETCD에 전달하고
DB에 적재한다.
container 간의 network 제어를 지원하는 plugin
- Linux 네트워크 아키텍쳐를 사용한다.
IP 관리
- pod가 생성되면 자동으로 node에 할당되면서 IP가 할당 됨.
- vRouter 역할을한다 (가상 라우터)
IPAM을 통해서 subnet(CIDR)에 할당된 IP를
각 노드에 /26(64개)씩 할당 관리
node1(pod1) -> cali37c.. -> vRouter(calico)
-> tunl0 (노드 간 통신) -> enp0s8
-> 외부(overlay network)
-> vRouter(n2) -> cali37c..
-> node2(pod2) (veth -> container eth0 )
kubectl apply -f https://docs.projectcalico.org/archive/v3.17/manifests/calicoctl.yaml
k exec -n kube-system calicoctl -- calicoctl get nodes
k exec -n kube-system calicoctl -- calicoctl ipam show
k exec -n kube-system calicoctl -- calicoctl ipam show --show-blocks
Pod, SVC를 생성하면
이름:IP를 DNS에 등록한다.
- Service Discovery 기능이라고 한다.