Our monthly AWS bill is millions of dollars per year. So, we’re always trying to reduce costs.
Here are a few tips – some of these are Kubernetes but mainly AWS:
- reduce size of pods
- get the right node size and type
- get the right instance class
- don’t over-provision storage
- clean up lost resources
Cost Optimization is also one of the five pillars of the Well-Architected Framework from AWS: https://aws.amazon.com/architecture/well-architected/
Billing Dashboard AWS: https://console.aws.amazon.com/billing/home
Business Intelligence software:
You see it everywhere – from Windows dialogs to AWS.
Wizards are supposed to simplify a task by focusing on just a few specific items.
But the problem is that you can end up losing track of the big picture whilst you’re traversing a long wizard.
You can only do this on the Desktop app – not web or mobile.
Hold and drag.
Aim: launch at least 1 satellite from the West Midlands
How: using Rockoon technology
- launch high altitude balloon
- launch rocket
- launch rockoon
- launch rockoon with satellite
- launch rockoon with satellite to LEO
- launch rockoon with satellite to the Moon
Pico tracker: http://www.loratracker.uk/?p=30
BIS West Midlands:
Black Knights Rocket club:
I spun up an EKS cluster and, when I ran:
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
kube-dns-fcd468cb-8fhg2 0/3 Pending 0 1h
More detail needed:
kubectl describe pods -n kube-system
Warning FailedScheduling 2m13s (x345 over 102m) default-scheduler no nodes available to schedule pods
Looking in EC2 Instances, I could see 2 EKS nodes running with the correct AMI IDs.
But Kubernetes can’t see these nodes. E.g.
kubectl get nodes
No resources found.
Note: low level objects like nodes aren’t namespaced – https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#not-all-objects-are-in-a-namespace
TLDR: use Declarative. E.g. Helm charts
- objects are created and managed/modified using the CLI
- all operations are done on live objects
kubectl create ns ghost
kubectl create quota blog –hard=pods=1 -n ghost
kubectl run ghost –image=ghost -n ghost
kubectl expose deployments ghost –port 2368 –type LoadBalancer -n ghost
kubectl create service clusterip foobar --tcp=80:80
To modify any of the objects you can use the kubectl edit command or use any of the convenience wrappers. For example to scale the deployment do:
kubectl scale deployment ghost --replicas 2 -n ghost
Use a YAML file and run something like:
kubectl apply -f <object>.yaml
brew install asciinema
- Record with:
- Save locally at end with:
- Upload with
asciinema upload <file-location>
Increase speed with
I’ve got a delivery from the US.
I wasn’t at home when it arrived. There wasn’t a card but according to the tracking number, it was supposed to be delivered the next day by 6pm.
I stayed in all day. I was pretty sure it wouldn’t arrive.
By 4pm I was sure and called and asked. They said it was on the van.
By 5pm their phone lines stopped answering.
By 6:40pm no parcel and the website said their office hours were 9am to 6pm.
I rang the US International office. They said they’d have to put me through to the UK office. I explained that this would be shut. But they gave me the UK International number anyway.
Which turned out to be wrong. It was an
0845 number and I had to redial with
0345. Finally I got through to reach an answering maching which said they were shut.
And they disconnected.
Why was I so sure it wouldn’t arrive?
‘cos this happened exactly the same last time.