You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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