Kubernetes dla każdego – sztuka konteneryzacji
kubectl create namespace homework5
utworzenie namespace
kubectl get namespaces
kubectl config set-context --current --namespace=homework5
ustawienie domyślnego namespace
kubectl config view
kubectl 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.1
env: prod
kubectl apply -f my_pod_definition.yaml
aktualizacja poda
kubectl describe pods my-nginx-prod
kubectl port-forward my-nginx-prod 8080:80
otwarcie portu (działa do czasu wyjścia z polecenia)
http://localhost:8080
my_pod_definition.yaml
zamiana:
env: prod
na env: test
name: my-nginx-prod
na name: my-nginx-test
(w metadata)kubectl apply -f my_pod_definition.yaml
stworzenie nowego poda
kubectl get pods
kubectl 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=prod
kubectl get deployment
kubectl delete pods -l=env=prod
kubectl get pods -l=env=prod
kubectl get deployments nginx-deployment -o jsonpath='{.spec.selector.matchLabels}'
deployment zarządza replicaSetem, sprawdzenie label jakiego używa
kubectl get rs
kubectl 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=prod
kubectl scale deployments nginx-deployment --replicas=4
skalowanie
kubectl get rs --selector=env=prod
kubectl get pods -l=env=prod
kubectl scale replicasets nginx-deployment-7984cd655c --replicas=1
kubectl expose deployment nginx-deployment
stworzenie Service
kubectl get svc
kubectl 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-deployment
Name: 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