srieger
4 years ago
1 changed files with 115 additions and 0 deletions
@ -0,0 +1,115 @@ |
|||||
|
# Introduction to kubectl |
||||
|
|
||||
|
## Deployment of the needed description in kubernetes |
||||
|
|
||||
|
These are two approaches to create the description in Kuberentes: |
||||
|
|
||||
|
```bash |
||||
|
# create a namespace |
||||
|
kubectl create namespace web-test |
||||
|
|
||||
|
# Then choose one of the following ways: |
||||
|
# (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: |
||||
|
|
||||
|
```bash |
||||
|
# 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 get -n web-test service |
||||
|
|
||||
|
# show logs of deployed nginx instances |
||||
|
kubectl logs -n web-test deployment/nginx-deployment |
||||
|
``` |
||||
|
|
||||
|
## Scaling up and down |
||||
|
|
||||
|
```bash |
||||
|
# 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 |
||||
|
|
||||
|
*nginx.yml:* |
||||
|
```yml |
||||
|
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 |
||||
|
|
||||
|
*service.yml:* |
||||
|
```yml |
||||
|
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: 30007 |
||||
|
``` |
Write
Preview
Loading…
Cancel
Save
Reference in new issue