Название: K8s Applications mit MicroK8S auf Raspberry PI
Автор: Alfred Sabitzer
Издательство: Bookwire
Жанр: Математика
isbn: 9783742770134
isbn:
Nun pushen wir den Container in das remote-Repository. Es werden natürlich alle Layer gepushed (in dem Falle gab es die darunterliegenden Layer noch nicht).
alfred@monitoring:~/GetInfo$ docker push docker.registry:5000/getinfo:20211015
The push refers to repository [docker.registry:5000/getinfo]
cae68116d3ec: Pushed
dd68a1e5bd54: Pushed
00e2dc9bf745: Pushed
5a8d0b1f55c0: Pushed
8f352be1ccfe: Pushed
729e17fedb70: Pushed
08ae3e8fdb37: Pushed
6fe1ba639418: Pushed
fa0d2ce7179e: Pushed
092886e29cb5: Pushed
c8d42fc353a6: Pushed
6a91c97933c9: Pushed
ee420dfed78a: Pushed
20211015: digest: sha256:aa82ba777936d4cec354c0b9c5ece353751a96c9717375cfd58d3ed2beea5cf4 size: 3030
alfred@monitoring:~/GetInfo$
Kurze Kontrolle, ob der Container wirklich im Remote Repository gelandet ist.
alfred@monitoring:~/GetInfo$ curl docker.registry:5000/v2/_catalog
{"repositories":["getinfo","hello-world"]}
alfred@monitoring:~/GetInfo$ curl docker.registry:5000/v2/getinfo/tags/list
{"name":"getinfo","tags":["20211015"]}
alfred@monitoring:~/GetInfo$
Auch in der Longhorn-Anzeige kann man schön sehen, dass dieses Volume nicht mehr leer ist, und jetzt bereits ca. 1GB Platz braucht.
Nun erzeugen wir ein yaml-File.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: getinfo
#namespace: default
spec:
selector:
matchLabels:
app: getinfo
replicas: 1
template:
metadata:
labels:
app: getinfo
annotations:
sidecar.istio.io/inject: "false"
spec:
containers:
- name: getinfo
image: docker.registry:5000/getinfo:20211015
# resource limits
resources:
requests:
memory: "24Mi"
cpu: "500m" # half vcpu
limits:
memory: "64Mi"
cpu: "1000m" # one vcpu
env:
# currently no env vars used for this container
- name: FOO
value: bar
# check for lifetime liveness, restarts if dead
livenessProbe:
exec:
command:
- ls
initialDelaySeconds: 5
periodSeconds: 10
# check for initial readyness
readinessProbe:
exec:
command:
- ls
initialDelaySeconds: 3
periodSeconds: 3
# pod bekommt diesselbe Zeitzone wie der darunterliegende Node
volumeMounts:
- name: tz-local
mountPath: /etc/localtime
volumes:
- name: tz-local
hostPath: # abhängig vom darunterliegenden OS. Das hier ist linux.
path: /etc/localtime
restartPolicy: Always
dnsPolicy: ClusterFirst
---
apiVersion: v1
kind: Service
metadata:
name: getinfo-service
#namespace: default
labels:
app: getinfo
spec:
ports:
# port=available to other containers
- port: 8080
name: hello
# targetPort=exposed from inside container
targetPort: 8080