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