From d0ed1c5526ba4cf6cd67626925d37c69bab00d9d Mon Sep 17 00:00:00 2001 From: ghe0 Date: Tue, 1 Apr 2025 04:10:59 +0300 Subject: [PATCH] improved kubernetes example --- kubernetes/README.md | 39 ++++++++++++++++++++++++++++++++++++- kubernetes/create_vms.sh | 20 +++++++++---------- kubernetes/k8s_nginx.yml | 33 +++++++++++++++++++++++++++++++ kubernetes/nginx_service.sh | 19 ++++++++++++++++++ 4 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 kubernetes/k8s_nginx.yml create mode 100755 kubernetes/nginx_service.sh diff --git a/kubernetes/README.md b/kubernetes/README.md index 3c590f7..729cef0 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -8,7 +8,44 @@ To create the VMs, run: ./create_vms.sh ``` -And to deploy: +And to deploy Kubernetes: ``` ./deploy.sh ``` + +After this, you can deploy an nginx service to all nodes: +``` +./nginx_service.sh +``` + +## Succesful output + +Assuming everything went fine, at the end you should see something like this: +``` +daemonset.apps/nginx-daemonset unchanged +service/nginx-service unchanged + +NGINX DEPLOYED! PLEASE FIND DETAILS OF PODS AND SERVICES BELOW: + +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +pod/nginx-daemonset-dr84t 1/1 Running 0 3s 10.42.1.4 k3s-node-4 +pod/nginx-daemonset-lj4tp 1/1 Running 0 3s 10.42.3.5 k3s-node-2 +pod/nginx-daemonset-r4q5n 1/1 Running 0 3s 10.42.4.4 k3s-node-1 +pod/nginx-daemonset-t56dd 1/1 Running 0 3s 10.42.0.9 k3s-master +pod/nginx-daemonset-z5tmn 0/1 Pending 0 3s k3s-node-3 + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR +service/kubernetes ClusterIP 10.43.0.1 443/TCP 2m +service/nginx-service NodePort 10.43.108.125 80:30080/TCP 3s app=nginx + +TO CHECK IF NGINX IS WORKING, USE THE FOLLOWING COMMANDS: + curl http://149.36.48.101:30080 + curl http://149.36.48.104:30080 + curl http://149.36.48.105:30080 + curl http://149.36.48.102:30080 + curl http://149.36.48.103:30080 +``` + +## Tutorial + +A more elaborate tutorial can be found [in the docs](http://docs.detee.ltd/tutorials/kubernetes). diff --git a/kubernetes/create_vms.sh b/kubernetes/create_vms.sh index 84ed687..5e3f6bc 100755 --- a/kubernetes/create_vms.sh +++ b/kubernetes/create_vms.sh @@ -2,32 +2,32 @@ set -e mkdir -p tmp -detee-cli vm deploy --hostname k3s-master --vcpus 4 \ - --memory 4000 --disk 20 --location Random --public-ip | +detee-cli vm deploy --hostname k3s-master --vcpus 2 \ + --memory 3000 --disk 20 --location Random --public-ip | tail -1 > tmp/master_ssh_command && echo "k3s-master successfully created" & sleep 1 -detee-cli vm deploy --hostname k3s-node-1 --vcpus 4 \ - --memory 4000 --disk 20 --location Random --public-ip | +detee-cli vm deploy --hostname k3s-node-1 --vcpus 2 \ + --memory 3000 --disk 20 --location Random --public-ip | tail -1 > tmp/node1_ssh_command && echo "k3s-node-1 successfully created" & sleep 1 -detee-cli vm deploy --hostname k3s-node-2 --vcpus 4 \ - --memory 4000 --disk 20 --location Random --public-ip | +detee-cli vm deploy --hostname k3s-node-2 --vcpus 2 \ + --memory 3000 --disk 20 --location Random --public-ip | tail -1 > tmp/node2_ssh_command && echo "k3s-node-2 successfully created" & sleep 1 -detee-cli vm deploy --hostname k3s-node-3 --vcpus 4 \ - --memory 4000 --disk 20 --location Random --public-ip | +detee-cli vm deploy --hostname k3s-node-3 --vcpus 2 \ + --memory 3000 --disk 20 --location Random --public-ip | tail -1 > tmp/node3_ssh_command && echo "k3s-node-3 successfully created" & sleep 1 -detee-cli vm deploy --hostname k3s-node-4 --vcpus 4 \ - --memory 4000 --disk 20 --location Random --public-ip | +detee-cli vm deploy --hostname k3s-node-4 --vcpus 2 \ + --memory 3000 --disk 20 --location Random --public-ip | tail -1 > tmp/node4_ssh_command && echo "k3s-node-4 successfully created" & diff --git a/kubernetes/k8s_nginx.yml b/kubernetes/k8s_nginx.yml new file mode 100644 index 0000000..2f8be8a --- /dev/null +++ b/kubernetes/k8s_nginx.yml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: nginx-daemonset + labels: + app: nginx +spec: + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:latest + ports: + - containerPort: 80 +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx-service +spec: + type: NodePort + selector: + app: nginx + ports: + - port: 80 + targetPort: 80 + nodePort: 30080 diff --git a/kubernetes/nginx_service.sh b/kubernetes/nginx_service.sh new file mode 100755 index 0000000..263b1b0 --- /dev/null +++ b/kubernetes/nginx_service.sh @@ -0,0 +1,19 @@ +#!/bin/bash +ssh_master=$(cat tmp/master_ssh_command) + +set -e + +cat k8s_nginx.yml | $ssh_master kubectl apply -f - + +echo +echo NGINX DEPLOYED! PLEASE FIND DETAILS OF PODS AND SERVICES BELOW: +echo + +$ssh_master kubectl get pods,svc -o wide + +echo +echo TO CHECK IF NGINX IS WORKING, USE THE FOLLOWING COMMANDS: +grep -r ssh tmp/ | cut -d '@' -f2 | + xargs -i echo " curl http://{}:30080" +echo +