Slide 1

Slide 1 text

Understanding the Kubernetes API Internals By Nabarun Pal and Nikhita Raghunath

Slide 2

Slide 2 text

2 Source: https://kubernetes.io/docs/concepts/overview/components/

Slide 3

Slide 3 text

3 Group git.k8s.io/kubernetes/staging/src/k8s.io/api

Slide 4

Slide 4 text

4 Version

Slide 5

Slide 5 text

5 Kind

Slide 6

Slide 6 text

6 Group-Version-Kind (GVK) apps.v1/Deployment Group Version Kind

Slide 7

Slide 7 text

7 Group-Version-Resource (GVR) /apis/apps/v1/namespaces/{namespace}/deployments Group Version Resource /api/v1/namespaces/{namespace}/pods

Slide 8

Slide 8 text

Relation between GVK and GVR 8

Slide 9

Slide 9 text

9 External Types v/s Internal Types

Slide 10

Slide 10 text

1 0 Codebase walkthrough To import the codebase walkthrough in VS Code, please see this gist.

Slide 11

Slide 11 text

11 Conversion v1 Storage Version

Slide 12

Slide 12 text

12 Conversion v1 v1beta1 Storage Version Input Version

Slide 13

Slide 13 text

13 Conversion v1 v1beta2 Storage Version Input Version

Slide 14

Slide 14 text

14 Conversion v1 v1beta3 Storage Version Input Version

Slide 15

Slide 15 text

15 Conversion v1 v1beta1 Storage Version Input Version

Slide 16

Slide 16 text

16 Conversion v1 internal v1beta1 Storage Version “Hub” Version Input Version

Slide 17

Slide 17 text

17 Conversion v1 internal v1beta2 Storage Version “Hub” Version Input Version

Slide 18

Slide 18 text

18 Conversion v1 internal v1beta3 Storage Version “Hub” Version Input Version

Slide 19

Slide 19 text

19 Conversion v1 internal v1beta1 Storage Version “Hub” Version Input Version

Slide 20

Slide 20 text

20 Conversion and Defaulting v1 internal v1beta1 Storage Version “Hub” Version Input Version

Slide 21

Slide 21 text

21 Decoding v1beta1 Input Version internal “Hub” Version Serialization, Defaulting and Conversion

Slide 22

Slide 22 text

22 Admission v1 internal “Hub” Version Admission Mutating Validating

Slide 23

Slide 23 text

23 Registry v1 internal “Hub” Version Admission Mutating Validating Registry BeforeCreate Validation

Slide 24

Slide 24 text

24 Encoding v1 internal “Hub” Version Admission Mutating Validating Registry BeforeCreate Validation Encoding Conversion Defaulting Deserialization

Slide 25

Slide 25 text

2 5 Codebase walkthrough To import the codebase walkthrough in VS Code, please see this gist.

Slide 26

Slide 26 text

26 CRDs and Aggregated Apiservers They follow the same pattern ● CRDs - staging/src/k8s.io/apiextensions-apiserver ● Aggregated Apiservers - staging/src/k8s.io/kube-aggregator (We won’t be covering them in detail in this talk)

Slide 27

Slide 27 text

Thank you! 2 7 Feedback Link