Cheat Sheet
Microk8s tips and tricks
Install
Latest
snap install microk8s --classicSpecific version
snap install microk8s --classic --channel=1.17/stableSet group
sudo usermod -a -G microk8s $USERLogout from your workstation session and login again.
Useful commands
Get kubeconfig
microk8s.config > $HOME/.kube/configReset cluster
microk8s reset --destroy-storageReferences
https://microk8s.io/docs/commands
Built-in Registry
Push
Pushing to this insecure registry may fail in some versions of Docker unless the daemon is explicitly configured to trust this registry. To address this we need to edit /etc/docker/daemon.json and add:
{
"insecure-registries" : ["localhost:32000"]
}Then restart docker.
sudo systemctl restart dockerEnable registry, build and push image.
microk8s enable registry #20Gi registry
#microk8s enable registry:size=40Gi
# Build image
docker build . -t localhost:32000/myimage:registry
# Or tag an existing image
#docker tag 1fe3d8f47868 localhost:32000/myimage:registry
docker push localhost:32000/myimage:registryDeploy it.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: myapp
labels:
app: myapp
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: localhost:32000/myimage:registry
imagePullPolicy: Always
ports:
- containerPort: 8000Remove
Run on your workstation:
registry=localhost:32000
repositories=$(curl ${registry}/v2/_catalog)
for repo in $(echo "${repositories}" | jq -r '.repositories[]'); do
echo $repo
tags=$(curl -sSL "http://${registry}/v2/${repo}/tags/list" | jq -r '.tags[]')
for tag in $tags; do
echo $tag
curl -v -sSL -X DELETE "http://${registry}/v2/${repo}/manifests/$(
curl -sSL -I \
-H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
"http://${registry}/v2/${repo}/manifests/$tag" \
| awk '$1 == "Docker-Content-Digest:" { print $2 }' \
| tr -d $'\r' \
)"
done
doneThen run:
registry_pod=$(kubectl --namespace="container-registry" get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
kubectl exec --namespace="container-registry" $registry_pod /bin/registry garbage-collect /etc/docker/registry/config.ymlLocal private registry
Allow insecure registry:
{
"insecure-registries" : ["172.17.0.1:5001"]
}
Restart docker.
sudo systemctl restart dockerStop microk8s, backup and edit config file.
microk8s stop
sudo cp /var/snap/microk8s/current/args/containerd-template.toml /var/snap/microk8s/current/args/containerd-template.toml-BKP
nano /var/snap/microk8s/current/args/containerd-template.tomlAdd the following section.
...
[plugins."io.containerd.grpc.v1.cri".registry]
...
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
...
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."172.17.0.1:5001"]
endpoint = ["http://172.17.0.1:5001"]Start microk8s.
microk8s startStart local registry.
docker run -it --rm \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5001 \
-p 5001:5001 \
--name local-registry \
registry:2Tag and push image.
docker tag ubuntu:18.04 172.17.0.1:5001/my-ubuntu:0.0.1
docker push 172.17.0.1:5001/my-ubuntu:0.0.1
curl 172.17.0.1:5001/v2/_catalogTest it.
microk8s kubectl run -it --rm tmp --image=172.17.0.1:5001/my-ubuntu:0.0.1References
Last updated