I was wondering: Is there a specification of what Kubernetes is the implementation of?
The API to low-level container runtimes is specified by the OCI. An implementation for this also comes from the OCI, runc. There are also other implementations that follow the specification. Another example is crun. This means that the API specifies what low-level container runtimes must be able to do. But the implementation is separate from the specification that runc follows.
The API to high-level container runtimes is specified with the CRI. For example, containerd and CRI-O implement this specification and therefore it is also given what the high-level container runtimes must be able to do if they want to follow the CRI specification. Again, the specification is developed separately from the implementation.
Is there also a “product-independent” specification for Kubernetes?
I found the OpenAPI spec, but that is part of the application and not a “product independent” specification. (kubernetes/api/openapi-spec at master · kubernetes/kubernetes · GitHub)
I also found the Conformance Tests, but this is not a formal document as it is a specification. (GitHub - cncf/k8s-conformance: 🧪CNCF K8s Conformance Working Group)
I didn’t find a “product independent” specification, which suggests that Kubernetes proclaims itself as an industry standard and equates its documentation to a specification.
To me, the difference between specification and implementation is the place of definition of the thing. If a thing defines itself it is not a specification. Then it is a way of solving a problem that is accepted by all. If there is a generic definition of the behaviour and different approaches to a solution can arise from it, it is a specification.
I hope someone can help me with my question.
With kind regards