관리 메뉴

A seeker after truth

데센프 12주차 6/1,3 본문

수업 필기/Docker, Kubernetes(20-1) - 공개글!

데센프 12주차 6/1,3

dr.meteor 2020. 6. 8. 02:12

[월: 대시보드]

팟을 돌릴 때 gui인 대시보드를 설치해서 다루면 좋다.

기능이 워낙 많으니 수업 진행하며봤던 부분을 중점적으로...

이론 설명할 부분은 없음. 그냥 해볼만한걸 실습으로. 

스팩과 스테이터스...? 왓츠댓...?

 

 

카타코다 환경에서 터미널 1에다가는 미니쿠베 스타트 후 접때만든 심플 디플로이먼트 얌파일 만들고 저장한다. 글고 창 하나 더 키고 아래 입력.

minikube addons enable dashboard

쿠버에서 서비스 - 매니저 하나 잇엇고, 노드포트 추가했을 때 네트웍을 위한게 있는데 지금 우리 대시보드를 위해 하나 올리...

 

노드포트가 생겼으면 서비스가 제공이 되고있는거라고 생각할 수 있음

 

 

 

[수: 서비스]

6. Kubernetes에서는 End-User에게 서비스를 제공하기 위하여 Service의 개념이 있다. Service는 Pod를 처리하기 위하여 Label을 이용하는데, 이유를 설명하시오.

7. Kubernetes에서 End-User에게 노출되는 Service와 Deployment와의 관계를 설명하시오.

 

라벨을 주면 셀렉터를 고르는 셈

서비스를 사용해 팟들을 연결하고 디플~ 이 복수로 등장해서 얘네를 활용해 서비스를 외부에 노출하는 작업들

 

6: 팟이 언제 죽고 언제 살아날지 예측하는건 컴이 안정적이면 예측할 수 있을 것. 하지만 아닌 경우엔 알기 어렵다. 

정상적으로 내가 죽일수도 있고, 버전업/다운 정상 작업 통해서, 혹은 시스템 장애로.. 죽었다 살아날수있

그러나 죽은 애가 소생되는게 아니고 완전 새로운 애가 살아나는!

 그래서 아이피 주소를 보는게 의미가 없다 (주소가 바뀌나...?<-맞음.)

이제 점점 일이 복잡해지고 있다.

 

7: 앞의걸 복습한 이유인데, 이 문젠 어찌 해결할 것?

죽고 살아나는 모든 팟들을 아이피 주소로 관리할 경우, 자꾸 없어지고 새로 생기고... 하는데 이게 프론트 측에선 힘들지 않겠는가?

요청하는 쪽이 프론트, 백은 그 반대

우리 서비스는 어떤 이야기를 주로 할 것인가?... 요구를 받아주는 팟들과 작업하는 팟이 있을텐데, 앞과 뒤 팟으 ㄹ어찌 구분?

=> 힌트는 라벨고 ㅏ셀렉터로 구분한다.

 

어플 구조 생각하면서 진행해보자.

 

8: 이들을 연결하는 policy(강의자료나옴)를 서비스라고 할 것. 이걸 이야기하고 실제로 경험할 것.

노드 포트는 서비스에 속하는 것이라 함. 서비스는 얌 혹은 제이슨으로 정의될 것. 우리는 얌으로.

서로 다른 이미지팟=>레플리카셋=>확장해서 서비스로.

실제로 구현하면 같은 것이 될 것

서비스를 묶어서 필요한 애들만 묶어서 필요한 애들만 동작하게 하고 바꾸기도 하고 그럴건데

이제부터 라벨을 필요에 따라 호출할 것이고, 서비스 살아있는 도중에도, 중간에 제어하기 위해서도.

얌에도 쓰고, 동적으로 손으로 명령 주고 실행할 때도 쓸 것이다

 

프론트 백 팟들 레플리카 디플을 위에서 제어하는 상위 개념 => 서비스

 

9: 아이피가 바뀌면 라벨이 왜 필요한지 설명하는 추상적인 그룹 설명할 때 이 자료가 나왔었음.

맨 왼쪽과 가운데는 같은 이미지에서 만들어져서 그런지 같은 라벨 정보를 지님. 역관계로 생각하고 추론할 수도 있고.

이름이 프론트로 되어있어서 그렇지 실제론 여기 나온 팟들이 뒤에서 돌아가는 애들이고, 앞에 하나 더있는데 외부에서 트래픽 받는데 

외부로 공개되어있는 진정한 프론트는 프론트 서비스라고 써있는 상위의 녀석. 포트 443로 받는다 그리고 나눠준다.

로드밸런싱 프로그램 안짜도 자동으로 해준다!!

외부서 443으로 들어오면 나눠준다.

이 장이 서비스의 큰 그림. 이를 얌에 쓰는 행위를 지금 하려고 한다. 근데 버전이 다른 둘을 어떻게 다루어야할까?

 

10:

버전 1,2 다루는 레플리카(R)셋(S)을 따로 만든다.

서비스는 별도로 만들고 얌파일 2개 만들거다. 서비스 만들기 전에 디플을 2개 만들거다

대부분의 경우 버전이 여러 개가 같이 돌지 않음. 버전이 혼용되길 원치 않음

 

11: 버전 1에서 2로 넘길 떄 모습. 버전 라벨 없었는데 

12:결국 우리는 아이피로 뭔갈 작업하지 않는다. 아이피는 외부에 공개되지 않는다. 클러스터 바깥으로 보이는건 의미읎음

외부 통신을 위해 구멍 뚫어야 하고 그게 서비스. 접때 이해 못했던 노드포트도 이 맥락 중 하나.

도커 주소에서 포트 주소 트랜스레이션한 다음에 아이피 주소 찾아서 들어갔지만 쿠버에선 이런 일 거의 안한다.

쿠버에선 네트워크에 구멍 뚫어주는 전문 서비스들이 존재함.

 

13: 네트워크 혹은 뒤의 여러 팟을 묶어주는 것을 총 지칭한다. 네트워크 성향이 강하다.//?

우리가 팟 만들면 외부에서 컬 통해서 접속, 그러고 나면 로드밸런싱 의해 전달됨, 팟들은 서로 통신하고.

이런걸 최초로 해주는 것이 쿠버네티스 (아이피) 서비스.

쿠버를 시작하면 아무것도 안해도 최초에 클러스터 아이피가 뜨고 최초의 서비스가 있는데 ,

아무것도 안했는데 백지상태로 있으면 안되기 땜에 디폴트를 하나 만들어준다.

외부에서의 통신은 없고, 내부적으로 팟들&레플 컨트롤러, 디플로 충분하다. 그럼 이 클러스터 아이피로 서비스 하는거고

우리가 http 이미지를 띄워서 접속하지 않을 떄는 노드포트를 띄우는 일도 없었따.

단 외부 통신 하고자하면 노드포트 띄워야.

노드포트가 여러번 등장했고 이는 외부에서 구멍뚫어서 안으로 들어갈 수 있께 해주는 것이었다.

클러스터를 구성하는 노드에 구멍을 뚫어주는 행위를 하게 됨.

팟들 띄웠을 떄 각각 수시로 들락날락할 수 이썽ㅆ음

 

포트 주소 번역을 지금까지 -p 옵션으로 줬었고 얌파일에 expose하는 포트넘버를 썼었는데

여기선 노드포트란 서비스를 사용하면 외부 트래픽을 받는 구멍을 하나 뚫게 되는 것.

 

14: 13쪽보다 더 일반적으로 쓰는것이 여기 나오는 '로드밸런서 서비스'.

말그대로 포트넘버를뚫는게 주목적이니 이런 게 있다.

로드밸런서는 내가 받은 트래픽은 외부와 구멍을 뚫어 디폭트로 받고

이를 뒤에 있는 애들한테 얼마나 똘똘하게 나눠줄지 고민(?)하는 것이 로드밸런서 서비스.

수업에 한번도 등장 안한 이유는 로컬 환경 말고 물리적으로 컴이 분리되어있는 경우에만 동작해서.

도커엔진 활용해서 이미지 관리 했었는데 기본적으로 도커 허브의 기능도 있다.

 

gke나온다. 내가 만든 이미지가 여기 올라가서 동작하는 거 볼 수 있음

근ㄷ 이건 클라우드 환경 아니고 그냥 쿠버에 특화된.

외부 별도 컴인 양 연결도 가능

 

잠깐 비교 정리

- 클러스터 아이피 서비스: 온리 로컬

- 노드포트 서비스: 외부와 인터페이스도 가능, 로컬도 되고

- 로드밸런서: 별도 컴 존재할 때 쓸 수 있는 좀더 똑똒한, 네트워크 기능이 들어간 서비스

- 인그레스: 단순하다. 복잡한거 많이 안하고,외부와 연결한 구멍이나 뭔갈 받았을 떄 이걸 누구에게 줄지를 좀더 똘똘하게 하고싶을 때 쓸 수 있는 것.

로드밸런서, 인그래스에 대해선 나중에 네트워크챕터에서 더 배운다

 

어플리케이션은 같지만 릴리즈가 다르게.

15: 파일 코드 2개 비교.

각각 실행시키면 팟 2개 각각 총 4ㅐ

 

16: 노드포트가 외부에서 구멍뚫는 역할이니까 포트 번호 당연히 있따.

이 노드 포트는 80을 받을 것

노드포트 사용해 외부 인터페이스 둟었고 이제 뒤에 있는 애들 결정해야 되는데

라벨 주기 위해 selector 문법 사용

내가 셀렉트할 애들은 앱에 eva 인 애들인데, 15쪽 참고해보면 왼/오 다 해당되므로 총 4개가 후보군

그 중 릴리즈가 웨스트인 애들이니까 왼쪾.

그래서 이 코드를 실행하면 노드 포트 있고, 포트 번호 80, 밑엔 앞에서 설명한 팟 4개 중 에바면서 웨스트인 팟 2개가 이 노드 포트 서비스에 연결되는 것을 그릴 수 있어야 함

 

17: 이것ㄷ릉르 돌렸ㅇㄹ 떄 무슨일이 일어날지 상상할 수 이씅면 오늘 이해는 끝난 것.

 

이제 실습

 

서비스를 2개만 돌리고 있따가 하나만 선택하는 경우는 어떤게 있을까?

- 원랜 하나만 돌리다 뉴버전 소웨 하나 돌리고 내가 서비스를 하나 넘겨줄 때(ㅁㅁㅁ)

- 시험으로 몰래 2개만 돌고 있다가 이게 돌아가도 고객님들은 모르거나 불만이 있지 않을까 하면 섞어서 할 수 있음(뭔말몰)

 

투 레플리카 어플라이 하고 나서 심플 서비스까지 어플라이 했다. 

내부 네트워크를 만들고 나서 뭔가 하나씩 만들었다

노드포트를 만들어서 포트를 하나 뚫었다.

 

20: 이제 외부애서 접속하는 걸 모사해본다

 

난 자꾸 저렇게 다르게 나온다...강의처럼 나와야 하는데...

일단 강의 화면 기준으로, 서비스의 cluster-ip를 사용한다면 10.96. 뭐시기 이거 써야 되는데

실제로 주소를 확인해보면 그렇지 않다(192. 뭐시기)<-사실 로컬 아이피 주소의 일부이다.

쿠버가 만든 클러스터, 프라이빗하게 지들끼리 쓰는 아이피에 해당하는 것이 클러스터아이피라고 적힌 란에 적힌 아이피다.

10.96.대로 표현되고 있는 애들안에 팟 2개, 디플 2개... 등이 갇혀있.고 이를 감싼 노드포트가 있는데, 

우리가 바깥에서 접근하려면 쿠버마스터를 쓴다. 좋은 방법은 아니지만 네트워크에 대한 내용이 나오기 전까진 이렇게 라려고 한다.

49분대에 강의자료 9쪽에 대해 설명하눈 부분에서 이게 이렇게 함으로써 어떤 일이 일어난 것인지 설명 나온다! 혹시 찾아볼거면 찾으셈 난 지금들어도ㅁㅁㅁ

 

22: 우리가 지금 하고 있는게 진짜 외부에서 되고 있는건지 궁금할 수 있다.

더불어서 우리가 지금 만든 바깥에서 명령을 통해 들어왔는데, 프로그램을 짜서 둘을 연결하는 작업도 할 수 있따.

컨테이너를 하나 별도로 만들려 한다.

현재 우리가 에바란 이름의 어플을 실행하고 있고 릴리즈는 레스트로만 선택해서 동작하고 있는데, 그냥 테스트하다 보니까 호기심이 생겼다. 

 테스트하다보니 호기심이 생겻다 외부에서 접근해보고 싶어졌다

알파인 리눅스의 쉘 이름이 ash란 점 까먹지 말 것!!! 잊지말것!!!

-- ash 하면 런에 해당. 이이미지 실행한 뒤 이 명령 바로 실행할 수 있음

 

이거 로드밸런싱 되는거 왼쪽 오른쪽 차례대로 실행되는거 보여주는거 있잖아

그거 반드시 똑딱똑딱은 아닌데 그런경우는 오히려 라운드로빈이라고 부르는게 더 맞다.

진정한 똑딱이 유지되는 로드밸런싱은 난수 생성해서 실험하는 경우가 많음 \

 

노드포트로 서비스 만들고 얘가 앞쪽에 있는 애들 받아서 로드밸런싱하고 우리가 포트넘버로 밖에 뚫어준 부분까지 했어요

 

25: 지우는건 역순으로 지운다

 

 

 

 

 

 

 

 

 

 

 

'수업 필기 > Docker, Kubernetes(20-1) - 공개글!' 카테고리의 다른 글

시험 총정리  (0) 2020.06.21
데센프 11주차 5/25, 27  (0) 2020.05.31
데센프 10주차 필기 5/18~22  (0) 2020.05.18
데센프 9주차 필기  (0) 2020.05.11
데센프 8주차 5/4, 5/6(중간고사)  (0) 2020.05.05