- Understand k8s api versioning system.
- Understand k8s object configuration syntax
- Build working docker registry in k8s
You need to create environment using kubeadm on platform of your choice ( e.g. AWS). Develop simple set of k8s manifests/objects to deploy application Build local docker registry application inside your cluster.
- https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- https://kubernetes.io/docs/concepts/services-networking/service/
- https://kubernetes.io/docs/setup/release/version-skew-policy/
- https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning
- https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
- https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
- https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
- https://docs.docker.com/registry/
- Use single all-in-one AWS-based k8s kubadm based deployment. Minikube also an option.
- Used official docker registry containter as a base
- Prepare environment: use automation of your choice
- Prepare Deployment/Service manifest to deploy docker registry inside k8s.
- Expose docker registry service on 80 port using NodePort LB type.
- Build local "hello-world" docker image and upload it to docker registry.
- Restart pod: remove pod - observe what happens after that
- Restart pod2: change number of pod replicas to 0. Wait for changes. Return back to 1.
- Check if you image available in docker registry.
- Modify your manifests. Add hostpath volume to pod.
- Re-upload your hello world docker image back to registry.
- Restart docker registry pod.
- Check if your image available in docker registry.
- Create your own nginx-based "hello-world" docker image.
- Create microservice based on your internal docker registry and "hello-world" image.
- Expose microservice with NodePort.
- What versions of kubelet supported by kube-apiserver v1.15
- What versions of kubelet supported by kube-apiserver v1.14
- What API levels used to label API object readiness? Briefly explain API levels designations.
- What is API group?
- You're using API object with version:
v1alpha1
. How many guarantied minor releases this api will exists? - You're using API object with verions
v1beta1
. How many many guarantied minor releases this api will exists? - What is Deployment?
- What is ReplicaSet?
- What is Controller?
- Explain difference between declarative and imperative approach?
- What is manifest?
- What is volume?