Start with minikube
minikube version
minikube start
Start with kubectl
kubectl version
kubectl cluster-info
kubectl get nodes
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
kubectl get deployments
New terminal with kube-proxy
kubectl proxy
curl http://localhost:8001/version
#Get pop name
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
#Make request to application running in that pop
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
#Get list existing pods
kubectl get pods
#Get infomation of containers and images inside that pods
kubectl describe pods
New terminal with kube-proxy
kubectl proxy
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
kubectl logs $POP_NAME
kubectl exec $POP_NAME env
kubectl exec -ti $POP_NAME bash
> cat server.js
> curl localhost:8080
> exit
check current service running
kubectl get pods
kubectl get services
Create new service
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
kubectl get services
kubectl describe services/kubernetes-bootcamp
export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT
curl $(minikube ip):$NODE_PORT
kubectl describe deployment
kubectl get pods -l run=kubernetes-bootcamp
kubectl get services -l run=kubernetes-bootcamp
export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME
kubectl label pod $POD_NAME app=v1
kubectl describe pops $POD_NAME
kubectl get pods -l app=v1
$ kubectl delete service -l run=kubernetes-bootcamp
service "kubernetes-bootcamp" deleted
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26m
$ curl $(minikube ip):$NODE_PORT
curl: (7) Failed to connect to 172.17.0.44 port 31815: Connection refused
$ kubectl exec -ti $POD_NAME curl localhost:8080
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5c69669756-mzxx5 | v=1
$ kubectl get deployments
$ kubectl scale deployments/kubernetes-bootcamp --replicas=4
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 4 4 4 4 44s
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5c69669756-2kz6c 1/1 Running 0 2m 172.18.0.4 minikube
kubernetes-bootcamp-5c69669756-cl9wz 1/1 Running 0 2m 172.18.0.5 minikube
kubernetes-bootcamp-5c69669756-ksc7k 1/1 Running 0 2m 172.18.0.3 minikube
kubernetes-bootcamp-5c69669756-zmdx2 1/1 Running 0 2m 172.18.0.2 minikube
$ kubectl describe deployments/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
CreationTimestamp: Sat, 22 Dec 2018 06:51:16 +0000
Labels: run=kubernetes-bootcamp
Annotations: deployment.kubernetes.io/revision=1
Selector: run=kubernetes-bootcamp
Replicas: 4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=kubernetes-bootcamp
Containers:
kubernetes-bootcamp:
Image: gcr.io/google-samples/kubernetes-bootcamp:v1
Port: 8080/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: kubernetes-bootcamp-5c69669756 (4/4 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 7m deployment-controller Scaled up replica set kubernetes-bootcamp-5c69669756 to 1
Normal ScalingReplicaSet 6m deployment-controller Scaled up replica set kubernetes-bootcamp-5c69669756 to 4
$ kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: run=kubernetes-bootcamp
Annotations: <none>
Selector: run=kubernetes-bootcamp
Type: NodePort
IP: 10.104.6.130
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31201/TCP
Endpoints: 172.18.0.2:8080,172.18.0.3:8080,172.18.0.4:8080 + 1 more...
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODE_PORT=31201
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5c69669756-zmdx2 | v=1
$ kubectl scale deployments/kubernetes-bootcamp --replicas=2
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 2 2 2 2 9m
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5c69669756-2kz6c 0/1 Terminating 0 9m 172.18.0.4 minikube
kubernetes-bootcamp-5c69669756-cl9wz 0/1 Terminating 0 9m 172.18.0.5 minikube
kubernetes-bootcamp-5c69669756-ksc7k 1/1 Running 0 9m 172.18.0.3 minikube
kubernetes-bootcamp-5c69669756-zmdx2 1/1 Running 0 9m 172.18.0.2 minikube
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 4 4 4 4 24s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-5c69669756-fcsrx 1/1 Running 0 39s
kubernetes-bootcamp-5c69669756-fgs4w 1/1 Running 0 39s
kubernetes-bootcamp-5c69669756-lkvtg 1/1 Running 0 39s
kubernetes-bootcamp-5c69669756-nn7d6 1/1 Running 0 39s
$ kubectl describe pods
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.extensions/kubernetes-bootcamp image updated
$ kubectl describe pods
$ kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: run=kubernetes-bootcamp
Annotations: <none>
Selector: run=kubernetes-bootcamp
Type: NodePort
IP: 10.99.4.64
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31743/TCP
Endpoints: 172.18.0.10:8080,172.18.0.11:8080,172.18.0.8:8080 + 1 more...
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODE_PORT=31743
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7799cbcb86-cf6nd | v=2
$ kubectl describe pods
$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
deployment.extensions/kubernetes-bootcamp image updated
$ kubectl get deployments
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kubernetes-bootcamp-5f76cd7b94-68p8h 0/1 ErrImagePull 0 1m
kubernetes-bootcamp-5f76cd7b94-pxwcm 0/1 ImagePullBackOff 0 1m
kubernetes-bootcamp-7799cbcb86-hpcgk 1/1 Running 0 9m
kubernetes-bootcamp-7799cbcb86-qglw4 1/1 Running 0 9m
kubernetes-bootcamp-7799cbcb86-z74gl 1/1 Running 0 9m
$ kubectl rollout undo deployments/kubernetes-bootcamp
deployment.extensions/kubernetes-bootcamp
$ kubectl get pods