2.2 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.2 KiB
		
	
	
	
	
	
	
	
Introduction to kubectl
Deployment of the needed description in kubernetes
These are two approaches to create the description in Kuberentes:
# create a namespace 
kubectl create namespace web-test
# Then choose one way:
# (1) Create the description
kubectl create -f nginx.yml -f service.yml
# (2) Create or update descriptions if existing
kubectl apply -f nginx.yml -f service.yml
To show it is working
Here are some useful commands:
# show nodes
kubectl get nodes
# show pods for our namespace
kubectl get -n web-test pods 
# show deployments for our namespace
kubectl get -n web-test deployment
# show services for our namespace
kubectl show -n web-test service
# show logs of deployed nginx instances
kubectl logs -n web-test deployment/nginx-deployment
Scaling up and down
# scale up instances to 5
kubectl scale deployment/nginx-deployment --replicas=5
# scale down instances again to 3
kubectl scale deployment/nginx-deployment --replicas=3
To see it is working in the browser ;)
The nginx instances are reachable at the floating ips of the node-instances at port 30007 in our case.
Many other things can be done ;)
- Autoscaling
 - Detailled Service functions (LoadBalancer, ...)
 - Dashboard
 - FaaS Setup ;)
 - ...
 
Appendix
Nginx description
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: web-test
spec:
  selector:
    matchLabels:
      app: nginx-deployment
  replicas: 3 # tells deployment to run 3 pods matching the template
  template:
    metadata:
      labels:
        app: nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
Nginx service description
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: web-test
spec:
  type: NodePort
  selector:
    app: nginx-deployment
  ports:
      # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
    - port: 80
      targetPort: 80
      # Optional field
      # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
      nodePort: 3000