Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Toward kubernetes native data center

1 817 vues

Publié le

https://cncg-kr.net/ 에서 발표한 내용입니다.

IT 서비스를 구성하는데에는 다양한 자원들(Baremetal server, Virtual machine, network switch, database, 등)이 필요합니다. 이런 자원들은 각각의 관리자등을 통해서 일반적으로 각기 다른 방법들로 관리됩니다. 다만 IaaS, PaaS와 같은 Cloud방법들이 제공되면서 보다 통합된 환경으로 이런 자원들을 관리 하게 되었으나 아직까지도 일반적으로는 이런자원들을은 각기 관리되어 불편함과 문제가 수반 됩니다. 그래서 저희는 이런 다양한 자원과 방법들을 kubernetes로 보다 선언적이며 통합적인 방법으로 만들어서 자동화를 하였고 이 세션에서는 이 내용을 소개하며 어떻게 하면 이런방법들로 접근 할 수 있을지 설명하고 이를 통해 kubernetes 에 더 많은 가능성들에 대해 알아보고자 합니다.

Publié dans : Logiciels
  • Soyez le premier à commenter

Toward kubernetes native data center

  1. 1. Toward kubernetes-native data center 데이터 센터의 모든 자원을 쿠버네티스로 관리하기 위하여 카카오엔터프라이즈 이어형 2020.10
  2. 2. 소개 이름: 이어형 (a.k.a. 어형부형) 경력: kakao enterprise(2019.12 ~ ): Public & Private Cloud 개발 & 운영 ( kubernetes & openstack) Line(2017.5 ~ 2019.11): Inhouse Cloud-native platform 개발 & 운영 ( kubernetes ) Kakao(2014.2 ~ 2017.4): Inhouse Private Cloud 개발 & 운영 ( openstack ) KT(2009.8 ~ 2013.12): Public Cloud Storage 개발 & 운영 ( openstack )
  3. 3. 목차 ● Kubernetes-native ● Kubernetes를 이용한 관리 ● 🤖 Operator ● 어떻게 모든것을 kubernetes 화 할 수 있는가? ● 결론
  4. 4. Kubernetes-native
  5. 5. X-native? cloud-native kubernetes-native ...
  6. 6. Digital-native Gen Z
  7. 7. Cloud-native The Twelve-Factor App https://12factor.net/
  8. 8. 2009~ 2012~ 2014~ 2019~
  9. 9. Kubernetes를 이용한 관리
  10. 10. Declarative application management in Kubernetes https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/declarative-application-management.md Kubernetes-native 쿠버네티스로 관리한다는 것은?
  11. 11. 대부분의 kubernetes에 올라가는 application들 applications bespoke application common off-the-shelf application Black Box White Box
  12. 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. 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. 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 가 필요 대부분의 이미 존재하는 자원 들
  15. 15. Operator🤖
  16. 16. Operator pattern 오퍼레이터(Operator)는 사용자 정의 리소스를 사용하여 애플리케이션 및 해당 컴 포넌트를 관리하는 쿠버네티스의 소프트웨어 익스텐션이다. 오퍼레이터는 쿠버네 티스 원칙, 특히 컨트롤 루프를 따른다. https://kubernetes.io/ko/docs/concepts/extend-kubernetes/operator/
  17. 17. Operator pattern (cont.) 오퍼레이터 패턴은 서비스 또는 서비스 셋을 관리하는 운영자의 주요 목표를 포착 하는 것을 목표로 한다. 특정 애플리케이션 및 서비스를 돌보는 운영자는 시스템의 작동 방식, 배포 방법 및 문제가 있는 경우 대처 방법에 대해 깊이 알고 있다. 쿠버네티스에서 워크로드를 실행하는 사람들은 종종 반복 가능한 작업을 처리하기 위해 자동화를 사용하는 것을 좋아한다. 오퍼레이터 패턴은 쿠버네티스 자체가 제 공하는 것 이상의 작업을 자동화하기 위해 코드를 작성하는 방법을 포착한다. https://kubernetes.io/docs/concepts/extend-kubernetes/operator/#motivation
  18. 18. Control loops observe diff act Current State Desire State Modified from https://docs.google.com/presentation/d/1oPZ4rznkBe86O4rPwD2CWgqgMuaSXguIBHIE7Y0TKVc
  19. 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. 20. Level trigger vs edge trigger 0 1 0 1 Level trigger Edge trigger 상태를 주기적으로 측정해서 특정 상태일때 알림 상태가 변화할때 상태를 알림
  21. 21. Level trigger vs edge trigger (cont.) 0 1 0 1 Level trigger Edge trigger 상태를 주기적으로 측정해서 특정 상태일때 알림 상태가 변화할때 상태를 알림
  22. 22. 어떻게 모든것을 kubernetes 화 할 수 있 는가?
  23. 23. 어떻게 모든것을 kubernetes 화 할 수 있는가? Q1) 모든 리소스를 kubernetes로 관리한다면 그 kubernetes는 무엇으로 관리하는 가? Q2) Cluster-api가 실행되는 management kubernetes cluster는 Cluster-api로 관리 불가능하지 않는가? Q3) 그렇다면 어떠한 kubernetes 클러스터들로 DC의 자원들을 관리하게 되는가? Q4) kubernetes 만으로 다양한 IT resource를 다 지원할 수 있는가? Q5) kubernetes로 하드웨어들을 관리할 수 있는가?
  24. 24. Q1) 모든 리소스를 kubernetes로 관리한 다면 그 kubernetes는 무엇으로 관리하는 가?
  25. 25. A1) kubernetes
  26. 26. 정확하게는 아래의 조합으로 관리 Kubernetes Cluster-api Metal³& &
  27. 27. Cluster-api https://cluster-api.sigs.k8s.io/images/management-cluster.svg kubernetes 클러스터의 프로비저닝,업그레이드 및 운영을 단순화하기 위한 도구
  28. 28. Metal³ https://github.com/metal3-io/cluster-api-provider-metal3/blob/master/docs/architecture.md 베어메탈 호스트에 kubernetes를 배포하기 위한 도구
  29. 29. Cluster-api with metal³ by kubeadm Actor Deploy Create
  30. 30. Management cluster (a.k.a Ring 0) Actor Deploy Create Ring 0
  31. 31. Ring 0 as a protection ring https://en.wikipedia.org/wiki/Protection_ring
  32. 32. Ring 0 in Kakao Enterprise Data center management kubernetes cluster workload cluster workload cluster workload cluster workload cluster workload cluster workload cluster workload cluster workload cluster
  33. 33. Cluster-api with metal³ by kubeadm
  34. 34. Q2) Cluster-api가 실행되는 management kubernetes cluster는 Cluster-api로 관리 불가능하지 않는가?
  35. 35. Who watches Watchmen?
  36. 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
  37. 37. A2) 자기자신을 cluster-api로 관 리
  38. 38. How to build self managed cluster-api cluster (1)
  39. 39. How to build self managed cluster-api cluster (2)
  40. 40. How to build self managed cluster-api cluster (3)
  41. 41. How to build self managed cluster-api cluster (4)
  42. 42. How to build self managed cluster-api cluster (5)
  43. 43. How to build self managed cluster-api cluster (6)
  44. 44. How to build self managed cluster-api cluster (7)
  45. 45. How to build self managed cluster-api cluster (8)
  46. 46. Q3) 그렇다면 어떠한 kubernetes 클러스터들로 DC의 자원들을 관리하게 되는가?
  47. 47. A3)
  48. 48. Ring0 Shared 0 Shared 1 kubernetes cluster kubernetes cluster kubernetes cluster openstack region 0 kubernetes cluster openstack region 1 kubernetes cluster CLOUD SERVICE under cloud Undercloud by kubernetes clusters
  49. 49. CLOUD SERVICE User Service Platform service Software serviceInfra service
  50. 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/
  51. 51. Q4) kubernetes 만으로 다양한 IT resource를 다 지원할 수 있는가?
  52. 52. NO “하지만 거인의 어깨에 올라타면 됩니다." A4)
  53. 53. The Most Widely Deployed Open Source Cloud Software in the World
  54. 54. Kubernetes Openstack IT 리소스를 선언적으로 관리 다양한 IT 리소스를 지원하나 관리가 까다로움
  55. 55. 관리가 까다로운 openstack을 손쉽게 관리하여 다양한 IT 리소스를 지원 Openstack on Kubernetes by Airship
  56. 56. Openstack on Kubernetes by Airship ⇒ Alienship ⇒
  57. 57. alienship 개인 개발 환경
  58. 58. alienship 개인 개발 환경 - K8S 관점
  59. 59. 간단한 테스트용 쿠버네티스 클러스터링 방법 https://gist.github.com/leoh0/80e48502caae1c463a0cc195bf191c2c
  60. 60. 첫번째 마스터 1. kubeadm init 2. (option) Install CNI 3. Serving Certification, Token
  61. 61. 첫번째 마스터 외의 마스터 1. Waiting for First Master , Download Token 2. Download Certification 3. kubeadm join
  62. 62. 워커 1. Waiting for First Master , Download Token 2. kubeadm join
  63. 63. alienship 개인 개발 환경 - openstack 관점
  64. 64. alienship 개인 개발 환경 향후 모습
  65. 65. Kubernetes-native openstack kubernetes native 하게 관리/이용 할 수 있는 operator들 필요 projectobserve diff act observe diff act
  66. 66. Q5) kubernetes로 하드웨어들을 관리할 수 있는가?
  67. 67. A5) physical machine & physical switch를 관리 함
  68. 68. https://drive.google.com/file/d/1mdofzqIpH7XpFYkjB0ZC7EWU_RGW6aOl/view Metal³ also control physical machines
  69. 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. 70. 네트워크 컨트롤러를 컨테이너 화 하면서 생긴 문제 (1) 네트워크 컨트롤러용 컨테이너 이미지 가 존재하나 VM형태로 구현되어 있어 서 Kubernetes 화 하는 작업들이 필요 했음 결국 구동하고 나면 스위치와 동일하게 동작했기에 `running-config`를 컨피그 맵으로 부팅 하면서 넣어줘서 pod 상태 관리를 함
  71. 71. 네트워크 컨트롤러를 컨테이너 화 하면서 생긴 문제 (2) 스위치 이미지는 VM기반으로 생성되있으며 인터페이스가 2개 이상이여야 작동함. K8S에서는 동일한 네트워크에 인터페이스 한개를 더 추가해서 쓸 수 있도록 Multus를 사용
  72. 72. 결론
  73. 73. Universe CLOUD SERVICE
  74. 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
  75. 75. Multiverse 에 관심이 있나요?
  76. 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
  77. 77. 감사합니다. Q & A

×