Kubernetes dla każdego – sztuka konteneryzacji
kubectl create namespace homework5 utworzenie namespace
kubectl get namespaceskubectl config set-context --current --namespace=homework5 ustawienie domyślnego namespace
kubectl config viewkubectl run my-nginx-prod --restart=Never --image=nginx:1.7.9 pod z kontenerem nginx
kubectl get pods sprawdzenie czy pod został utworzonykubectl describe pods my-nginx-prod analiza utworzonego podakubectl get pod my-nginx-prod --export -o yaml > my_pod_definition.yaml export definicji poda
image: nginx:1.7.9 na image: nginx:1.9.1env: prodkubectl apply -f my_pod_definition.yaml aktualizacja poda
kubectl describe pods my-nginx-prodkubectl port-forward my-nginx-prod 8080:80 otwarcie portu (działa do czasu wyjścia z polecenia)
http://localhost:8080my_pod_definition.yaml zamiana:
env: prod na env: testname: my-nginx-prod na name: my-nginx-test (w metadata)kubectl apply -f my_pod_definition.yaml stworzenie nowego poda
kubectl get podskubectl logs my-nginx-prod analiza logów nginx (logi utworzone po otwarciu w przeglądarce)kubectl exec -it my-nginx-prod /bin/bash zalogowanie się do kontenera i wykonanie poleceń np. env, lskubectl get pods -l=env=prod wyświetlenie podów z selectorem na labelkubectl apply -f my_deployment_definition.yaml
kubectl get pods -l=env=prodkubectl get deploymentkubectl delete pods -l=env=prod
kubectl get pods -l=env=prodkubectl get deployments nginx-deployment -o jsonpath='{.spec.selector.matchLabels}' deployment zarządza replicaSetem, sprawdzenie label jakiego używa
kubectl get rskubectl get replicasets --selector=env=prod znalezienie obiektu ReplicaSet, którym zarządza deployment (zarządza ReplicaSetem z labelem prod) Deployment » ReplicaSetkubectl get rs --selector=env=prodkubectl scale deployments nginx-deployment --replicas=4 skalowanie
kubectl get rs --selector=env=prodkubectl get pods -l=env=prodkubectl scale replicasets nginx-deployment-7984cd655c --replicas=1
kubectl expose deployment nginx-deployment stworzenie Service
kubectl get svckubectl describe svc nginx-deployment sprawdzenie definicji Servicekubectl get services kube-dns --namespace=kube-system sprawdzenie czy na klastrze działa usługa DNSkubectl run curl --image=radial/busyboxplus:curl -i --tty --rm utworzenie poda>kontenera, z którego można będzie się połączyć z serwisem - uruchomienie trybu interaktywnego
nslookup nginx-deploymentName: nginx-deployment
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: nginx-deployment
Address 1: 10.107.5.118 nginx-deployment.homework5.svc.cluster.local
curl nginx-deployment.homework5.svc.cluster.local otrzymanie kodu HTML strony startowej nginx1> kubectl get pods -w -l app=nginx obserwowanie zmian w podachkubectl apply -f statefulset.yaml
kubectl exec web-0 -- sh -c 'hostname' odczytanie nazwy poda bezpośrednio z poziomu podakubectl exec web-1 -- sh -c 'hostname'kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
nslookup web-0.nginx sprawdzenie nazwy DNS dla dwóch utworzonych kontenerównslookup web-1.nginx
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: web-0.nginx
Address 1: 10.1.0.204 web-0.nginx.homework5.svc.cluster.local
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: web-1.nginx
Address 1: 10.1.0.205 web-1.nginx.homework5.svc.cluster.local
kubectl delete pod -l app=nginx usunięcie podów (zostaną odtworzone)kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
nslookup web-0.nginx sprawdzenie nazwy DNS dla dwóch utworzonych kontenerównslookup web-1.nginx
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: web-0.nginx
Address 1: 10.1.0.207 web-0.nginx.homework5.svc.cluster.local
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: web-1.nginx
Address 1: 10.1.0.208 web-1.nginx.homework5.svc.cluster.local
kubectl delete namespace homework5 usunięcie wszystkich zasobów stworzonych w ramach pracy domowej