50
Kyle bai R&D @ inwinSTACK www.inwinstack.com Extend the Kubernetes API with CRD and Custom API Server

Extend the Kubernetes API with CRD and Custom API Server

Embed Size (px)

Citation preview

  1. 1. Kyle bai R&D @ inwinSTACK www.inwinstack.com Extend the Kubernetes API with CRD and Custom API Server
  2. 2. Job R&D @ inwinSTACK Description java objc iOS Mobile Hadoop Spark Linux OpenStackCeph Kubernetes GitHub GitBook Drink Coffee Good! Phone #7727 Love Buttocks kairen([email protected]) https://kairen.github.io/ About Me Kyle Bai
  3. 3. Kubernetes 47% Containers remain the top emerging technology of interest to users. Among those currently deploying container orchestration or platform services on OpenStack, 47% are using Kubernetes. Why Kubernetes? Kubernetes API Server Extend the Kubernetes with CRD Extend the Kubernetes with apiserver-builder Agenda Today I will talk about
  4. 4. Why Kubernetes?
  5. 5. Kubernetes Kubernetes Google (Container) Google Brog Container(OCI) K8s( ) CNCF(Cloud Native Computing Foundation) Stars 25,830+ Commits 52,905+ Contributors 1,331+
  6. 6. Kubernetes Layer
  7. 7. CNCF Members
  8. 8. CNCF Landscape
  9. 9. Container Management Platforms Preferences
  10. 10. Kubernetes Pros Monitoring Rolling-update High-availability Self-healing Cloud Provider Persistent Volumes Configmap Secret Kubernetes
  11. 11. Microservices Kubernetes (Microservices) (Container)
  12. 12. Kubernetes Distributions
  13. 13. Kubernetes API Server
  14. 14. Kubernetes Architecture(1/2) Kubernetes Masters API Nodes(Minions)
  15. 15. Kubernetes Architecture(2/2)
  16. 16. Kubernetes API driven Kubernetes API JSON HTTP API API CRUD Kubernetes API OpenAPI gRPC Remote Procedure Call API CRD(Custom Resource Definitions) API server aggregation Custom resources and controllers
  17. 17. HTTP API spaces Kubernetes API /api/v1/apis/ extensions/v1beta1
  18. 18. API Levels Kubernetes API Alpha level: Example: v1alpha1 Beta level: Example: v1beta2 Stable level: Example: v1
  19. 19. API Terminology(1/2) Kind:(Entity) Kubernetes Kind 1. Pod Namespace 2. PodLists, NodeLists 3. /binding, /status API Group Resource
  20. 20. API Terminology(2/2) API Group: Job CronJob Version: API Group v1alpha1 v1beta1 v1 Resource: HTTP JSON
  21. 21. Request Flow and Processing(1/4) https://github.com/kubernetes/apiserver/blob/master/pkg/server/config.go DefaultBuildHandlerChain() Multiplexer HTTP Handlers Routes HTTP Handlers Handlers HTTP ( User, Auth )
  22. 22. Request Flow and Processing(2/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
  23. 23. Request Flow and Processing(3/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
  24. 24. Request Flow and Processing(4/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
  25. 25. Cluster state in Etcd
  26. 26. Validation and Admission Admission: API Kubernetes NamespaceLifecycle: ResourceQuota: Validation:()
  27. 27. YAML file to define resource Example resource:
  28. 28. Extend the Kubernetes with CRD
  29. 29. CustomResourceDefinitions(CRD) CustomResourceDefinition(CRD) v1.7+ Kubernetes API Kubernetes CRD ThirdPartyResources(TPR) Kubernetes API. CRDs UX ex: kubectl. Controllers . SubResources(v1.9). P.S. TPR v1.8
  30. 30. How CRD works internally(1/2) Creating a CRD
  31. 31. How CRD works internally(2/2) Creating a CustomResource
  32. 32. CRD Example(1/2)
  33. 33. CRD Example(2/2)
  34. 34. Add Controller to Handle events
  35. 35. Operators Operator CoreOS Kubernetes API
  36. 36. Use case - rook.io(1/3) rook.io: (Ceph on Kubenretes)
  37. 37. Use case - rook.io(2/3)
  38. 38. Use case - rook.io(3/3) Rook CRD Pool Filesystem Rook operator
  39. 39. Use case - TensorFlow(1/3) https://github.com/tensorflow/k8s Kubernetes Custom Resource and Operator For TensorFlow jobs.
  40. 40. Use case - TensorFlow(2/3)
  41. 41. Use case - TensorFlow(3/3)
  42. 42. Demo https://github.com/kairen/crd-examples
  43. 43. Refer projects code-generator crd-code-generation apiextensions-apiserver sample-apiserver sample-controller apimachinery
  44. 44. Extend the Kubernetes API with apiserver-builder
  45. 45. apiserver-builder apiserver-builder Kubernetes apiserver Standalone, Minikube (Controller) Kubernetes API
  46. 46. apiserver-builder cmd # $ cd GOPATH/src/github.com/my-org/my-project $ apiserver-boot init repo --domain # $ apiserver-boot create group version resource --group --version --kind # $ apiserver-boot build executables $ apiserver-boot build docs # local $ apiserver-boot run local # $ apiserver-boot run in-cluster --name nameofservicetorun --namespace default --image gcr.io/myrepo/ myimage:mytag $ kubectl create -f sample/.yaml
  47. 47. apiserver-builder storage operations
  48. 48. Demo https://github.com/kairen/crd-examples
  49. 49. Refer projects apiserver-builder/example kube-openapi service-catalog
  50. 50. 50 Thank You!!