월루를 꿈꾸는 대학생
KANS 2주차_2 PAUSE 본문
** 파드는 1개 이상의 컨테이너로 이루어진 컨테이너 집합
** PAUSE 컨테이너가 Network/IPC 네임스페이스를 생성하고 유지하고 공유 ( 가장 먼저 생김 )
** 쿠버네티스는 네트워크 모델의 요건 (4가지) 만족하는 CNI 플러그인이 있음 ( ex_ calico, flannel 등 )
- pod는 1개 이상의 컨테이너를 가질 수 있음 -> sidecar 패턴 : 있거나 없어도 관계없이 오토바이는 잘 움직임
https://blog.leocat.kr/notes/2019/02/16/cloud-sidecar-pattern
- pod 내의 컨테이너들은 서로 ip를 공유 포트를 이용해 구분
- pod는 노드ip와 별개로 (192 대역) 클러스터 내 접근 가능한ip (172대역)을 받고 nat없이 다른 노드의 파드와 통신이 가능 ( CNI의 역할)
실습환경
- 같은 파드 내에 컨테이너가 3개 있고 같은 net / ipc ns를 공유
- 컨테이너 2개를 같은 파드 w3에 배포
- w3에서 확인해 보면 2개만 만들었는데 pause라는 만든 적 없는 컨테이너 확인 가능
#kubectl describe pod myweb2
- 확인 시 컨테이너는 2개만 보임 어딜봐도 pause라는 건 없음
#특정 파드의 특정 컨테이너에 명령어 실행
- 다른 컨테이너지만 같은 파드내에 있어서 ip가 같음
- 네트워크 네임스페이스를 공유하니까!
root@k8s-m:/# kubectl exec myweb2 -c myweb2-nginx -- ifconfig
eth0:
inet 172.16.4.5 netmask 255.255.255.0 broadcast 172.16.4.255
root@k8s-m:/# kubectl exec myweb2 -c myweb2-netshoot -- ip addr
3: eth0@if9:
inet 172.16.4.5/24 brd 172.16.4.255 scope global eth0
# 각 컨테이너들의 프로세스 id를 변수로 지정
# 한 파드 내의 각 컨테이너들의 네임스페이스 정보확인
- cgroup/user는 따로 격리 없음
- mnt, uts, pid ns는 컨테이너별 격리 다 다름
- net , ipc ns는 파드 내에 컨테이너끼리 공유 - 같음
- pause 컨테이너는 ipc/net 네임스페이스를 가장 먼저 만들고 유지해 다른 컨테이너들에게 공유해줌 // 다른 컨테이너가 죽어도 공유되는 네임스페이스는 문제없도록 !!
# inspect로 자세한 정보 확인
- 해당 컨테이너의 네트워크 모드는 밑줄친 70a9f 라는 컨테이너를 공유해서 쓴다고 하는데 그 id가 pause 컨테이너의 id와 동일하다
- puase컨테이너가 네트워크 네임스페이스르 생성하고 이를 다른 컨테이너와 공유
- 아낌없이 주는 나무...
# 같은 네트워크 대역 사용
root@k8s-w3:~# nsenter -t $PAUSEPID -n ip -c addr
3: eth0@if9:
inet 172.16.4.5/24 brd 172.16.4.255 scope global eth0
root@k8s-w3:~# nsenter -t $NGINXPID -n ip -c addr
3: eth0@if9:
inet 172.16.4.5/24 brd 172.16.4.255 scope global eth0
root@k8s-w3:~# nsenter -t $NETSHPID -n ip -c addr
3: eth0@if9
inet 172.16.4.5/24 brd 172.16.4.255 scope global eth0
netshoot 컨테이너에서 shell 접속
- 보면 nginx 컨테이너가 아닌데 nignx처럼 동작함
-열린 포트를 보면 80이 열려있음
- 프로세스에서는 웹서버가 돌지 않음을 확인
** 네트워크 네임스페이스를 공유하니까 nginx가 쓰는 소켓을 그대로 공유해서 쓸 수 있음
** 프로세스의 경우는 격리가 되어 있으니 보이질 않음 !
** 이게 다 아낌없이 주는 pause 컨테이너가 다 공유해주기에 가능한 일
Pause 컨테이너
- 인프라 컨테이너라고도 불림
- 먼저 network/ipc ns를 만들고 이를 다른 컨테이너들과 공유
- 아낌없이 주는 나무
'Server&Network > Kubernets_Dokcer' 카테고리의 다른 글
KNAS 3주차 _ 2 (0) | 2022.02.03 |
---|---|
KNAS 3주차_1 (0) | 2022.02.02 |
KNAS 2주차_1 Flannel (0) | 2022.01.20 |
k8s 대쉬보드 및 nginx 실행 (0) | 2021.08.25 |
쿠버네티스 참고 영상 (0) | 2021.01.15 |