extend the kubernetes api with crd and custom api server
TRANSCRIPT
- 1. Kyle bai R&D @ inwinSTACK www.inwinstack.com Extend the Kubernetes API with CRD and Custom API Server
- 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. 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. Why Kubernetes?
- 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. Kubernetes Layer
- 7. CNCF Members
- 8. CNCF Landscape
- 9. Container Management Platforms Preferences
- 10. Kubernetes Pros Monitoring Rolling-update High-availability Self-healing Cloud Provider Persistent Volumes Configmap Secret Kubernetes
- 11. Microservices Kubernetes (Microservices) (Container)
- 12. Kubernetes Distributions
- 13. Kubernetes API Server
- 14. Kubernetes Architecture(1/2) Kubernetes Masters API Nodes(Minions)
- 15. Kubernetes Architecture(2/2)
- 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. HTTP API spaces Kubernetes API /api/v1/apis/ extensions/v1beta1
- 18. API Levels Kubernetes API Alpha level: Example: v1alpha1 Beta level: Example: v1beta2 Stable level: Example: v1
- 19. API Terminology(1/2) Kind:(Entity) Kubernetes Kind 1. Pod Namespace 2. PodLists, NodeLists 3. /binding, /status API Group Resource
- 20. API Terminology(2/2) API Group: Job CronJob Version: API Group v1alpha1 v1beta1 v1 Resource: HTTP JSON
- 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. Request Flow and Processing(2/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
- 23. Request Flow and Processing(3/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
- 24. Request Flow and Processing(4/4) https://www.slideshare.net/sttts/kubernetes-api-deep-dive-into-the-kubeapiserver
- 25. Cluster state in Etcd
- 26. Validation and Admission Admission: API Kubernetes NamespaceLifecycle: ResourceQuota: Validation:()
- 27. YAML file to define resource Example resource:
- 28. Extend the Kubernetes with CRD
- 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. How CRD works internally(1/2) Creating a CRD
- 31. How CRD works internally(2/2) Creating a CustomResource
- 32. CRD Example(1/2)
- 33. CRD Example(2/2)
- 34. Add Controller to Handle events
- 35. Operators Operator CoreOS Kubernetes API
- 36. Use case - rook.io(1/3) rook.io: (Ceph on Kubenretes)
- 37. Use case - rook.io(2/3)
- 38. Use case - rook.io(3/3) Rook CRD Pool Filesystem Rook operator
- 39. Use case - TensorFlow(1/3) https://github.com/tensorflow/k8s Kubernetes Custom Resource and Operator For TensorFlow jobs.
- 40. Use case - TensorFlow(2/3)
- 41. Use case - TensorFlow(3/3)
- 42. Demo https://github.com/kairen/crd-examples
- 43. Refer projects code-generator crd-code-generation apiextensions-apiserver sample-apiserver sample-controller apimachinery
- 44. Extend the Kubernetes API with apiserver-builder
- 45. apiserver-builder apiserver-builder Kubernetes apiserver Standalone, Minikube (Controller) Kubernetes API
- 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. apiserver-builder storage operations
- 48. Demo https://github.com/kairen/crd-examples
- 49. Refer projects apiserver-builder/example kube-openapi service-catalog
- 50. 50 Thank You!!