https://cncg-kr.net/ 에서 발표한 내용입니다.
IT 서비스를 구성하는데에는 다양한 자원들(Baremetal server, Virtual machine, network switch, database, 등)이 필요합니다. 이런 자원들은 각각의 관리자등을 통해서 일반적으로 각기 다른 방법들로 관리됩니다. 다만 IaaS, PaaS와 같은 Cloud방법들이 제공되면서 보다 통합된 환경으로 이런 자원들을 관리 하게 되었으나 아직까지도 일반적으로는 이런자원들을은 각기 관리되어 불편함과 문제가 수반 됩니다. 그래서 저희는 이런 다양한 자원과 방법들을 kubernetes로 보다 선언적이며 통합적인 방법으로 만들어서 자동화를 하였고 이 세션에서는 이 내용을 소개하며 어떻게 하면 이런방법들로 접근 할 수 있을지 설명하고 이를 통해 kubernetes 에 더 많은 가능성들에 대해 알아보고자 합니다.
11. 대부분의 kubernetes에 올라가는 application들
applications
bespoke
application
common
off-the-shelf
application
Black
Box
White
Box
12. Bespoke application
vs Common off-the-shelf application
● Common off-the-shelf application
기성품 어플리케이션
stateful 한 어플리케이션이 많음
infrastructure systems
(e.g. databases, key-value stores, caches,
messaging systems, …)
● Bespoke application
직접 제작한 어플리케이션
stateless 한 어플리케이션이 많음
13. Bespoke application
vs Common off-the-shelf application (cont.)
● Common off-the-shelf application
기성품 어플리케이션
stateful 한 어플리케이션이 많음
infrastructure systems
(e.g. databases, key-value stores, caches,
messaging systems, …)
이미 존재하고 있는 무언가의 방법들을
kubernetes에 올리는 것이라 kubernetes-
native 화 하기 어려움
● Bespoke application
직접 제작한 어플리케이션
stateless 한 어플리케이션이 많음
직접 개발 하는 코드이기 때문에
kubernetes-native 화 하기 쉬움
14. Bespoke application
vs Common off-the-shelf application (cont.)
● Common off-the-shelf application
기성품 어플리케이션
stateful 한 어플리케이션이 많음
infrastructure systems
(e.g. databases, key-value stores, caches,
messaging systems, …)
이미 존재하고 있는 무언가의 방법들을
kubernetes에 올리는 것이라 kubernetes-
native 화 하기 어려움
● Bespoke application
직접 제작한 어플리케이션
stateless 한 어플리케이션이 많음
직접 개발 하는 코드이기 때문에
kubernetes-native 화 하기 쉬움
그래서 이를 위한
🤖 operator 가 필요
대부분의
이미 존재하는 자원
들
16. Operator pattern
오퍼레이터(Operator)는 사용자 정의 리소스를 사용하여 애플리케이션 및 해당 컴
포넌트를 관리하는 쿠버네티스의 소프트웨어 익스텐션이다. 오퍼레이터는 쿠버네
티스 원칙, 특히 컨트롤 루프를 따른다.
https://kubernetes.io/ko/docs/concepts/extend-kubernetes/operator/
17. Operator pattern (cont.)
오퍼레이터 패턴은 서비스 또는 서비스 셋을 관리하는 운영자의 주요 목표를 포착
하는 것을 목표로 한다. 특정 애플리케이션 및 서비스를 돌보는 운영자는 시스템의
작동 방식, 배포 방법 및 문제가 있는 경우 대처 방법에 대해 깊이 알고 있다.
쿠버네티스에서 워크로드를 실행하는 사람들은 종종 반복 가능한 작업을 처리하기
위해 자동화를 사용하는 것을 좋아한다. 오퍼레이터 패턴은 쿠버네티스 자체가 제
공하는 것 이상의 작업을 자동화하기 위해 코드를 작성하는 방법을 포착한다.
https://kubernetes.io/docs/concepts/extend-kubernetes/operator/#motivation
19. Control loops (cont.)
observe
diff
act
Current state를 정확하게 파악
Current state와 Desire state의
차이를 비교
Current state와 Desire state로
변화시키기 위한 행동
Modified from https://docs.google.com/presentation/d/1oPZ4rznkBe86O4rPwD2CWgqgMuaSXguIBHIE7Y0TKVc
20. Level trigger vs edge trigger
0
1
0
1
Level trigger
Edge trigger
상태를 주기적으로 측정해서
특정 상태일때 알림
상태가 변화할때
상태를 알림
21. Level trigger vs edge trigger (cont.)
0
1
0
1
Level trigger
Edge trigger
상태를 주기적으로 측정해서
특정 상태일때 알림
상태가 변화할때
상태를 알림
23. 어떻게 모든것을 kubernetes 화 할 수 있는가?
Q1) 모든 리소스를 kubernetes로 관리한다면 그 kubernetes는 무엇으로 관리하는
가?
Q2) Cluster-api가 실행되는 management kubernetes cluster는 Cluster-api로 관리
불가능하지 않는가?
Q3) 그렇다면 어떠한 kubernetes 클러스터들로 DC의 자원들을 관리하게 되는가?
Q4) kubernetes 만으로 다양한 IT resource를 다 지원할 수 있는가?
Q5) kubernetes로 하드웨어들을 관리할 수 있는가?
24. Q1) 모든 리소스를 kubernetes로 관리한
다면 그 kubernetes는 무엇으로 관리하는
가?
36. Who watches Watchmen? (cont.)
serversmanagement
servers
for
servers
management
servers
for
management
servers
for
servers
management
servers
for
management
servers
for
management
servers
...
...
managemanagemanage
50. Kubernetes is the new kernel. We can refer
to it as a “cluster kernel” versus the typical
operating system kernel.
This means a lot of great things for users
trying to deploy applications.
https://blog.jessfraz.com/post/hard-multi-tenancy-in-kubernetes/
69. Network controller control physical switches
Ring0
kubernetes cluster
network
controller
pod
network
controller
pod
Spine Spine
Leaf Leaf Service Leaf
Compute
Compute
Compute
Compute
Compute
Compute
FW
LB
ETC..
Spine Spine
Leaf Leaf Service Leaf
Compute
Compute
Compute
Compute
Compute
Compute
FW
LB
ETC..
Spine Spine
Leaf Leaf Service Leaf
Compute
Compute
Compute
Compute
Compute
Compute
FW
LB
ETC..
Openstack region #1
Spine Spine
Leaf Leaf Service Leaf
Compute
Compute
Compute
Compute
Compute
Compute
FW
LB
ETC..
Openstack region #2
Openstack region #NOpenstack region #N
Openstack Controller
Clusters
kubernetes cluster
Neutron
api server
pod
Neutron
api server
pod
70. 네트워크 컨트롤러를 컨테이너 화 하면서 생긴 문제 (1)
네트워크 컨트롤러용 컨테이너 이미지
가 존재하나 VM형태로 구현되어 있어
서 Kubernetes 화 하는 작업들이 필요
했음
결국 구동하고 나면 스위치와 동일하게
동작했기에 `running-config`를 컨피그
맵으로 부팅 하면서 넣어줘서 pod 상태
관리를 함
71. 네트워크 컨트롤러를 컨테이너 화 하면서 생긴 문제 (2)
스위치 이미지는 VM기반으로 생성되있으며 인터페이스가 2개 이상이여야 작동함.
K8S에서는 동일한 네트워크에 인터페이스 한개를 더 추가해서 쓸 수 있도록
Multus를 사용
74. We will create Multiverse by kubernetes
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
CLOUD SERVICE
76. Come aboard!
[클라우드서비스] 언더클라우드 개발자 모집
https://kakaoenterprise.recruiter.co.kr/app/jobnotice/view?systemKindCode=MRS2&jobnoticeSn=22006
[클라우드서비스] 네트워크 개발자 모집
https://kakaoenterprise.recruiter.co.kr/app/jobnotice/view?systemKindCode=MRS2&jobnoticeSn=21985
그 외 클라우드 서비스 개발
https://kakaoenterprise.recruiter.co.kr/app/jobnotice/view?systemKindCode=MRS2&jobnoticeSn=36889